将MPI与Rcpp和RcppArmadillo一起使用

时间:2019-05-17 01:13:41

标签: r mpi openmp rcpp armadillo

我正在尝试在Rcpp / RcppArmadillo代码中使用MPI。我阅读了有关如何在R中使用MPI或通常在C中使用MPI的知识。但是,我似乎在Rcpp / RcppArmadillo代码中找不到任何有关如何使用MPI的好的文档。我只是在一个测试案例下面粘贴作为示例。我想在名为mainFunction()的函数内的for循环上使用MPI。将不胜感激。

我们已经在集群中安装了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;
}

0 个答案:

没有答案