C++ Can';我不懂MPI\u Bcast

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);

我使用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\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
)将实现您想要的功能。

感谢您的解释!谢谢你的解释!