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 |