MPI_Ireduce函式
執行全域縮減作業 (例如,以非封鎖方式跨群組的所有成員的總和、最大值或邏輯和) 。
語法
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]
要接收縮減作業結果之緩衝區的指標。 此參數只有在根進程才重要。count [in]
要從這個進程傳送的專案數目。資料類型 [in]
MPI_Datatype控制碼,代表sendbuf中每個專案的資料類型。op [in]
MPI_Op控制碼,表示要執行的全域縮減作業。 控制碼可以指出內建或應用程式定義的作業。 如需預先定義的作業清單,請參閱 MPI_Op 主題。root [in]
接收進程 在 MPI_Commcomm內的排名。comm [in]
MPI_Comm communicator 控制碼。要求 [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 |