次の方法で共有


MPI_Comm_split関数

指定したコミュニケーターに関連付けられているグループを、指定した数の非結合サブグループにパーティション分割します。

構文

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

パラメーター

  • comm
    分割するコミュニケーター。

  • color
    呼び出し元プロセスが割り当てられる新しいコミュニケーター。 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

注釈

これは集合関数ですが、各プロセスで パラメーターと キー パラメーターに異なる値を指定できます。

これは、1 つの通信するプロセス グループを任意の数のサブグループに分割するための非常に強力なメカニズムです。 サブグループの数は、すべてのプロセスで指定された色の数によって決まります。 結果として得られるコミュニケーターは重複しません。 この方法でコミュニケーターを分割することは、マルチグリッドや線形代数などの計算の階層を定義する場合に役立ちます。

各サブグループには、 color パラメーターに同じ値を指定したすべてのプロセスが含まれます。 各サブグループ内では、プロセスは キー パラメーターの値によって定義された順序でランク付けされ、古いグループのランクに従って結び付けが解除されます。

コマンド内コミュニケーターでは、 の MPI_COMM_CREATE(comm, group, new-comm) 呼び出しは への MPI_COMM_SPLIT(comm, color, key, newcomm)呼び出しと同じです。ここで、グループ メンバーであるプロセスは、 すべての 非結合グループの一意の番号付けに基づいて、キー パラメーターのグループ内の色パラメーターとそのランクに基づいてグループの 番号を指定 します。 グループのメンバーではないすべてのプロセスは、color パラメーターにMPI_UNDEFINEDを指定します。

1 つの色の場合、キー値は一意である必要はありません。 MPI_Comm_split関数は、キー パラメーターの値に従ってプロセスを順番に並べ替え、ソース グループ内の相対ランクで結び付けを並べ替えます。 すべての キー パラメーターに同じ値が指定されている場合、特定の色のすべてのプロセスは、親グループに含まれるのと同じ相対ランク順を持ちます。

intracommunicators の場合、 MPI_Comm_split 関数と MPI_Comm_create 関数は、通信グループを非結合サブグループに分割する同様の機能を提供します。

MPI_Comm_split関数は、一部のプロセスがグループ内の他のメンバーの完全な情報を持たないが、すべてのプロセスが属するグループの色を持つ場合に使用されます。 この場合、MPI 実装は通信を介して他のグループ メンバーを検出します。

MPI_Comm_create関数は、すべてのプロセスがグループのメンバーの完全な情報を持っている場合に使用されます。 この場合、MPI 実装では、グループ メンバーシップを検出するために必要な追加の通信を回避できます。

MPI_Comm_splitによって作成されたコミュニケーターは重複できません。 この制限を克服するには、 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