gpt4 book ai didi

mpi - 当远程机器死机时,MPI 管理器无法通过 MPI_Irecv 调用检测到它

转载 作者:行者123 更新时间:2023-12-01 06:29:55 25 4
gpt4 key购买 nike

我正在编写一个程序来检测远程机器的突然崩溃。 manager 进程在机器 1 上运行,worker 进程在机器 2 上运行。 manager 服务器通过调用 MPI_Isend 向工作进程发送消息。 .远程 worker 通过调用 MPI_Irecv 获取消息.每次通话后,我总是检查他们的返回码,看看 MPI_COMM_WORLD 是否有问题。 .我还检查了 MPI_Test 的返回码在 send 和 recv 调用之后运行。

不知何故,即使在我突然重新启动机器 2 之后,返回码也始终为 0。我可以看到 MPI_Isend总是返回值 0。请给我一些关于如何检测远程机器故障的建议。

顺便说一句,我确实使用了以下语句:

MPI_Errhandler_set(MPI_COMM_WORLD,MPI_ERRORS_RETURN);

最佳答案

可能早就应该把它变成一个答案,以便其他人更容易追踪到这一点。

正如其他帖子中所讨论的,MPI_Send而 friend 的完成并不一定表示对方已经收到消息。只有 MPI_Ssend意味着任何类型的完成,甚至仅表示接收方已开始将消息接收到其缓冲区中。

对于这个特殊问题,MPI_Ssend可能就足够了,因为它表明发生了故障,尽管它会减慢速度。

最后,您不能依靠发送方的语义来告诉您发生了故障,而无需在 MPI 中做额外的工作。标准中没有内置的保证来这样做,因为它们会很昂贵。如果您必须快速了解发送方,请使用 MPI_Ssend .否则,先做一堆操作,然后再做一些同步(比如 MPI_SsendMPI_Barrier,如果你想一次验证所有进程)。

关于mpi - 当远程机器死机时,MPI 管理器无法通过 MPI_Irecv 调用检测到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com