mpi.scatter.Robj and mpi.scatter.Robj2slave are used to scatter a list
to all members. They are more efficient than using any parallel apply functions.
Usage
mpi.scatter.Robj(obj = NULL, root = 0, comm = 1)
mpi.scatter.Robj2slave(obj, comm = 1)
Arguments
obj
a list object to be scattered from the root or master
root
rank of the scatter.
comm
a communicator number.
Details
mpi.scatter.Robj is an extension of mpi.scatter for
scattering a list object from a sender (root) to everyone. mpi.scatter.Robj2slave
scatters a list to all slaves.
Value
mpi.scatter.Robj for non-root members, returns the
scattered R object. For the root member, it returns the
portion belonging to itself. mpi.scatter.Robj2slave returns no value
for the master and all slaves get their corresponding components in the list,
i.e., the first slave gets the first component in the list.
Author(s)
Hao Yu and Wei Xia
See Also
mpi.scatter,
mpi.gather.Robj,
Examples
#assume that there are three slaves running
mpi.bcast.cmd(x<-mpi.scatter.Robj())
xx <- list("master",rnorm(3),letters[2],1:10)
mpi.scatter.Robj(obj=xx)
mpi.remote.exec(x)
#scatter a matrix to slaves
dat=matrix(1:24,ncol=3)
splitmatrix = function(x, ncl) lapply(.splitIndices(nrow(x), ncl), function(i) x[i,])
dat2=splitmatrix(dat,3)
mpi.scatter.Robj2slave(dat2)
mpi.remote.exec(dat2)
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(Rmpi)
Error in library(Rmpi) : there is no package called 'Rmpi'
Execution halted