共用方式為


MPI_Comm_split函式

將與指定通訊器相關聯的群組分割成指定的脫離子群組數目。

語法

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

參數

  • 通訊
    要分割的通訊器。

  • color
    要指派呼叫進程的新通訊器。 色彩的值必須是非負值。

    如果進程指定色彩MPI_UNDEFINED,函式會將newcomm參數中的MPI_COMM_Null傳回給呼叫進程。

  • key
    新通訊器群組中呼叫進程的相對排名。 如需使用 金鑰色彩 參數的詳細資訊,請參閱。

  • newcomm [out]
    傳回時,包含新通訊器的控制碼。

傳回值

傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。

在 Fortran 中,傳回值會儲存在 IERROR 參數中。

Fortran

    MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

備註

這是統一函式,但每個進程都可以為 色彩索引鍵 參數指定不同的值。

這是一種非常強大的機制,可將單一通訊的進程群組分割成任意數目的子群組。 子群組的數目取決於所有進程所指定的色彩數目。 產生的通訊器不會重迭。 以這種方式細分通訊器對於定義計算階層很有用,例如多格線或線性代數。

每個子群組都包含指定 色彩 參數相同值的所有進程。 在每個子群組中,進程會依 索引鍵 參數的值所定義的順序來排名,並根據舊群組中的排名中斷系結。

使用內部通訊器通訊器時,對 的呼叫 MPI_COMM_CREATE(comm, group, new-comm) 相當於呼叫 MPI_COMM_SPLIT(comm, color, key, newcomm) ,其中屬於群組成員的進程會根據所有脫離群組的唯一編號,針對 color 參數及其在 索引鍵 參數的群組中排名來指定群組的數目。 不是群組成員的所有進程都會為color參數指定MPI_UNDEFINED

針對任何一種色彩,索引鍵值不一定是唯一的。 MPI_Comm_split函式會根據索引鍵參數的值依序排序進程,並依其來源群組中的相對排名排序系結。 如果針對所有 索引鍵 參數指定相同的值,則指定色彩中的所有進程都有與其父群組中具有相同的相對順位順序。

對於內部通訊者, MPI_Comm_splitMPI_Comm_create 函式提供類似的功能,將通訊群組分割成脫離的子群組。

當某些進程在其群組中沒有其他成員的完整資訊,但所有進程都有其所屬群組的色彩時,就會使用 MPI_Comm_split 函式。 在此情況下,MPI 實作會透過通訊探索其他群組成員。

當所有進程都有其群組成員的完整資訊時,就會使用 MPI_Comm_create 函式。 在此情況下,MPI 實作可以避免探索群組成員資格所需的額外通訊。

MPI_Comm_split所建立的 Communicator 無法重迭。 您可以多次呼叫 MPI_Comm_split 函式,以克服這項限制。 您可以透過這種方式建立多個重迭的通訊結構。 鼓勵在這類分割作業中使用 色彩索引鍵 參數。

MPI_Comm_split函式在交集子上的結果是,左邊的處理常式與右側處理常式的色彩相同,可建立新的交集器。 索引鍵參數會定義互動程式每一端進程的相對排名。 具有 MPI_COMM_Null 控制碼的新通訊器會傳回給指定 MPI_UNDEFINED 為其色彩的處理常式,或指定只在通訊器一邊指定的色彩。

規格需求

產品

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

另請參閱

MPI Communicator 函式

MPI_Comm_create