【问题标题】:Can't understand MPI_Bcast [duplicate]无法理解 MPI_Bcast [重复]
【发布时间】:2015-06-26 11:17:42
【问题描述】:

我使用 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;
}

【问题讨论】:

    标签: c++ c mpi mpich


    【解决方案1】:

    您的代码出现了死锁。在您的MPI_Bcast 之后,您有一个MPI_Recv 没有匹配的MPI_Send,这会导致您的代码挂起。我假设从您提出问题的方式来看,您认为您需要MPI_Recv 才能接收通过MPI_Bcast 发送的信息,但这是不正确的。 MPI_Bcast 命令本身(之后没有 MPI_Recv)将实现您想要的。

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 2017-11-23
      • 2022-01-04
      • 2023-03-03
      • 2013-01-20
      • 2014-01-21
      • 2013-03-11
      • 2021-06-09
      • 2013-12-12
      相关资源
      最近更新 更多