ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



MPI_Sendrecv(3OpenMPI)                                                                MPI_Sendrecv(3OpenMPI)



NAME
       MPI_Sendrecv - Sends and receives a message.


SYNTAX
C Syntax
       #include <mpi.h>
       int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
            int dest, int sendtag, void *recvbuf, int recvcount,
            MPI_Datatype recvtype, int source, int recvtag,
            MPI_Comm comm, MPI_Status *status)


Fortran Syntax
       INCLUDE 'mpif.h'
       MPI_SENDRECV(SENDBUF, SENDCOUNT, SENDTYPE, DEST, SENDTAG,
                 RECVBUF, RECVCOUNT, RECVTYPE, SOURCE, RECVTAG, COMM,
                 STATUS, IERROR)
            <type>    SENDBUF(*), RECVBUF(*)
            INTEGER   SENDCOUNT, SENDTYPE, DEST, SENDTAG
            INTEGER   RECVCOUNT, RECVTYPE, SOURCE, RECVTAG, COMM
            INTEGER   STATUS(MPI_STATUS_SIZE), IERROR


C++ Syntax
       #include <mpi.h>
       void Comm::Sendrecv(const void *sendbuf, int sendcount, const
            Datatype& sendtype, int dest, int sendtag, void *recvbuf,
            int recvcount, const Datatype& recvtype, int source,
            int recvtag, Status& status) const

       void Comm::Sendrecv(const void *sendbuf, int sendcount, const
            Datatype& sendtype, int dest, int sendtag, void *recvbuf,
            int recvcount, const Datatype& recvtype, int source,
            int recvtag) const


INPUT PARAMETERS
       sendbuf   Initial address of send buffer (choice).

       sendcount Number of elements to send (integer).

       sendtype  Type of elements in send buffer (handle).

       dest      Rank of destination (integer).

       sendtag   Send tag (integer).

       recvcount Maximum number of elements to receive (integer).

       recvtype  Type of elements in receive buffer (handle).

       source    Rank of source (integer).

       recvtag   Receive tag (integer).

       comm      Communicator (handle).


OUTPUT PARAMETERS
       recvbuf   Initial address of receive buffer (choice).

       status    Status object (status). This refers to the receive operation.

       IERROR    Fortran only: Error status (integer).


DESCRIPTION
       The  send-receive  operations combine in one call the sending of a message to one destination and the
       receiving of another message, from another process. The two (source and destination) are possibly the
       same. A send-receive operation is useful for executing a shift operation across a chain of processes.
       If blocking sends and receives are used for such a shift, then one  needs  to  order  the  sends  and
       receives correctly (for example, even processes send, then receive; odd processes receive first, then
       send) in order to prevent cyclic dependencies that may lead to deadlock. When a  send-receive  opera-tion operation
       tion  is used, the communication subsystem takes care of these issues. The send-receive operation can
       be used in conjunction with the functions described in Chapter 6  of  the  MPI-1  Standard,  "Process
       Topologies," in order to perform shifts on various logical topologies. Also, a send-receive operation
       is useful for implementing remote procedure calls.

       A message sent by a send-receive operation can be received by a regular receive operation  or  probed
       by  a  probe  operation; a send-receive operation can receive a message sent by a regular send opera-tion. operation.
       tion.

       MPI_Sendrecv executes a blocking send and receive operation. Both send and receive use the same  com-municator, communicator,
       municator, but possibly different tags. The send buffer and receive buffers must be disjoint, and may
       have different lengths and datatypes.

       If your application does not need to examine the status field, you can save resources  by  using  the
       predefined constant MPI_STATUS_IGNORE as a special value for the status argument.


ERRORS
       Almost  all  MPI  routines return an error value; C routines as the value of the function and Fortran
       routines in the last argument. C++ functions do not return errors. If the default  error  handler  is
       set  to MPI::ERRORS_THROW_EXCEPTIONS, then on error the C++ exception mechanism will be used to throw
       an MPI:Exception object.

       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_Sendrecv_replace





Open MPI 1.2                                   September 2006                         MPI_Sendrecv(3OpenMPI)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.