Dear R-help, 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