2011-11-27 66 views

回答

5

最正確編寫的MPI程序不應該依賴於他們用它來獲得一個正確的答案進程的數量 - 例如,如果你在一個進程(的mpirun -np 1 ./a.out)運行它們仍應工作。所以你不需要一個存根庫 - 只需要使用MPI。 (如果由於某種原因,你只是不想外來庫踢左右,它肯定可能寫存根和鏈接對他們 - 我這樣做是在當天回設置MPI我的筆記本電腦是一個巨大的PITA時,你可以使用this爲出發點,並添加你需要的任何功能。但這些天來,與存根庫擺弄可能會比只使用現有的MPI實現更多的工作。)

如果你的MPI程序沒有當前在一個處理器上正常工作,存根庫可能不會幫助;你需要找到它沒有處理和修復它們的特殊情況。

+1

的關鍵詞是「最」 ......這當然是可以設計依賴於具有多個行列正確的MPI程序 - 希望這是「設計」,而不是編程的「意外」。或許0級工作並收集結果,但本身並沒有實際的工作 - 在這種情況下,人們希望守則中的守衛能夠以低於最低要求的等級來防止運行。我同意用存根替換MPI將是一個巨大的PITA。 –

3

我不認爲這是可能的。與OpenMP相反,使用MPI的程序不一定會運行或產生相同的結果,而只是簡單地取走MPI部分。

+0

無論如何,存根很少產生與完全實現相同的結果,我不認爲這是問題所在。 –

+0

我理解這個問題的方式,OP想要一個順序的,完全運行的程序。 – mort

0

的PETSc包含存根MPI庫,爲一個過程(即串行)的執行工作。我沒有方便的鏈接,但如果谷歌首先找不到它,它會在稍後查看它。