次の方法で共有


MPI_Comm_create関数

個別のコミュニケーターで複数命令の複数データ (MIMD) 計算を分離するために、プロセスのグループのサブセットを抽出します。

構文

int MPIAPI MPI_Comm_create(
        MPI_Comm  comm,
        MPI_Group group,
  _Out_ MPI_Comm  *newcomm
);

パラメーター

  • comm
    ソース コミュニケーター。

  • group
    ソース コミュニケーター内のプロセスの要求されたサブセットを定義するグループ。

  • newcomm [out]
    戻り値には、新しいコミュニケーターへのハンドルが含まれます。

戻り値

成功 したMPI_SUCCESS を返します。 それ以外の場合、戻り値はエラー コードです。

Fortran では、戻り値は IERROR パラメーターに格納されます。

Fortran

    MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
        INTEGER COMM, GROUP, NEWCOMM, IERROR

注釈

この関数によって作成されるコミュニケーターは、 MPI_Comm_create 関数またはその他のコミュニケーター コンストラクターを使用して、並列サブ計算にさらに分割できます。 MPI_Comm_split関数は、MPI_Comm オブジェクトを作成するためのより一般的な関数です。

comm パラメーターがコマンド内を参照している場合、この関数は group パラメーターで定義されている通信グループを持つ新しいコミュニケーターを返します。 キャッシュされた情報は、ソース コミュニケーターから新しいコミュニケーターに伝達されません。 各プロセスは、ソース コミュニケーターに関連付けられている グループ のサブグループであるグループ パラメーターを使用して を呼び出す必要があります。 使用可能な値は MPI_GROUP_EMPTY。 プロセスでは、 グループ パラメーターに異なる値を指定できます。 プロセスが空でないグループを使用して を呼び出す場合、そのグループ内のすべてのプロセスは、同じ順序で同じメンバーである group パラメーターに対して同じ値を持つ関数を呼び出す必要があります。 それ以外の場合、関数はエラーを返します。 この結果は、プロセス全体で指定されるグループのセットが不整合である必要があることを意味します。 呼び出しプロセスが group パラメーターで指定されたグループのメンバーである場合、 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 パラメーターが相互通信子を参照している場合、作成されたコミュニケーターは、ローカル グループが group パラメーターで指定されているプロセスのみで構成される相互通信子でもあります。 group パラメーターの新しいコミュニケーターの一部となる入力インターコミュニケーターのローカル グループ 内のプロセスのみを指定します。 コミュニケーターの同じローカル グループ内のすべてのプロセスは、 group パラメーターに同じ値を指定する必要があります。つまり、同じメンバーを同じ順序で指定する必要があります。 いずれかのグループが相互通信子のローカル グループに少なくとも 1 つのプロセスを指定しない場合、または呼び出し元のプロセスがグループに含まれていない場合は、エラーが返されます。

要件

製品

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_split