| sendrecv.replace-method {pbdMPI} | R Documentation |
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.
sendrecv.replace(x,
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)
x |
an object to be sent from a rank. |
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. |
A corresponding sendrecv.replace() 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.
Warning: sendrecv.replace() is not safe for R since R is
not a thread safe package that a dynamic returning object requires certain
blocking or barrier at some where. The replaced object or memory address
‘MUST’ return correctly. This is almost equivalent to sendrecv().
A x is returned by default.
For calling spmd.sendrecv.replace.*():
signature(x = "ANY")signature(x = "integer")signature(x = "numeric")signature(x = "raw")Wei-Chen Chen wccsnow@gmail.com, George Ostrouchov, Drew Schmidt, Pragneshkumar Patel, and Hao Yu.
Programming with Big Data in R Website: http://r-pbd.org/
sendrecv().
## Not run: ### Save code in a file "demo.r" and run with 2 processors by ### SHELL> mpiexec -np 2 Rscript demo.r ### Initial. suppressMessages(library(pbdMPI, quietly = TRUE)) init() .comm.size <- comm.size() .comm.rank <- comm.rank() ### Examples. N <- 5 x <- (1:N) + N * .comm.size x <- sendrecv.replace(matrix(x, nrow = 1)) comm.print(x, rank.print = 1) ### Finish. finalize() ## End(Not run)