为什么这段MPI代码不会出现死锁?
结果如下:
int main(int argc, char *argv[])
{
int rank,size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if(2!=size) MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
int buf1, buf2;
buf1 = 1;
buf2 = 1;
if (0==rank) {
MPI_Bcast(&buf1,1,MPI_INT,0,MPI_COMM_WORLD);
MPI_Bcast(&buf2,1,MPI_INT,1,MPI_COMM_WORLD);
printf("proc 0 done\n");
}
if (1==rank) {
MPI_Bcast(&buf2,1,MPI_INT,1,MPI_COMM_WORLD);
MPI_Bcast(&buf1,1,MPI_INT,0,MPI_COMM_WORLD);
printf("proc 1 done\n");
}
MPI_Finalize();
}
结果如下:
结果为:
进程0已完成。
进程1已完成。