2011-04-02 263 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期間的任何輸出將特定的機器 - 所以你可能會,也可能不會,接受你所提到的錯誤消息