2012-12-30 167 views
3

只要學習在由超過100個節點組成的超級計算機上編程,每個節點都由4個Xeon CPU和64GB RAM組成。MPI和集羣

我想要做的是將作業分配給每個節點,然後在每個節點上創建本地多線程程序,但我想知道的是,默認情況下,當MPI創建一組進程時, 1在每個任務進程和一個特定的本地節點之間的映射嗎?(在我的情況下,它是一個由4個Xeon CPU組成的總共24個核心和64GB RAM的節點)。

+0

你問如果一個進程將浮動節點之間? – Richard

+0

是的,我只希望特定的MPI進程可以在整個生命週期內堅持一個特定節點,但我不確定。 – user0002128

+0

我不知道任何能夠跨節點遷移實時進程的廣泛使用的MPI實現。進程遷移違背了MPI-3.0規範,允許創建包含可能附加到共享內存塊的級別的子通信器(即它們在相同的共享內存系統上運行)。 –

回答

1

MPI將運行在N個節點M個處理,其中M可以大於N.小於,等於,或大於

This site描述的設置。

我找不到直接回答你的問題,但網上有很多網站討論process migrationcheckpointing。但這些網站的總體主題似乎是,這仍然是一個正在進行的工作。因此,我不希望這會在你的MPI實現中自動發生。

This site討論MPI_GET_PROCESSOR_NAME命令,該命令可在過程遷移中使用,但指出「沒有在MPI需要或限定進程遷移; MPI_GET_PROCESSOR_NAME的這種定義只是允許這樣的實現」。使用此命令,您至少可以檢查您的代碼是否正在主動遷移。

+0

非常感謝,所以我想MPI的工作方式就像操作系統處理線程的方式一樣,它可以在運行時爲任何特定節點分配進程,無論出於何種原因它都適合。但是最後一件事情是,我認爲MPI進程可以佔用的最小計算單元是一個節點,這意味着,在任何給定的時間,不會有兩個MPI進程佔用單個分支節點(通過一個節點可能包含很多CPU)我對嗎? – user0002128

+0

從我鏈接到的第一個站點,我會解釋它可能在單個物理節點上運行多個進程。我所使用的所有超級計算機都有作業提交腳本,它們將「每個節點的進程」參數作爲輸入。另一種方法是每個節點有一個進程,但多個線程;但是,我認爲它不適用於後一種方式。 – Richard