【发布时间】:2013-08-15 13:26:39
【问题描述】:
我正在编写一个使用 OpenMPI 的 C++ 程序。它以“轮次”执行,在每一轮中,进程 0 向其他进程发送数据块,它们对其进行处理并将结果发送回,当没有更多块要发送时,进程 0 发送“完成”消息给对方进程。 “完成”消息只是带有标签 3 的单整数消息。我的第一轮执行得很好。但是,当我进入第二轮时,在进程 0 有机会发送任何内容(更不用说完成消息)之前,进程 1-p“探测”并“接收”完成消息。
我现在已经检查了很多次我的代码,似乎这条消息的唯一来源是进程 0 在上一轮发送它的地方——但每个进程都已经收到了。我宁愿不发布我的代码,因为它非常大,但是有谁知道 MPI 消息是否可以像这样接收两次?
【问题讨论】: