我需要向工人广播数据。 但是,即使我使用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
答案 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()
。