共用方式為


MPI_Igather函式

以非封鎖方式,從群組的所有成員收集數據到一個成員。

語法

int WINAPI MPI_Igather(
  _In_      void         *sendbuf,
            int          sendcount,
            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]
    緩衝區的指標,其中包含要傳送至根目錄的數據。 緩衝區是由 sendtype 句柄所指示之MPI_Datatypesendcount 後續元素所組成。 訊息長度是以元素數目來指定,而不是位元元數目。

  • sendcount
    sendbuf 中的 sendtype 元素數目。 如果值為零,則訊息的數據部分是空的。

  • sendtype
    MPI_Datatype句柄,代表 sendbuf 中每個專案的數據類型。

  • recvbuf [out, optional]
    緩衝區的指標,其中包含從根目錄上每個進程接收的數據,包括根進程所傳送的數據 (只在根) 。 所有非根進程都會忽略接收緩衝區 重新建構 。 在根進程上,recvbuf 是由 recvtype 句柄所指示之MPI_Datatype的 recvcount 連續元素所組成。 訊息長度是以元素數目來指定,而不是位元元數目。

  • recvcount [in]
    recvbuf 中的 recvtype 元素數目。 如果值為零,則訊息的數據部分是空的 (只有在根) 才會有顯著性。

  • recvtype [in]
    MPI_Datatype句柄,代表 recvbuf 中每個元素的數據類型 (只在根) 顯著。

  • root [in]
    接收進程在 MPI_Commcomm 內的排名。

  • comm [in]
    MPI_Comm communicator 句柄。

  • 要求 [out]
    表示通訊作業 的MPI_Request 句柄。

傳回值

傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。

在 Fortran 中,傳回值會儲存在 IERROR 參數中。

Fortran

    MPI_IGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE,
    ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR

備註

非封鎖呼叫會起始必須在個別完成呼叫中完成的統一收集作業。 一旦起始,作業可能會獨立於參與進程的任何計算或其他通訊之外進行。 如此一來,非封鎖的收集作業可以在「背景」中執行收集作業,以減輕收集作業的可能同步處理效果。

所有完成呼叫 (例如, MPI_Wait) 都支援非封鎖收集作業。

規格需求

產品

Microsoft MPI v6

標頭

Mpi.h;Mpif.h

媒體櫃

Msmpi.lib

DLL

Msmpi.dll

另請參閱

MPI 共同函式

MPI_Datatype

MPI_Gather

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome