2011-04-02 192 views
2

我想知道是否有一种方式MPI进程发送杀死信号到另一个MPI进程?杀死一个mpi进程

或者不同的是,有一种方法可以在MPI环境中一个进程仍处于活动状态时退出? (即mpi_abort()打印错误消息)。

感谢

+0

在这里看到:。HTTP ://stackoverflow.com/questions/5433697/terminating-all-processes-with-mpi/5434937#5434937。 – suszterpatt 2011-04-02 20:43:18

回答

1

没有,这是不可能的使用MPI库MPI应用程序中。

单个进程不会意识到其他进程的位置,也不知道其他进程的进程ID - 并且MPI规范中没有任何内容可以使您想要的杀手。

如果您手动执行此操作,那么您需要MPI_Alltoall在整个系统中交换进程ID和主机名,然后当您想要杀死某些东西时需要产生ssh/rsh来访问所需的节点。总而言之,它不便携,不干净。

MPI_Abort是您尝试实现的正确方法。从Open MPI手册:

“此例程使”中止通讯组中所有任务的最佳尝试“成为”最佳尝试“。 (即MPI_Abort(MPI_COMM_WORLD,-1)是你所需要的

MPI_Abort期间的任何输出将特定的机器 - 所以你可能会,也可能不会,接受你所提到的错误消息