Variables 使用openmp在Rcpp中设置OMP_位置选项

Variables 使用openmp在Rcpp中设置OMP_位置选项,variables,openmp,rcpp,environment,Variables,Openmp,Rcpp,Environment,谁能告诉我在Rcpp中设置omp_位置选项的正确方法是什么?我想将选项设置为“OMP_PLACES=cores”,非常感谢! 我的函数如下所示: // [[Rcpp::plugins(openmp)]] // [[Rcpp::export]] Rcpp::List func1(const arma::vec & x, const arma::vec & y){ #pragma omp parallel proc_bind(spread) num_threads(2)

谁能告诉我在Rcpp中设置omp_位置选项的正确方法是什么?我想将选项设置为“OMP_PLACES=cores”,非常感谢! 我的函数如下所示:

// [[Rcpp::plugins(openmp)]]
// [[Rcpp::export]]
Rcpp::List func1(const arma::vec & x, const arma::vec & y){

    #pragma omp parallel proc_bind(spread) num_threads(2) 
    {
      #pragma omp for  
      for(int i = 0; i < n; i++){    // for-loop 1
        some calculation
      }
    
      #pragma omp for 
      for(int i = 0; i < n; i++){   // for-loop 2
        some calculation
      }
    }

return Rcpp::List::create(Rcpp::Named("variable 1") = v1,
                          Rcpp::Named("variable 2") = v2);
}
/[[Rcpp::plugins(openmp)]]
//[[Rcpp::导出]]
Rcpp::List func1(常量arma::vec&x,常量arma::vec&y){
#pragma omp并行进程绑定(扩展)num_线程(2)
{
#pragma omp for
for(int i=0;i
OMP\u位置
似乎与cpu关联固定有关。就我所知,这不是R让你做的。@DirkEddelbuettel谢谢你的快速解释!我做了一些搜索,但就是找不到答案。很高兴知道这在R中是不可行的。
OMP\u PLACES
是一个环境变量。它必须在并行可执行文件的环境中设置,在您的情况下,它就是R解释器本身。请注意,即使您使用“setenv”的任何R等价物,您也无法轻松确定它是否会产生任何效果,由于OpenMP实现不必在每次启动并行区域时都重新读取envirable。相反,它会在OpenMP启动时对其进行一次解析,因此,如果在R中的某个地方隐藏了其他OpenMP调用,并且这种情况发生在任何代码执行之前,那么更改代码中令人羡慕的内容将不会有任何效果。
OMP\u PLACES
似乎与cpu关联固定有关。就我所知,这不是R让你做的。@DirkEddelbuettel谢谢你的快速解释!我做了一些搜索,但就是找不到答案。很高兴知道这在R中是不可行的。
OMP\u PLACES
是一个环境变量。它必须在并行可执行文件的环境中设置,在您的情况下,它就是R解释器本身。请注意,即使您使用“setenv”的任何R等价物,您也无法轻松确定它是否会产生任何效果,由于OpenMP实现不必在每次启动并行区域时都重新读取envirable。相反,它会在OpenMP启动时解析它一次,因此,如果在R中的某个地方隐藏了其他OpenMP调用,并且这发生在任何代码执行之前,那么更改代码中令人羡慕的内容将没有任何效果。