我想知道MPI进程是否有办法向另一个MPI进程发送一个终止信号?
或者不同的是,当其中一个进程仍处于活动状态时,有没有办法优雅地退出MPI环境? (即mpi_abort()输出错误信息)。
由于
答案 0 :(得分:1)
不,这在使用MPI库的MPI应用程序中是不可能的。
单个进程不会知道其他进程的位置,也不知道其他进程的进程ID - 并且MPI规范中没有任何内容可以实现您想要的kill。
如果您要手动执行此操作,那么您需要MPI_Alltoall在整个系统中交换进程ID和主机名,然后您需要生成ssh / rsh以在需要杀死某些内容时访问所需的节点。总而言之,它不便携,不干净。
MPI_Abort是您尝试实现目标的正确方法。从Open MPI手册:
“这个例程是”最好的尝试“,可以中止通讯组中的所有任务。” (即MPI_Abort(MPI_COMM_WORLD,-1)就是您所需要的。
MPI_Abort期间的任何输出都是特定于机器的 - 因此您可能会或可能不会收到您提及的错误消息。