[Rd] R thread safe

From: <Olaf.Schenk_at_unibas.ch>
Date: Mon 07 Nov 2005 - 18:57:28 GMT

Dear R-dev,

I would like to accelerate my R computation by using parallel OpenMP compilers (e.g from Pathscale) on a 2-processor AMD server and I would like to know whether R is a tread safe library. The main kernel of the OpenMP parallelization is a C SEXP function that performs the computational routine in parallel with:

SEXP example(SEXP list, SEXP expr, SEXP rho)
       R_len_t i, n = length(list);
       SEXP ans, alocal;

       omp_lock_t lck;
       PROTECT(ans = allocVector(VECSXP, n));
       ans = allocVector(VECSXP, n);

#pragma omp parallel for default(none) private(i, alocal) shared(list, lck,rho, ans, n, expr)

       for(i = 0; i < n; i++) {

             PROTECT(alocal = allocVector(VECSXP, 1));
             alocal = allocVector(VECSXP, 1);
             defineVar(install("x"), VECTOR_ELT(list, i), rho);

          /* do computational kernel in parallel */
          alocal = eval(expr, rho);

             SET_VECTOR_ELT(ans, i, alocal);

       setAttrib(ans, R_NamesSymbol, getAttrib(list, R_NamesSymbol));


The code works fine using one thread and breaks currently down with 2 threads. I am using a recent R distribution and the complete R code is compile with "-openmp" and the Pathscale compiler suite.

Thanks in advance,

R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Nov 08 06:48:40 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:33 GMT