14 int main(
int argc,
char *argv[]) {
16 MPI::Init(argc, argv);
17 int myrank = MPI::COMM_WORLD.Get_rank();
18 int nodesize = MPI::COMM_WORLD.Get_size();
20 int sndcnt = 1, rcvcnt = 1;
22 double *allvalues =
new double[nodesize];
26 int rangeMin = 0, rangeMax = 10;
32 std::stringstream txt;
33 txt <<
"x <- " << rangeMin << std::endl;
36 txt <<
"y <- " << rangeMax << std::endl;
39 txt <<
"n <- " << sampleSize << std::endl;
42 std::string evalstr =
"mean(runif(n,x,y))";
43 Rcpp::NumericVector m = R.
parseEval(evalstr);
47 MPI::COMM_WORLD.Gather((
const void*)&sendValue, sndcnt, MPI::DOUBLE, (
void*)allvalues, rcvcnt, MPI::DOUBLE, 0);
50 std::cout <<
"node " << myrank <<
" has mean " << m(0) << std::endl;
52 }
catch(std::exception& ex) {
53 std::cerr <<
"Exception caught: " << ex.what() << std::endl;
55 std::cerr <<
"Unknown exception caught" << std::endl;
60 std::cout <<
"values of all " << nodesize <<
" trials: " << std::endl;
61 for (
int i = 0; i < nodesize; i++ )
62 std::cout << allvalues[ i ] <<
", ";
63 std::cout << std::endl;
void parseEvalQ(const std::string &line)
int parseEval(const std::string &line, SEXP &ans)
int main(int argc, char *argv[])