MPI_Iallgather函式
從群組的所有成員收集資料,並以非封鎖方式將資料傳送給群組的所有成員。
語法
int MPIAPI MPI_Iallgather(
_In_opt_ const void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_ int recvcount,
_In_ MPI_Datatype recvtype,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
參數
sendbuf [in, optional]
要傳送至群組中所有進程之資料的指標。 緩衝區中元素的數目和資料類型是在 sendcount 和 sendtype 參數中指定。 緩衝區中的每個專案都會對應至群組中的進程。如果 comm 參數參考內部通訊程式,您可以在所有進程中指定 MPI_IN_PLACE 來指定就地選項。 會忽略 sendcount和sendtype參數。 每個進程都會在對應的接收緩衝區元素中輸入資料。 第 n個進程會將資料傳送至接收緩衝區的第 n個元素。
sendcount [in]
在 sendbuf 參數中指定的緩衝區中元素數目。 如果 sendcount 為零,則訊息的資料部分是空的。sendtype [in]
傳送緩衝區中專案的 MPI 資料類型。recvbuf [out, optional]
緩衝區的指標,其中包含從每個進程接收的資料。 緩衝區中元素的數目和資料類型是在 recvcount 和 recvtype 參數中指定。recvcount [in]
接收緩衝區中的專案數目。 如果計數為零,則訊息的資料部分是空的。recvtype [in]
接收緩衝區中專案的 MPI 資料類型。comm [in]
MPI_Comm communicator 控制碼。要求 [out]
表示通訊作業 的MPI_Request 控制碼。
傳回值
傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。
在 Fortran 中,傳回值會儲存在 IERROR 參數中。
Fortran
MPI_IALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, REQUEST, IERROR
備註
非封鎖呼叫會起始必須在個別完成呼叫中完成的統一縮減作業。 一旦起始,作業可能會獨立于參與進程的任何計算或其他通訊之外進行。 如此一來,非封鎖縮減作業就可以藉由在「背景」中執行減少作業,來減輕縮減作業的可能同步處理效果。
所有完成呼叫 (例如, MPI_Wait) 都支援非封鎖縮減作業。
規格需求
產品 |
Microsoft MPI v7 |
標頭 |
Mpi.h;Mpif.h |
媒體櫃 |
Msmpi.lib |
DLL |
Msmpi.dll |