2017-02-09 34 views
1

我想知道是否有必要在所有進程都有需要的數據時,例如,MPI_Comm_spawn被調用。調用MPI_Comm_spawn時,所有進程是否需要所有數據?

當調用這個函數時,根進程被定義爲驅動操作,顯然,這個等級必須給該函數提供適當的參數。即:

MPI_Comm_spawn("./a.out", &argvs, maxprocs, info, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); 

如果我們知道等級0爲根,做其他的進程需要設置的變量:argvs,和的MaxProcs信息?或者是否有足夠的信息在的等級0

回答

3

否,這似乎從文檔清楚:
MPI_Comm_spawn
其中

的argv:參數命令(字符串數組,僅在顯著)
的MaxProcs:啓動進程的最大數量(整數,有效 只在
信息: 一組告訴運行時系統在哪裏以及如何啓動鍵值對的過程(處理,只在

所以顯著根據我對文檔的理解,「其他」過程不需要設置上述過程。
只要記住這是一個集體電話。

3

儘管MPI_Comm_spawn的前四個參數只對指定的根進程有效,通信器中的所有進程都必須進行調用。因此,他們通過由MPI_Comm_spawn返回的互通器獲得與兒童工作溝通的能力。如果你並不需要在初始工作各級能夠與孩子的工作溝通,但只有根級別,你可以使用MPI_COMM_SELF,而不是MPI_COMM_WORLD

int rank; 

MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
if (rank == 0) { 
    MPI_Comm_spawn("./a.out", args, maxprocs, info, 0, MPI_COMM_SELF, 
        &intercomm, MPI_ERRCODES_IGNORE); 
} 
相關問題