File: rinside_mpi_sample2.cpp

package info (click to toggle)
r-cran-rinside 0.2.19-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 668 kB
  • sloc: cpp: 3,310; ansic: 117; xml: 57; ruby: 34; makefile: 2
file content (33 lines) | stat: -rw-r--r-- 1,137 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4;  tab-width: 8; -*-
//
// Simple example showing in R console information about current node
//
// MPI C++ API version of file contributed by Jianping Hua 
//
// Copyright (C) 2010 - 2011  Dirk Eddelbuettel and Romain Francois
//
// GPL'ed 

#include <mpi.h>     // mpi header
#include <RInside.h> // for the embedded R via RInside

int main(int argc, char *argv[]) {

    MPI::Init(argc, argv);                      // mpi initialization
    int myrank = MPI::COMM_WORLD.Get_rank();    // obtain current node rank
    int nodesize = MPI::COMM_WORLD.Get_size();  // obtain total nodes running.

    RInside R(argc, argv);                      // create an embedded R instance

    std::stringstream txt;
    txt << "Hello from node " << myrank         // node information
	<< " of " << nodesize << " nodes!" << std::endl;

    R["txt"] = txt.str();	                // assign string var to R variable 'txt'

    R.parseEvalQ("cat(txt)");                   // eval init string, ignoring any returns

    MPI::Finalize();                            // mpi finalization

    exit(0);
}