次の方法で共有


MPI_Ireduce関数

グループのすべてのメンバーに対してグローバルな reduce 操作 (合計、最大値、論理操作など) を非ブロッキングの方法で実行します。

構文

int MPIAPI MPI_Ireduce(
  _In_      void         *sendbuf,
  _Out_opt_ void         *recvbuf,
  _In_      int          count,
  _In_      MPI_Datatype datatype,
  _In_      MPI_Op       op,
  _In_      int          root,
  _In_      MPI_Comm     comm,
  _Out_     MPI_Request  *request
);

パラメーター

  • sendbuf [in]
    削減に使用される、このランクのデータを格納しているバッファーへのポインター。 バッファーは、データ型 ハンドルによって示される MPI_Datatype の連続する要素 カウントで構成されます。 メッセージの長さは、バイト数ではなく、要素の数で指定されます。

  • recvbuf [out, optional]
    削減操作の結果を受け取るバッファーへのポインター。 このパラメーターは、ルート プロセスでのみ重要です。

  • カウント [in]
    このプロセスから送信する要素の数。

  • datatype [in]
    sendbuf内の各要素のデータ型を表す MPI_Datatype ハンドル

  • op [in]
    実行するグローバル削減操作を示す MPI_Op ハンドル。 ハンドルは、組み込み操作またはアプリケーション定義操作を示すことができます。 定義済みの操作の一覧については、MPI_Op トピックを参照してください。

  • ルート の [in]
    MPI_Commcomm内の受信プロセスのランク。

  • comm [in]
    MPI_Comm コミュニケーター ハンドル。

  • 要求 [out]
    通信操作を表す MPI_Request ハンドル。.

戻り値

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

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

Fortran

    MPI_IREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR) 
        <type> SENDBUF(*), RECVBUF(*) 
        INTEGER COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR

備考

非ブロッキング呼び出しでは、個別の完了呼び出しで完了する必要がある一括削減操作が開始されます。 開始されると、操作は、参加プロセスでの計算やその他の通信とは無関係に進行する可能性があります。 この方法では、非ブロッキング削減操作は、"バックグラウンド" で実行することで、削減操作の同期効果を軽減できます。

非ブロッキング削減操作では、すべての完了呼び出し (MPI_Waitなど) がサポートされます。

必要条件

Microsoft MPI v6

ヘッダ

Mpi.h;Mpif.h

図書館

Msmpi.lib

DLL

Msmpi.dll

関連項目

MPI 集合関数

MPI_Datatype

MPI_Op

MPI_Reduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome