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_replace(3OpenMPI)                                                MPI_Sendrecv_replace(3OpenMPI)



NAME
       MPI_Sendrecv_replace - Sends and receives a message using a single buffer.


SYNTAX
C Syntax
       #include <mpi.h>
       int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype,
            int dest, int sendtag, int source, int recvtag, MPI_Comm comm,
            MPI_Status *status)


Fortran Syntax
       INCLUDE 'mpif.h'
       MPI_SENDRECV_REPLACE(BUF, COUNT, DATATYPE, DEST, SENDTAG, SOURCE,
                 RECVTAG, COMM, STATUS, IERROR)
            <type>    BUF(*)
            INTEGER   COUNT, DATATYPE, DEST, SENDTAG
            INTEGER   SOURCE, RECVTAG, COMM
            INTEGER   STATUS(MPI_STATUS_SIZE), IERROR


C++ Syntax
       #include <mpi.h>
       void Comm::Sendrecv_replace(void* buf, int count, const
            Datatype& datatype, int dest, int sendtag, int source,
            int recvtag, Status& status) const

       void Comm::Sendrecv_replace(void* buf, int count, const
            Datatype& datatype, int dest, int sendtag, int source,
            int recvtag) const


INPUT/OUTPUT PARAMETER
       buf       Initial address of send and receive buffer (choice).


INPUT PARAMETERS
       count     Number of elements in send and receive buffer (integer).

       datatype  Type of elements to send and receive (handle).

       dest      Rank of destination (integer).

       sendtag   Send message tag (integer).

       source    Rank of source (integer).

       recvtag   Receive message tag (integer).

       comm      Communicator (handle).


OUTPUT PARAMETERS
       status    Status object (status).

       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  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_replace executes a blocking send and receive. The same buffer is used both for the  send
       and for the receive, so that the message sent is replaced by the message received.

       The  semantics of a send-receive operation is what would be obtained if the caller forked two concur-rent concurrent
       rent threads, one to execute the send, and one to execute the receive, followed by a  join  of  these
       two threads.


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






Open MPI 1.2                                   September 2006                 MPI_Sendrecv_replace(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.