mpi - 杀死MPI进程

标签 mpi parallel-processing

我想知道一个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/

相关文章:

python - 在 boost.python 中包装 MPI

c++ - 无法编译返回 MPI::Comm 类型对象的函数

c - OpenMP 中 private() 子句中变量的最大数量

c# - 我如何在 Emgu CV 项目中利用 OpenCL

c# - Parallel.ForEach 错误 : The query processor could not start the necessary thread resources for parallel query execution

MPI_Send/Recv 与 MPI_Reduce

c - 信号: Segmentation fault (11)

python - boost mpi python : undefined symbol: _ZN5boost3mpi5timer14time_is_globalEv

language-agnostic - 并发和并行有什么区别?

python - 在 ParallelPython 中,对象的方法 ( object.func() ) 无法操作对象的变量 ( object.value )