Я пытаюсь использовать 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;
}