This question already has answers here:
Closed 4 years ago.
Using MPI_Bcast for MPI communication
(2个答案)
我用MPI_Bcast函数编写了简单的MPI程序,但我不明白为什么我的程序没有完成。
这是密码
(2个答案)
我用MPI_Bcast函数编写了简单的MPI程序,但我不明白为什么我的程序没有完成。
这是密码
#include "mpi.h"
int main(int argc, char* argv[]) {
int ProcNum, ProcRank, RecvRank;
MPI_Status Status;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &ProcNum);
MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank);
RecvRank = ProcRank;
MPI_Bcast(&RecvRank, 1, MPI_INT, 0, MPI_COMM_WORLD);
MPI_Recv(&RecvRank, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
MPI_Finalize();
return 0;
}
最佳答案
你的代码有死锁。在MPI_Bcast
之后,您有一个不匹配的MPI_Recv
,这会导致代码挂起。从你提问的方式来看,我认为你需要一个MPI_Send
来接收通过MPI_Recv
发送的信息,但这是不正确的。MPI_Bcast
命令本身(后面没有MPI_Bcast
命令)将实现您想要的。
关于c++ - 无法理解MPI_Bcast ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29735893/
10-11 02:32