Gather to All



next up previous contents
Next: An Example Using Up: Collective Communications Previous: Examples Using MPI_SCATTERV

Gather to All

  gather to all

  MPI_ALLGATHER(sendbuf, sendcount, sendtype, recvbuf, recvcount,
                      recvtype, comm)

    IN       sendbuf          starting address of send buffer
    IN       sendcount        number of elements in send buffer 
    IN       sendtype         datatype of send buffer elements
    OUT      recvbuf          address of receive buffer
    IN       recvcount        number of elements received 
                                     from any process 
    IN       recvtype         data type of recv buffer elements
    IN       comm             communicator

MPI_Allgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)

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

MPI_ALLGATHER can be thought of as MPI_GATHER, except all processes receive the result, instead of just the root. The jth block of data sent from each process is received by every process and placed in the jth block of the buffer recvbuf.

The type signature associated with sendcount and sendtype at a process must be equal to the type signature associated with recvcount and recvtype at any other process.

The outcome of a call to MPI_ALLGATHER(...) is as if all processes executed n calls to MPI_GATHER(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm), for root = 0 , ..., n-1. The rules for correct usage of MPI_ALLGATHER are easily found from the corresponding rules for MPI_GATHER.





Jack Dongarra
Fri Sep 1 06:16:55 EDT 1995