C++ Can';我不懂MPI\u Bcast
我使用MPI_Bcast函数编写了简单的MPI程序,但我不明白为什么我的程序没有完成 以下是代码C++ Can';我不懂MPI\u Bcast,c++,c,mpi,mpich,C++,C,Mpi,Mpich,我使用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);
#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\u Bcast
之后,您的MPI\u Recv
没有匹配的MPI\u Send
,这会导致代码挂起。根据您提问的方式,我假设您认为需要一个MPI\u Recv
来接收通过MPI\u Bcast
发送的信息,但这是不正确的。MPI\u Bcast
命令本身(之后没有MPI\u Recv
)将实现您想要的功能。您的代码出现死锁。在您的MPI\u Bcast
之后,您的MPI\u Recv
没有匹配的MPI\u Send
,这会导致代码挂起。我假设从您提出问题的方式来看,您认为您需要使用MPI\u Recv
来接收通过MPI\u Bcast
发送的信息,但这是不正确的。MPI\u Bcast
命令本身(之后没有MPI\u Recv
)将实现您想要的功能。感谢您的解释!谢谢你的解释!