MPI_Iscatterv函式
語法
int MPIAPI MPI_Iscatterv(
_In_opt_ const void *sendbuf,
_In_opt_ const int sendcounts[],
_In_opt_ const int displs[],
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_ int recvcount,
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
參數
sendbuf [in, optional]
緩衝區的指標,其中包含根進程要傳送的數據。所有非根進程都會忽略此參數。
如果 comm 參數參考內部通訊程式,您可以在根進程中指定 MPI_IN_PLACE ,以指定就地選項。 會忽略 recvcount 和 recvtype 參數。 散佈向量仍視為包含 n 個區段,其中 n 是群組大小;對應至根進程的區段不會移動。
sendcounts[] [in, optional]
要傳送至每個進程的項目數目。 如果 sendcounts[i] 為零,則該程式之訊息的數據部分是空的。所有非根進程都會忽略此參數。
displs[] [in, optional]
要傳送至每個通訊程式之數據的位置。 陣列中的每個位置都是相對於 sendbuf 陣列的對應專案。在 sendbuf、 sendcounts 和 displs 參數陣列中,每個數位的第 n個元素會參考要傳送至 nth communicator 進程的數據。
此參數只有在根進程才重要。
sendtype [in]
緩衝區中每個項目的數據類型。所有非根進程都會忽略此參數。
recvbuf [out, optional]
緩衝區的指標,其中包含在每個進程上接收的數據。 緩衝區中元素的數目和數據類型是在 recvcount 和 recvtype 參數中指定。recvcount [in]
接收緩衝區中的項目數目。 如果計數為零,則訊息的數據部分是空的。recvtype [in]
接收緩衝區中項目的數據型別。root [in]
指定通訊器內傳送程式中的排名。comm [in]
MPI_Comm communicator 句柄。要求 [out]
表示通訊作業 的MPI_Request 句柄。
傳回值
傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。
在 Fortran 中,傳回值會儲存在 IERROR 參數中。
Fortran
MPI_ISCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNTS(*), DISPLS(*), SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR
備註
非封鎖呼叫會起始必須在個別完成呼叫中完成的統一縮減作業。 一旦起始,作業可能會獨立於參與進程的任何計算或其他通訊之外進行。 如此一來,非封鎖縮減作業就可以藉由在「背景」中執行減少作業,來減輕縮減作業的可能同步處理效果。
所有完成呼叫 (例如,非封鎖縮減作業都支援 MPI_Wait) 。
規格需求
產品 |
Microsoft MPI v7 |
標頭 |
Mpi.h;Mpif.h |
媒體櫃 |
Msmpi.lib |
DLL |
Msmpi.dll |