我为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搜索并找不到答案。
谢谢!
答案 0 :(得分:3)
可以从代码的不同部分调用它,但是您必须确保通信器中的所有进程实际调用MPI_Bcast
以避免死锁。如果所有进程都遵循不同的执行路径,则可能稍微难以确保。