您可以按如下方式执行此操作:
声明一个主节点(0),用于分配任务。在该节点中,伪代码是:
int sendTo
for task in tasks:
MPI_Recv(...sendTo, MPI_INT, MPI_ANY_SOURCE,...)
MPI_Send(job,... receiver: sendTo)
for node in nodes:
MPI_Recv(...sendTo, MPI_INT, MPI_ANY_SOURCE,...)
MPI_SEND(job_null,...,receiver: sendTo)
Run Code Online (Sandbox Code Playgroud)
在从节点中,代码为:
while (true)
MPI_Send(myNodenum to 0, MPI_INT)
MPI_Recv(job from 0)
if (job == job_null)
break
else
execute job
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效。