Provided by: openmpi-doc_2.1.1-8_all bug

NAME

       MPI_Neighbor_allgather, MPI_Ineighbor_allgather - Gathers and distributes data from and to
       all neighbors

SYNTAX

C Syntax

       #include <mpi.h>
       int MPI_Neighbor_allgather(const void *sendbuf, int  sendcount,
            MPI_Datatype sendtype, void *recvbuf, int recvcount,
             MPI_Datatype recvtype, MPI_Comm comm)

       int MPI_Ineighbor_allgather(const void *sendbuf, int  sendcount,
            MPI_Datatype sendtype, void *recvbuf, int recvcount,
             MPI_Datatype recvtype, MPI_Comm comm, MPI_Request req)

Fortran Syntax

       INCLUDE 'mpif.h'
       MPI_NEIGHBOR_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT,
                 RECVTYPE, COMM, IERROR)
            <type>    SENDBUF (*), RECVBUF (*)
            INTEGER   SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM,
            INTEGER   IERROR

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

INPUT PARAMETERS

       sendbuf   Starting address of send buffer (choice).

       sendcount Number of elements in send buffer (integer).

       sendtype  Datatype of send buffer elements (handle).

       recvbuf   Starting address of recv buffer (choice).

       recvcount Number of elements received from any process (integer).

       recvtype  Datatype of receive buffer elements (handle).

       comm      Communicator (handle).

OUTPUT PARAMETERS

       recvbuf   Address of receive buffer (choice).

       request   Request (handle, non-blocking only).

       IERROR    Fortran only: Error status (integer).

DESCRIPTION

       MPI_Neighbor_allgather is similar to  MPI_Allgather,  except  that  only  the  neighboring
       processes receive the result, instead of all processes. The neighbors and buffer layout is
       determined by the topology of comm.

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

NEIGHBOR ORDERING

       For  a  distributed  graph  topology,  created with MPI_Dist_graph_create, the sequence of
       neighbors in the send and receive buffers at each  process  is  defined  as  the  sequence
       returned  by  MPI_Dist_graph_neighbors  for  destinations and sources, respectively. For a
       general graph topology, created with MPI_Graph_create, the order of neighbors in the  send
       and   receive   buffers   is   defined  as  the  sequence  of  neighbors  as  returned  by
       MPI_Graph_neighbors.  Note that general graph topologies should generally be  replaced  by
       the distributed graph topologies.

       For  a  Cartesian topology, created with MPI_Cart_create, the sequence of neighbors in the
       send and receive buffers at each process is defined by order of the dimensions, first  the
       neighbor in the negative direction and then in the positive direction with displacement 1.
       The numbers of sources and destinations in the communication  routines  are  2*ndims  with
       ndims  defined  in MPI_Cart_create. If a neighbor does not exist, i.e., at the border of a
       Cartesian  topology  in  the  case  of  a  non-periodic  virtual  grid  dimension   (i.e.,
       periods[...]==false), then this neighbor is defined to be MPI_PROC_NULL.

       If  a  neighbor in any of the functions is MPI_PROC_NULL, then the neighborhood collective
       communication behaves like a  point-to-point  communication  with  MPI_PROC_NULL  in  this
       direction.  That  is,  the  buffer  is  still  part of the sequence of neighbors but it is
       neither communicated nor updated.

NOTES

       The MPI_IN_PLACE option for sendbuf is not meaningful for this operation.

ERRORS

       Almost all MPI routines return an error value; C routines as the value of the function and
       Fortran routines in the last argument.

       Before  the  error value is returned, the current MPI error handler is called. By default,
       this error handler aborts the MPI job, except for I/O function errors. The  error  handler
       may    be   changed   with   MPI_Comm_set_errhandler;   the   predefined   error   handler
       MPI_ERRORS_RETURN may be used to cause error values to be returned. Note that MPI does not
       guarantee that an MPI program can continue past an error.

SEE ALSO

       MPI_Neighbor_allgatherv MPI_Cart_create MPI_Garph_create MPI_Dist_graph_create
       MPI_Gather