2016-11-04 115 views
1

我有我的第一次使用R和羣集的經驗。在Google上搜索時,我發現了包「doMPI」。這個包允許我自動化創建進程。但是,我對功能有點混淆。doMPI和羣集

1 - startMPIcluster和registerDOMPI有什麼區別?

2 - 在startMPIcluster上傳遞的爭論是什麼?

3 - 當我使用命令「mpirun -H n1,n2,n3 -n 1 R -slave -f sincMPI.R」時,它是什麼意思是「-n 1」?

4 - 最後,假設我有4個簇,每個簇有60個CPUS。我的代碼將如何?

+1

如果你以前從未與集羣合作過,MPI可能有點壓倒性。考慮使用並行包(它隨附R)。它不如MPI高效,但使用起來要簡單得多。 –

+1

@HongOoi parallel在單個節點上很容易使用,但如果要在羣集上使用多個節點,特別是在批處理排隊系統的情況下,並不容易。在這種情況下,MPI是並行運行的標準方式。在單個節點上開始更容易,但羣集的真正好處是使用多個節點。 –

回答

2

你看過doMPI vignette嗎?我試圖回答所有這些問題。我還建議你下載doMPI源代碼發佈,並查看它包含的示例腳本。

至於您的問題:

  1. startMPIcluster用於創建表示一組的用於並行計算處理的羣集對象; registerDoMPI用於使用foreach註冊一個簇對象,因此它將用於執行並行的foreach循環。這兩個功能都必須使用。

  2. 如果用-n 1選項通過的mpirun執行你的[R腳本的mpirun纔會開始一個進程來執行你的[R腳本(我稱之爲主進程),以及第一個參數startMPIcluster指定工人的數量主控人員應該開始執行由foreach循環生成的任務。如果您使用mpirun啓動多個進程,則根本不需要指定count值。我建議使用mpirun啓動所有工作者(在您的示例中使用-n 3),並且不指定count值的值。

  3. mpirun -n選項指定它應該啓動的工人/進程的數量。如果你想產生工人,你應該使用-n 1,以便mpirun只啓動主人,並使用參數startMPIclustercount來控制產卵的工人數量。

我真的不明白你的最後一個問題,但我認爲小插曲和例子應該有助於你更好地理解所有這些概念。