Edit

Share via


MPI_Igather function

Gathers data from all members of a group to one member in a non-blocking way.

Syntax

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
);

Parameters

  • sendbuf [in]
    The pointer to a buffer containing the data to be sent to the root. The buffer consists of sendcount successive elements of the MPI_Datatype indicated by the sendtype handle. The message length is specified in terms of number of elements, not number of bytes.

  • sendcount
    The number of sendtype elements in sendbuf. If the value is zero, the data part of the message is empty.

  • sendtype
    The MPI_Datatype handle representing the data type of each element in sendbuf.

  • recvbuf [out, optional]
    The pointer to a buffer containing the data received from each process on the root, including data sent by the root process (significant only at root). The receive buffer recvbuf is ignored for all non-root processes. On the root process, recvbuf consists of recvcount successive elements of the MPI_Datatype indicated by the recvtype handle. The message length is specified in terms of number of elements, not number of bytes.

  • recvcount [in]
    The number of recvtype elements in recvbuf. If the value is zero, the data part of the message is empty (significant only at root).

  • recvtype [in]
    The MPI_Datatype handle representing the data type of each element in recvbuf (significant only at root).

  • root [in]
    The rank of the receiving process within the MPI_Commcomm.

  • comm [in]
    The MPI_Comm communicator handle.

  • request [out]
    The MPI_Request handle representing the communication operation.

Return value

Returns MPI_SUCCESS on success. Otherwise, the return value is an error code.

In Fortran, the return value is stored in the IERROR parameter.

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

Remarks

A non-blocking call initiates a collective gather operation which must be completed in a separate completion call. Once initiated, the operation may progress independently of any computation or other communication at participating processes. In this manner, non-blocking gather operations can mitigate possible synchronizing effects of gather operations by running them in the “background.”

All completion calls (e.g., MPI_Wait) are supported for non-blocking gather operations.

Requirements

Product

Microsoft MPI v6

Header

Mpi.h; Mpif.h

Library

Msmpi.lib

DLL

Msmpi.dll

See also

MPI Collective Functions

MPI_Datatype

MPI_Gather

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome