2015-02-06 77 views
1

我正在評估容錯應用程序的不同多處理庫。我基本上需要任何進程被允許在不停止整個應用程序的情況下崩潰。如果MPI進程崩潰會發生什麼?

我可以使用fork()系統調用。這裏的限制是只能在同一臺機器上創建進程。

我可以用MPI做同樣的事嗎?如果使用MPI創建的進程崩潰,父進程是否可以繼續運行並最終創建新進程?

有沒有其他的選擇(可能是多平臺和開源)庫來獲得相同的結果?


據報道here,MPI 4.0將支持容錯。

+1

使用您最喜愛的*容錯MPI *搜索引擎,瞭解當前該領域的研究狀況。就目前而言,據我所知,可以保留的高級MPI實現在進程崩潰時運行。 – 2015-02-06 16:54:15

+2

大多數MPI實現都會注意到一個進程已經死亡並將終止整個MPI工作。容錯並沒有讓它進入MPI-3,所以許多實施者選擇推遲將FT構建到他們的庫中(反之亦然)。 – 2015-02-06 17:40:08

回答

2

如果你想集體,你將不得不等待MPI-3.something(如高性能馬克和斯托伊奇Illev建議)

如果你可以用點至點的生活,你是一個有耐心的人願意養了一堆錯誤報告對你的MPI實現,你可以嘗試以下方法:

  • 禁用默認的MPI錯誤處理程序
  • 小心地從你的MPI程序
  • 檢查每一個返回代碼
  • 保持跟蹤在您的應用程序中,哪些級別已升級,哪些級別降低。哦,當他們下去時,他們永遠不會回來。但無論如何你都無法使用集體(見我的開場白),所以這不是一個大問題,對吧?

這是一張舊紙(回來的時候比爾還在阿貢工作,我想是從2003年開始): http://www.mcs.anl.gov/~lusk/papers/fault-tolerance.pdf。它列出了MPI中可以執行的各種容錯功能。也許這種「受限制的MPI」仍然可以滿足您的需求。

2

如果您願意尋求研究質量,那麼MPI未來版本(MPI-4?)的潛在容錯章節有兩個實現。該提案稱爲用戶級別故障緩解。 MPICH 3.2a2有一個實驗版本,Open MPI的分支也提供接口。兩者都遠離生產質量,但歡迎您嘗試一下。只要知道,因爲這不在MPI標準中,函數前綴不是MPI_*。對於MPICH,他們MPIX_*,爲開放MPI分支,他們OMPI_*(雖然我相信他們會改變他們的是MPIX_*一聲不好。

正如羅布萊瑟姆提到,將有大量的工作你需要在應用程序中處理失敗,儘管你不一定要檢查所有的返回代碼,你可以/應該使用MPI錯誤處理程序作爲回調函數來簡化事情。規格可與Open MPI branch一起使用

相關問題