Kill an mpi process

狂风中的少年 提交于 2021-01-27 14:51:37

问题


I would like to know if there is a way that an MPI process send a kill signal to another MPI process?

Or differently, is there a way to exit from an MPI environment graciously, when one of the process is still active? (i.e. mpi_abort() prints an error message).

Thanks


回答1:


No, this is not possible within an MPI application using the MPI library.

Individual processes would not be aware of the location of the other processes, nor of the process IDs of the other processes - and there is nothing in the MPI spec to make the kill you are wanting.

If you were to do this manually, then you'd need to MPI_Alltoall to exchange process IDs and hostnames across the system, and then you would need to spawn ssh/rsh to visit the required node when you wanted to kill something. All in all, it's not portable, not clean.

MPI_Abort is the right way to do what you are trying to achieve. From the Open MPI manual:

"This routine makes a "best attempt" to abort all tasks in the group of comm." (ie. MPI_Abort(MPI_COMM_WORLD, -1) is what you need.

Any output during MPI_Abort would be machine specific - so you may, or may not, receive the error message you mention.



来源:https://stackoverflow.com/questions/5525692/kill-an-mpi-process

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!