MPI集体沟通

时间:2012-02-28 12:05:14

标签: c mpi

我为C使用MPI库,我想知道是否可以通过不同的进程从代码的不同部分调用MPI集合通信方法?

伪示例:

MPI_Rank(&rank,MPI_COMM_WORLD);

switch(rank) {
 case 0:
     MPI_Bcast(buf1,count, type, 0, comm);
     break;
 case 1:
     MPI_Bcast(buf1,count, type, 0, comm);
     break;
 case 2:
     MPI_Bcast(buf1,count, type, 0, comm);
     break;
}

或者必须从每个进程的同一行代码调用它?

     MPI_Bcast(buf1,count, type, 0, comm);

对不起琐碎的问题,但我用Google搜索并找不到答案。

谢谢!

1 个答案:

答案 0 :(得分:3)

可以从代码的不同部分调用它,但是您必须确保通信器中的所有进程实际调用MPI_Bcast以避免死锁。如果所有进程都遵循不同的执行路径,则可能稍微难以确保。