mpi.send {Rmpi}R Documentation

MPI_Send and MPI_Recv APIs

Description

The pair mpi.send and mpi.recv are two most used blocking calls for point-to-point communications. An int, double or char vector can be transmitted from any source to any destination.

Usage

mpi.send(x, type, dest, tag,  comm = 1)
mpi.recv(x, type, source, tag,  comm = 1, status = 0)

Arguments

x data to be sent or received. Must be the same type for source and destination. The receive buffer must be as large as the send buffer.
type 1 for integer, 2 for double, and 3 for character. Others are not supported.
dest the destination rank. Use mpi.proc.null for a fake destination.
source the source rank. Use mpi.any.source for any source. Use mpi.proc.null for a fake source.
tag non-negative integer. Use mpi.any.tag for any tag flag.
comm a communicator number.
status a status number.

Details

The pair mpi.send and mpi.recv must be used together, i.e., if there is a sender, then there must be a receiver. Any mismatch will result a deadlock situation, i.e., programs stop responding. The receive buffer must be large enough to contain an incoming message otherwise programs will be crashed. One can use mpi.probe and mpi.get.count to find the length of an incoming message before calling mpi.recv. If mpi.any.source or mpi.any.tag is used in mpi.recv, one can use mpi.get.sourcetag to find out the source or tag of the received message. To send/receive an R object rather than an int, double or char vector, please use the pair mpi.send.Robj and mpi.recv.Robj.

Value

mpi.send returns no value. mpi.recv returns the int, double or char vector sent from source.

Author(s)

Hao Yu

References

http://www.lam-mpi.org/, http://www-unix.mcs.anl.gov/mpi/www/www3/

See Also

mpi.send.Robj, mpi.recv.Robj, mpi.probe. mpi.get.count, mpi.get.sourcetag.


[Package Rmpi version 0.4-9 Index]