我尝试使用MPI_Bcast从根节点向所有其他节点广播一条消息。然而,每当我运行这个程序时,它总是在开始时挂起。有人知道它出了什么问题吗?
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
int rank;
int buf;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == 0) {
buf = 777;
MPI_Bcast(&buf, 1, MPI_INT, 0, MPI_COMM_WORLD);
}
else {
MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
printf("rank %d receiving received %d\n", rank, buf);
}
MPI_Finalize();
return 0;
}
发布于 2016-08-19 23:34:47
MPI_Bcast
是一个集合操作,它必须被所有进程调用才能完成。
并且在使用MPI_Bcast
时不需要调用MPI_Recv
。有一篇文章可能会对你有所帮助,click here
https://stackoverflow.com/questions/7864075
复制相似问题