Parallel R expression evaluations
On Oct 16, 2013, at 9:57 AM, JaiReddy wrote:
Hi all, I am using R-3.0.1 under Linux platform to embed R into my C++ code. I am facing an error while executing more than 1 R-expressions parallelly.
R is not thread-safe so you cannot execute any API calls in parallel. Also you can use the embedded init only once. If you break any of these rules, the behavior is undefined (and everything comes down crashing). Cheers, Simon
I am executing round(X) and abs(X) parallelly on a set of 50 input rows
which resulted in segmentation fault after getting the following errors.
Error: unprotect_ptr: pointer not found
Error: argument to 'findVar' is not an environment
I am using the following code snippet for initializing R, parsing and
evaluation of R expression
// For initialization
int res= Rf_initEmbeddedR(R_argc, (char**)R_argv);
// For parsing and evaluation
SEXP cmd1= Rf_mkChar(rscript);
SEXP cmdSexp, cmdexpr, sresult = R_NilValue;
ParseStatus status;
R_len_t i=0;
PROTECT(cmdSexp = Rf_allocVector(STRSXP, 1));
SET_STRING_ELT(cmdSexp, 0, cmd1);
// parsing vector for R expressions
cmdexpr = PROTECT(R_ParseVector(cmdSexp, -1, &status, R_NilValue));
if (status != PARSE_OK) {
UNPROTECT(2);
// error handling
return;
}
for(i = 0; i < Rf_length(cmdexpr); i++)
{
int error;
sresult = R_tryEval(VECTOR_ELT(cmdexpr, i), R_GlobalEnv, &error); // R
expression evaluation
if(error) // checking for error
{
// error handling
return;
}
}
UNPROTECT(2);
I wonder if R supports parallel evaluations within a single session. I have
seen parallel evaluations of R using Rserve package. As I am trying to
overcome the overhead (using Rserve) in creating new connection for each
evaluation, here I am trying using embeded R.
I tried Rf_endEmbeddedR each time after one evaluation and initializing R
for the next set of evaluation. Even that did't work.
Please suggest me possible solution if any.
Thanks in advance.
Jai
--
View this message in context: http://r.789695.n4.nabble.com/Parallel-R-expression-evaluations-tp4678352.html
Sent from the R devel mailing list archive at Nabble.com.
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel