Используйте MPI с Rcpp и RcppArmadillo - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь использовать MPI в коде Rcpp / RcppArmadillo.Я читал о том, как использовать MPI в R или вообще использовать C. Однако я не могу найти хорошую документацию о том, как использовать его в коде Rcpp / RcppArmadillo.Я вставляю ниже контрольного примера просто в качестве примера.Я хотел бы использовать MPI в цикле for внутри функции с именем mainFunction ().Буду признателен за любую помощь.

Мы уже установили openmpi в кластер, но не уверены, как это реализовать здесь.

#include <RcppArmadillo.h>
#include <omp.h>

// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::plugins(openmp)]]


using namespace std;
using namespace arma;


mat someFunction(mat &A,mat &B){

  mat C(A.n_rows,A.n_cols);
  unsigned int n = A.n_rows * A.n_cols;

#pragma omp parallel for 
  for(unsigned int i=0; i< n; i++){
     C[i] = exp(A[i])/3 + pow(A[i],-.5) + B[i];
  } 

  return C;
}


// [[Rcpp::export]]
cube mainFunction(cube &A, cube &B){

  unsigned int nsl = A.n_slices;
  cube C(A.n_rows,A.n_cols,nsl);


  for(unsigned int i=0; i< nsl; i++){
    C.slice(i) = someFunction(A.slice(i),B.slice(i));
  }

  return C;
}
...