From mark.vanderloo at gmail.com  Thu May 12 15:11:32 2016
From: mark.vanderloo at gmail.com (Mark van der Loo)
Date: Thu, 12 May 2016 13:11:32 +0000
Subject: [Rd] Single-threaded aspect
In-Reply-To: <CAKxd1KPhHhWuMF2Tbc+08uABm6gji=43PT3xTc+0-kdY6t=b2Q@mail.gmail.com>
References: <CAKxd1KPhHhWuMF2Tbc+08uABm6gji=43PT3xTc+0-kdY6t=b2Q@mail.gmail.com>
Message-ID: <CAOKDuOitDaQgR-3ao=VG9OTX2vDNoQ4_uiJa7H6ghS=g1=HdDA@mail.gmail.com>

Charles,

1. Perhaps this question is better directed at the R-help or
R-pacakge-devel mailinglist.

2. It basically means that R itself can only evaluate one R expression at
the time.

The parallel package circumvents this by starting multiple R-sessions and
dividing workload.

Compiled code called by R (such as C++ code through RCpp or C-code through
base R's interface) can execute multi-threaded code for internal purposes,
using e.g. openMP. A limitation is that compiled code cannot call R's C API
from multiple threads (in many cases). For example, it is not thread-safe
to create R-variables from multiple threads running in C. (R's variable
administration is such that the order of (un)making them from compiled code
matters).

I am not very savvy on Rcpp or XPtr objects, but it appears that Dirk
provided answers about that in your SO-question.

Best,
Mark










Op do 12 mei 2016 om 14:46 schreef Charles Determan <cdetermanjr at gmail.com>:

> R Developers,
>
> Could someone help explain what it means that R is single threaded?  I am
> trying to understand what is actually going on inside R when users want to
> parallelize code.  For example, using mclapply or foreach (with some
> backend) somehow allows users to benefit from multiple CPUs.
>
> Similarly there is the RcppParallel package for RMatrix/RVector objects.
> But none of these address the general XPtr objects in Rcpp.  Some readers
> here may recognize my question on SO (
>
> http://stackoverflow.com/questions/37167479/rcpp-parallelize-functions-that-return-xptr
> )
> where I was curious about parallel calls to C++/Rcpp functions that return
> XPtr objects.  I am being a little more persistent here as this limitation
> provides a very hard stop on the development on one of my packages that
> heavily uses XPtr objects.  It's not meant to be a criticism or intended to
> be rude, I just want to fully understand.
>
> I am willing to accept that it may be impossible currently but I want to at
> least understand why it is impossible so I can explain to future users why
> parallel functionality is not available.  Which just echos my original
> question, what does it mean that R is single threaded?
>
> Kind Regards,
> Charles
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]



[Rd] Single-threaded aspect
Mark van der Loo