C语言 如何使用MPI进行接力棒传递同步?



执行接力棒传递同步-接力棒是布尔值或整数值,初始化为1,在排名为0时初始化为0,在其他进程中初始化为0然后修改循环如下:每个进程(除了0)等待接收接棒,然后打印并发送接棒到rank+1(除了process size-1)。代码现在看起来像:receive(baton from rank-1): if (baton) print;将接力棒送到+1等级;接力棒= 0;我们还需要循环来做这个吗?

#include <stdio.h>
#include "mpi.h"
int main( int argc, char *argv[] )
{
int rank;
int size;
int i=0;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
for(i=0; i<size; i++)
{
if(i==rank)
{
printf( "Hello world from process %d of %dn", rank, size );
}
}
MPI_Finalize();
return 0;
}

我一直有很多麻烦知道如何开始编码的指挥棒传递同步。现在,当我执行上面的代码时,它没有按顺序执行,这就是我试图通过接力棒传递同步来实现的。

您已经回答了自己的问题:每个进程执行一个接收调用,然后执行一个发送调用。就是这样。循环消失,因为每次迭代都由不同的进程完成。

最新更新