我正在評估容錯應用程序的不同多處理庫。我基本上需要任何進程被允許在不停止整個應用程序的情況下崩潰。如果MPI進程崩潰會發生什麼?
我可以使用fork()系統調用。這裏的限制是只能在同一臺機器上創建進程。
我可以用MPI做同樣的事嗎?如果使用MPI創建的進程崩潰,父進程是否可以繼續運行並最終創建新進程?
有沒有其他的選擇(可能是多平臺和開源)庫來獲得相同的結果?
據報道here,MPI 4.0將支持容錯。
我正在評估容錯應用程序的不同多處理庫。我基本上需要任何進程被允許在不停止整個應用程序的情況下崩潰。如果MPI進程崩潰會發生什麼?
我可以使用fork()系統調用。這裏的限制是只能在同一臺機器上創建進程。
我可以用MPI做同樣的事嗎?如果使用MPI創建的進程崩潰,父進程是否可以繼續運行並最終創建新進程?
有沒有其他的選擇(可能是多平臺和開源)庫來獲得相同的結果?
據報道here,MPI 4.0將支持容錯。
如果你想集體,你將不得不等待MPI-3.something(如高性能馬克和斯托伊奇Illev建議)
如果你可以用點至點的生活,你是一個有耐心的人願意養了一堆錯誤報告對你的MPI實現,你可以嘗試以下方法:
這是一張舊紙(回來的時候比爾還在阿貢工作,我想是從2003年開始): http://www.mcs.anl.gov/~lusk/papers/fault-tolerance.pdf。它列出了MPI中可以執行的各種容錯功能。也許這種「受限制的MPI」仍然可以滿足您的需求。
如果您願意尋求研究質量,那麼MPI未來版本(MPI-4?)的潛在容錯章節有兩個實現。該提案稱爲用戶級別故障緩解。 MPICH 3.2a2有一個實驗版本,Open MPI的分支也提供接口。兩者都遠離生產質量,但歡迎您嘗試一下。只要知道,因爲這不在MPI標準中,函數前綴不是MPI_*
。對於MPICH,他們MPIX_*
,爲開放MPI分支,他們OMPI_*
(雖然我相信他們會改變他們的是MPIX_*
一聲不好。
正如羅布萊瑟姆提到,將有大量的工作你需要在應用程序中處理失敗,儘管你不一定要檢查所有的返回代碼,你可以/應該使用MPI錯誤處理程序作爲回調函數來簡化事情。規格可與Open MPI branch一起使用
使用您最喜愛的*容錯MPI *搜索引擎,瞭解當前該領域的研究狀況。就目前而言,據我所知,可以保留的高級MPI實現在進程崩潰時運行。 – 2015-02-06 16:54:15
大多數MPI實現都會注意到一個進程已經死亡並將終止整個MPI工作。容錯並沒有讓它進入MPI-3,所以許多實施者選擇推遲將FT構建到他們的庫中(反之亦然)。 – 2015-02-06 17:40:08