[R] Rmpi and C Code, where to get the communicator
Martin Morgan
mtmorgan at fhcrc.org
Thu Mar 20 17:02:56 CET 2008
Hi Markus --
Usually comm is an argument with default value in the mpi.* functions,
so implicitly the user is managing these, e.g., by default, using comm
1. Presumably you'll have an R wrapper to .Call that has a default
argument comm=1, and will passs this to the C level.
Martin
Markus Schmidberger wrote:
> Hello,
>
> I try to write parts of my code in C to accelerate the for-loops. But
> basic operations I want to do in R (e.g. start cluster). My R code looks
> something like this:
>
> library(Rmpi)
> mpi.spawn.Rslaves()
> mpi.remote.exec(....)
> dyn.load("test.so")
> erg <- .Call("test", ....)
> ....
> mpi.close.Rslaves()
> mpi.quit()
>
> And my C function looks something like this:
>
> #include <mpi.h>
> #include <R.h>
> #include <Rdefines.h>
> #include <Rinternals.h>
> SEXP test (SEXP a, ..){
> int rank;
> comm ??????
> MPI_Comm_rank (comm, &rank);
> ......
> }
>
> For all MPI functions I need the right communicator (MPI_Comm *comm;) to
> communicate with the existing slaves. This variable will be generated by
> spawning the Rslaves (mpi.spawn.Rslaves). But how to get to this
> variable in my C function?
> Is the communicator variable somewhere stored in a R variable?
>
> ( I use R 2.6.2 and Rmpi 0.5-5)
>
> Thanks
> Markus
>
--
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
Location: Arnold Building M2 B169
Phone: (206) 667-2793
More information about the R-help
mailing list