sendrecv-method {pbdMPI} | R Documentation |
Send and Receive an Object to and from Other Ranks
Description
This method lets a rank send an object to the other rank and
receive an object from another rank in the same communicator.
The default return is x
.
Usage
sendrecv(x, x.buffer = NULL,
rank.dest = (comm.rank(.pbd_env$SPMD.CT$comm) + 1) %%
comm.size(.pbd_env$SPMD.CT$comm),
send.tag = .pbd_env$SPMD.CT$tag,
rank.source = (comm.rank(.pbd_env$SPMD.CT$comm) - 1) %%
comm.size(.pbd_env$SPMD.CT$comm),
recv.tag = .pbd_env$SPMD.CT$tag,
comm = .pbd_env$SPMD.CT$comm, status = .pbd_env$SPMD.CT$status)
Arguments
x |
an object to be sent from a rank. |
x.buffer |
a buffer to store |
rank.dest |
a rank of destination where |
send.tag |
a send tag number. |
rank.source |
a source rank where |
recv.tag |
a receive tag number. |
comm |
a communicator number. |
status |
a status number. |
Details
A corresponding sendrecv()
should be evoked at the corresponding ranks
rank.dest
and rank.source
.
rank.dest
and rank.source
can be as.integer(NULL)
to
create a silent sendrecv operation which is more efficient than setting
rank.dest
and rank.source
to be equal.
Value
A x
is returned by default.
Methods
For calling spmd.sendrecv.*()
:
signature(x = "ANY", x.buffer = "ANY")
signature(x = "integer", x.buffer = "integer")
signature(x = "numeric", x.buffer = "numeric")
signature(x = "raw", x.buffer = "raw")
Author(s)
Wei-Chen Chen wccsnow@gmail.com, George Ostrouchov, Drew Schmidt, Pragneshkumar Patel, and Hao Yu.
References
Programming with Big Data in R Website: https://pbdr.org/
See Also
Examples
## Not run:
### Save code in a file "demo.r" and run with 2 processors by
### SHELL> mpiexec -np 2 Rscript demo.r
spmd.code <- "
### Initialize
suppressMessages(library(pbdMPI, quietly = TRUE))
.comm.size <- comm.size()
.comm.rank <- comm.rank()
### Examples.
N <- 5
x <- (1:N) + N * .comm.size
y <- sendrecv(matrix(x, nrow = 1))
comm.print(y, rank.print = 1)
### Finish.
finalize()
"
# execmpi(spmd.code, nranks = 2L)
## End(Not run)