2010-10-28 30 views
6

我在寫一個使用Open MPI的並行程序。我使用的是Snow Leopard 10.6.4,我通過homebrew軟件包管理器安裝了Open MPI。爲什麼我的所有MPI流程都排在第0位?

當我使用mpirun -np 8 ./test運行我的程序時,每個進程都報告它的排名爲0,並且認爲進程總數爲1,並且有8行process rank: 0, total processes: 1被吐出到控制檯。

我知道這不是一個代碼問題,因爲完全相同的代碼可以編譯和運行在我的大學的計算機實驗室的一些Ubuntu機器如預期。我已經檢查了自制軟件的bug跟蹤器,沒有人報告Open MPI軟件包存在問題。我很茫然。

+0

如果您自己從源代碼構建或使用OS X(Snow Leopard)提供的open-mpi,會發生這種情況嗎? – 2010-10-29 03:00:41

+0

卸載自制軟件的開放式mpi會導致OS X提供的開放式mpi發揮作用。嗯。 – aperiodic 2010-11-16 03:04:24

+4

這幾乎總是用一個MPI分發和(意外或其他)運行它與另一個MPIRUN編譯的結果。確保你的所有路徑和動態庫搜索路徑只有一個分佈。 – 2011-02-16 22:34:39

回答

4

檢查您正在調用哪個mpirun。正在執行的mpirun將啓動8個獨立的二進制實例。因此,每個實例都是MPI應用程序,其Universe大小爲1且排名爲0.

此外,除非您計劃在OS X盒集羣上運行最終代碼,否則我強烈建議在VM中安裝Linux版本,像virtualbox,來測試&開發這些代碼。

1

我在Linux上的C上有與openMPI相同的問題。在使用代替MPICH2,問題得到了解決(但記得要在結束時運行MPI_Finalize()或會很奇怪。)

4

卸載以前的MPI實現完全。

在我來說,我安裝了MPICH2,然後再卸載它,並改變的openmpi。然後發生同樣的情況,所有進程的等級爲0.我所做的解決此問題的方法是:從我的系統(我使用Ubuntu/Debian Linux)完全卸載MPICH2。

# apt-get remove mpich2 
# apt-get autoremove 
1

今天我遇到了和你一樣的問題。最後我得到了解決方案。

https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_All_my_processes_get_rank_0

簡單地說,答案說,MPI需要合適的PMI來講述他們的隊伍和其他東西的過程。因此,我們需要使用相應的mpirun/mpiexec來運行MPI程序。

我想,你的問題是關係到MPI程序編譯器和工具的mpirun之間的不匹配。因此,嘗試卸載所有,然後安裝MPICH/openMPI(確保只安裝其中一個)。

相關問題