MPI_Comm_create函式
擷取一組進程,以便個別的多個指令多重資料 (MIMD) 個別通訊器計算。
語法
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
參數
通訊
來源通訊器。群組
定義來源通訊器中進程要求子集的群組。newcomm [out]
傳回時,包含新通訊器的控制碼。
傳回值
傳回成功 時MPI_SUCCESS 。 否則,傳回值是錯誤碼。
在 Fortran 中,傳回值會儲存在 IERROR 參數中。
Fortran
MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
備註
此函式所建立的 communicator 可以使用 MPI_Comm_create 函式或其他 communicator 建構函式,進一步細分為平行子計算。 MPI_Comm_split函式是建立MPI_Comm物件的較一般函式。
如果 comm 參數參考內部通訊器,此函式會傳回具有 群組 參數所定義之通訊群組的新通訊器。 沒有快取的資訊會從來源通訊器傳播到新的通訊器。 每個進程都必須使用 群組 參數呼叫,這個參數是與來源通訊器相關聯的群組子群組。 可能的值為 MPI_GROUP_EMPTY。 進程可以指定 群組 參數的不同值。 如果進程使用非空白群組呼叫,則該群組中的所有進程都必須呼叫具有 群組參數相同 值的函式,也就是相同順序的相同成員。 否則,函式會傳回錯誤。 此結果表示跨進程指定的群組集合必須脫離。 如果呼叫進程是群組參數中指定的 群組 成員, 則 newcomm 參數代表具有指定群組的通訊器做為其相關聯群組。 如果進程指定不屬於它的群組,例如 ,MPI_GROUP_EMPTY, 則 newcomm 參數會傳回 MPI_COMM_Null。
介面支援來自 MPI-1.1 的原始機制,在 comm 的所有進程中都需要相同的群組。它已在 MPI-2.2 中擴充,讓使用脫離的子群組來啟用實作,以消除使用者知道中斷子群組成員資格時, MPI_Comm_split 函式會產生不必要的通訊。
MPI_Comm_create函式是統 一 的,而且必須由來源通訊器群組中的所有進程呼叫。 整個群組參與通話的需求來自下列問題:
- 它可讓實作在一般共同通訊之上分層 MPI_Comm_create 函式。
- 它提供額外的安全性,特別是在部分重迭群組用來建立新的通訊器的情況下。
- 它允許實作避免某些與內容建立相關的通訊。
如果 comm 參數參考 intercomicator,則建立的 communicator 也是一個內部通訊器,其中本機群組只包含 群組 參數中指定的進程。 在輸入內部通訊器的本機群組中,指定這些進程,這些進程會成為 群組 參數中新通訊器的一部分。 通訊器相同本機群組中的所有進程都必須為 group 參數指定相同的值,也就是相同順序的相同成員。 如果任一個群組未在內部通訊器的本機群組中指定至少一個進程,或呼叫進程未包含在群組中,則會傳回錯誤。
規格需求
產品 |
HPC Pack 2012 MS-MPI 可轉散發套件、HPC Pack 2008 R2 MS-MPI 可轉散發套件、HPC Pack 2008 MS-MPI 可轉散發套件或 HPC Pack 2008 用戶端公用程式 |
標頭 |
Mpi.h;Mpif.h |
媒體櫃 |
Msmpi.lib |
DLL |
Msmpi.dll |