次の方法で共有


MPI_Dist_graph_create_adjacent関数

分散グラフ トポロジ情報がアタッチされている新しいコミュニケーターへのハンドルを返します。

構文

int WINAPI MPI_Dist_graph_create_adjacent(
  _In_  MPI_Comm                comm_old,
        _In_range_(>=,0)  int   indegree,
        _In_reads_opt const int sources[],
        _In_reads_opt const int sourceweights[],
        _In_range_(>=,0)  int   outdegree,
        _In_reads_opt const int destinations[],
        _In_reads_opt const int destweights[],
  _In_  MPI_Info                info,
        _In_range_(0,1) int     reorder,
  _Out_ MPI_Comm                *comm_dist_graph
);

パラメーター

  • comm_old [in]
    トポロジ情報のないコミュニケーターのハンドル (ハンドル)。

  • indegree
    ソース配列と sourceweights 配列のサイズ (負以外の整数)。

  • sources[]
    呼び出し元のプロセスが宛先であるプロセスのランク (負以外の整数の配列)。

  • sourceweights[]
    呼び出し元プロセスへの対応するエッジの重み付け (負以外の整数の配列)。

  • outdegree
    変換先配列と destweights 配列のサイズ (負以外の整数)。

  • destinations[]
    呼び出し元のプロセスがソースであるプロセスのランク (負以外の整数の配列)。

  • destweights[]
    呼び出しプロセスの対応するエッジの重み (負以外の整数の配列)。

  • info [in]
    重みの最適化または解釈に関するヒント (ハンドル)。 現在 、この 変数は内部で使用されていないため、MPI_INFO_NULLを使用しています。

  • 並べ替える
    ランクは、並べ替え (true) または (false) (論理) することはできません。 現在、これは内部では使用されません。

  • comm_dist_graph [out]
    分散グラフ トポロジ情報がアタッチされたコミュニケーターへのハンドル (ハンドル)。

戻り値

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

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

Fortran

    MPI_DIST_GRAPH_CREATE_ADJACENT (COMM_OLD, INDEGREE, SOURCES, SOURCEWEIGHTS,
    OUTDEGREE, DESTINATIONS, DESTWEIGHTS, INFO, REORDER,
    COMM_DIST_GRAPH, IERROR)
        INTEGER COMM_OLD, INDEGREE, SOURCES (*), SOURCEWEIGHTS (*), OUTDEGREE,
    DESTINATIONS (*), DESTWEIGHTS (*), INFO, COMM_DIST_GRAPH, IERROR
        LOGICAL REORDER

注釈

comm_old コミュニケーターの各プロセスは、仮想分散グラフ トポロジ内の受信エッジと送信エッジに関するすべての情報を渡します。 呼び出し元のプロセスでは、グラフが重み付けされている場合、グラフの各エッジがソースと宛先プロセスで同じ重みで記述されていることを確認する必要があります。 特定のソースと宛先のペアに対して複数のエッジがある場合、これらのエッジの重みのシーケンスは重要ではありません。

完全な通信トポロジは、 comm_old内のすべてのプロセスのソース配列に表示されるすべてのエッジの組み合わせです。これは、 destinations 配列に表示されるすべてのエッジの組み合わせと同じである必要があります。 ソースと宛先のランクは、 comm_oldのプロセス ランクである必要があります。 これにより、通信グラフを完全に分散した仕様が可能になります。 分離されたプロセス、つまり、分散トポロジに受信エッジまたは発信エッジがなく、 従って、不一時 または 出力 、またはその両方を 0 として持つプロセスが許可されます。

新しく作成されたコミュニケーター (comm_dist_graph) 内のプロセスの数は、 comm_old内のプロセスの数と同じです。 この関数の呼び出しは集合的です。

重みは、グラフが重み付きグラフの場合、 ソースウェイト 配列と destweights 配列を使用して負以外の整数として指定されます。 アプリケーションでは、ソースウェイト配列と destweights 配列の両方に対してMPI_UNWEIGHTEDを指定して、すべてのエッジが同じ (実質的になし) 重みを持っていることを示す必要があります。 comm_oldの一部のプロセスではなく、一 部のプロセス にMPI_UNWEIGHTEDを提供 すると誤っています。 このような場合の動作は保証されません。 グラフが重み付けされているのに、プロセス の不一重 または 出力 が 0 の場合、 MPI_WEIGHTS_EMPTY またはそのプロセスによって任意の配列が ソースウェイト または デストウェイト に渡される可能性があります。

要件

製品

Microsoft MPI v6

ヘッダー

Mpi.h;Mpif.h

ライブラリ

Msmpi.lib

[DLL]

Msmpi.dll

こちらもご覧ください

MPI プロセス トポロジ関数

MPI_Dist_graph_create

MPI_Dist_graph_neighbors_count

MPI_Dist_graph_neighbors