int MPI_Gather ( const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); int MPI_Gather_c( const void *sendbuf, MPI_Count sendcount, MPI_Datatype sendtype, void *recvbuf, MPI_Count recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); int MPI_Gatherv ( const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts [], const int displs [], MPI_Datatype recvtype, int root, MPI_Comm comm); int MPI_Gatherv_c (...); int MPI_Igather ( const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); int MPI_Igather_c (...); int MPI_Igatherv ( const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts [], const int displs [], MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); int MPI_Igatherv_c (...); int MPI_Gather_init ( const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); int MPI_Gather_init_c (...); int MPI_Gatherv_init ( const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts [], const int displs [], MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); int MPI_Gatherv_init_c (...);
sender A, receivers A, A, A
senders A, B, C, receiver ABC
sender ABC, receivers A, B, C
senders A, B, C, receivers ABC, ABC, ABC
senders ABC, DEF, GHI, receivers ADG, BEH, CFI
senders A, B, C, receiver A+B+C
senders A, B, C, receivers A+B+C, A+B+C, A+B+C
senders ABC, DEF, GHI, receivers A+D+G, B+E+H, C+F+I
senders A, B, C, receivers A, A+B, A+B+C
senders A, B, C, receivers N/A, A, A+B
rendez vous
semantics differ for intra and inter communication
intra communication can use special argument for single buffer