我想知道一个MPI进程是否可以向另一个MPI进程发送终止信号?
或换一种说法,当其中一个过程仍处于 Activity 状态时,是否有办法从MPI环境中退出呢? (即mpi_abort()打印一条错误消息)。
谢谢
最佳答案
不可以,在使用MPI库的MPI应用程序中这是不可能的。
各个进程不会知道其他进程的位置,也不会知道其他进程的进程ID-并且MPI规范中没有任何内容可以使您丧命。
如果要手动执行此操作,则需要MPI_Alltoall在整个系统上交换进程ID和主机名,然后在想要杀死某些对象时需要生成ssh / rsh来访问所需的节点。总而言之,它不是便携式的,也不是干净的。
MPI_Abort是完成您要实现的目标的正确方法。从Open MPI手册中:
“此例程进行了“最佳尝试”,以中止通信组中的所有任务。” (即MPI_Abort(MPI_COMM_WORLD,-1)是您所需要的。
MPI_Abort期间的任何输出都是特定于计算机的-因此,您可能会或可能不会收到您提到的错误消息。
关于mpi - 杀死MPI进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525692/