Hi.  I would like to be able to use OpenMP in conjunction with Rcpp.  Here's is 
an example of the kind of thing I want to do:

#include <Rcpp.h>

RcppExport SEXP omptest (SEXP X) {

  BEGIN_RCPP

 Rcpp::NumericVector Y = X;
 int n = Y.size();
 Rcpp::NumericVector Z(n);
 int i;
 double a;
 
#pragma omp parallel
 {
#pragma omp for
 for (i=0; i<n; i++) {
   a = sqrt(Y(i));
   Z(i) = a;
 }
 }
 return Z;

 END_RCPP

}

But I am getting a compiler error in certain situations.  Here is an example of 
the compiler command I am using (of course, there are other calls to the 
linker, etc, but this is where the error is)


g++ -O1 -arch x86_64 -fopenmp -g -Wall 
-I/Library/Frameworks/R.framework/Resources/include 
-I/Library/Frameworks/R.framework/Resources/include/x86_64  
-I/usr/local/include 
-I/Library/Frameworks/R.framework/Resources/library/Rcpp/include -c 
Rcpp_omp.cpp -o Rcpp_omp.o

If I execute this command, I get the following error:

Rcpp_omp.cpp: In function ‘void omptest.omp_fn.0(void*)’:
Rcpp_omp.cpp:13: internal compiler error: in get_expr_operands, at 
tree-ssa-operands.c:2093
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.

(note that in the "real" project, the compiler actually segfaults, but let's 
keep this simple for now).

Now, if I comment out the omp pragmas, no problem.  It all works.
If I change optimizations to -O0, no problem, it all works (although this is 
not really a good solution.  Higher-level optimizations also crash.)
If I remove the -fopenmp option, no problem, it all works.
If I comment out the BEGIN_RCPP and END_RCPP macros, no problem, it all works.

It's this last point, the error-catching macros, that might be the problem.  
Note that they are not inside the parallel section of the code.  But it appears 
that the intersection of the error-catching macros, compiler optimizations, and 
OpenMP are causing some kind of problem.

And incidentally, I am using g++ version 4.2.1 on a Mac Pro running OSX 10.6.6.

Any thoughts?

Thanks,

Michael











-------------------------------------------
Michael Braun
Homer A. Burnell (1928) Career Development Professor, 
        and Assistant Professor of Management Science (Marketing Group)
MIT Sloan School of Management
100 Main St.., E62-535
Cambridge, MA 02139
bra...@mit.edu
617-253-3436


_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to