[Rcpp-devel] RInside and MPI master slave model proper usage

Nicholas Pezolano npezolano at gmail.com
Sat Jan 19 23:44:54 CET 2013


Maybe I did not describe my question/problem clearly,

I've seen the examples and you would call

 RInside R(int argc, int argv);  after int main and mpi_init, and all nodes
should have an embedded R instance.

However the problem with using MPI and RInside in the above master slave
model is the RInside objects/R instance will not be callable from the
do_work function.

for instance the following code snippet works in the examples with mpi but
produces an error when used in a function or with the master slave model.

do_work(.......){

R["data"] = data;
R.parseEvalQ();
R.parseEvalQ(garch);

}

test.cpp: In function ‘void do_work(std::string, int&)’:
test.cpp:278:4: error: expected primary-expression before ‘[’ token
test.cpp:279:4: error: expected primary-expression before ‘.’ token
test.cpp:280:4: error: expected primary-expression before ‘.’ token

The error is because the function doesn't have access to the the R object


On Sat, Jan 19, 2013 at 5:14 PM, Dirk Eddelbuettel <edd at debian.org> wrote:

>
> On 19 January 2013 at 16:29, Nicholas Pezolano wrote:
> | Hi I'm using Rinside with MPI and testing out a simple master slave
> model.
> |
> | heres a basic example of what i'm trying to do.
> | http://www.lam-mpi.org/tutorials/one-step/ezstart.php
> |
> | The function  do_work(unit_of_work_t work){ .....   gets run across all
> the
> |  N nodes until the M units of work are done.
> |     I am calling many R functions from C++, as well as loading R
> libraries,
> |  in the do_work function.
> |
> | Is there a way to load R once on each of the slaves and have the do_work
> | function have access to RInside for every iteration of the master-slave
> model?
> |
> | Do I have to run           RInside R(argc, argv);      for every-time
> | the function do_work is called by the master?
> |
> | Is there a way to free the R instance or is this handled automatically?
> or is
> | there a better approach?
>
> Do you know that there is a working example, contributed in the early days
> by
> Jianping Hua?
>
> All this assumes that you are a tad familiar with basic MPI. The model used
> here uses straight MPI from C (or C++), and each (worker/slave) node just
> happens to do its work with R.
>
> There are other models, notably Rmpi and you are not forced to use RInside
> in
> order to deploy MPI with R.  If you have basic questions, r-sig-hpc may be
> a
> better place.
>
> Dirk
>
>
>
> --
> Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
>



-- 
Nicholas Pezolano
Department of Applied Math & Statistics
State University of New York at Stony Brook
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130119/ec2e0d75/attachment-0001.html>


More information about the Rcpp-devel mailing list