MPI_Ibcast + MPI_Test无法接收数据

时间:2017-07-19 10:07:28

标签: c mpi

我需要向工人广播数据。 但是,即使我使用MPI_Wait而不是MPI_Test,我也无法接收它,除非我使用阻止MPI_Bcast。

我不知道发生了什么,我尝试过很多方法,但都没有。

我的代码有什么问题吗?

MPI start 0/5
MPI start 1/5
MPI start 2/5
MPI start 3/5
MPI start 4/5
MPI 0/5 bcast

它会挂起来:

project.projectDir

2 个答案:

答案 0 :(得分:3)

吉尔斯是绝对正确的,MPI明确指出

  

与点对点操作不同,非阻塞集体操作与阻止集体操作不匹配 [...]

虽然有一个非常简单的解决方法,只需将您的MPI_Bcast替换为:

MPI_Request req;
MPI_Status status;
MPI_Ibcast(&data, 1, MPI_INT, 0, MPI_COMM_WORLD, &req);
MPI_Wait(&req, &status);

答案 1 :(得分:2)

我担心你不能简单地在等级0上混合MPI_Bcast()而在其他等级上混用MPI_Ibcast()