MPI是内置函数来解决这样的问题。它们被称为 的 集体行动 强> 。特别是,要将您的任务列表中的元素分配给不同的进程,您可以使用 MPI_Scatter 。从每个过程收集一个元素的相反操作通过以下方式实现 MPI_gather 。
你可以替换你的 masterSend 和 slaceRecv 只需一行代码即可实现:
masterSend
slaceRecv
MPI_Scatter(tasklist, this->world_size, MPI_INT, ¤t, 1, MPI_INT, 0, MPI_COMM_WORLD);
类似地,您可以替换您的功能 slaveSend 和 masterRecv 使用一行代码 MPI_Gather 。
slaveSend
masterRecv
MPI_Gather