From duncan at wald.ucdavis.edu  Mon Nov  7 22:35:22 2005
From: duncan at wald.ucdavis.edu (Duncan Temple Lang)
Date: Mon, 07 Nov 2005 13:35:22 -0800
Subject: [Rd] R thread safe
In-Reply-To: <1131389848.436fa39855a52@webmail.unibas.ch>
References: <1131389848.436fa39855a52@webmail.unibas.ch>
Message-ID: <436FC89A.1060000@wald.ucdavis.edu>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



R is not yet thread safe.
We are working on it, and I hope to make some progress before
the end of the year.  (This one even!)

 D.


Olaf.Schenk at unibas.ch wrote:
> 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);
>        omp_init_lock(&lck);
> #pragma omp parallel for default(none) private(i, alocal) shared(list,
> lck,rho, ans, n, expr)
>        for(i = 0; i < n; i++) {
> 
>           omp_set_lock(&lck);
>              PROTECT(alocal = allocVector(VECSXP, 1));
>              alocal = allocVector(VECSXP, 1);
>              defineVar(install("x"), VECTOR_ELT(list, i), rho);
>           omp_unset_lock(&lck);
> 
>           /* do computational kernel in parallel */
>           alocal = eval(expr, rho);
> 
>           omp_set_lock(&lck);
>              SET_VECTOR_ELT(ans, i, alocal);
>              UNPROTECT(1);
>           omp_unset_lock(&lck);
> 
>        }
>        setAttrib(ans, R_NamesSymbol, getAttrib(list, R_NamesSymbol));
>        UNPROTECT(1);
>        return(ans);
> }
> 
> ***********
> 
> 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,
> Olaf
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

- --
Duncan Temple Lang                duncan at wald.ucdavis.edu
Department of Statistics          work:  (530) 752-4782
371 Kerr Hall                     fax:   (530) 752-7099
One Shields Ave.
University of California at Davis
Davis, CA 95616, USA
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDb8ia9p/Jzwa2QP4RAjHoAJ9/VVL5DIRwE4tYjwM+0oQPKjmQ4QCeNzFa
lX6CVF5yVQZPNSE3bZPr7q4=
=hsjc
-----END PGP SIGNATURE-----



[Rd] R thread safe
Duncan Temple Lang