From cdetermanjr at gmail.com  Thu May 12 15:16:52 2016
From: cdetermanjr at gmail.com (Charles Determan)
Date: Thu, 12 May 2016 08:16:52 -0500
Subject: [Rd] Single-threaded aspect
In-Reply-To: <CAOKDuOitDaQgR-3ao=VG9OTX2vDNoQ4_uiJa7H6ghS=g1=HdDA@mail.gmail.com>
References: <CAKxd1KPhHhWuMF2Tbc+08uABm6gji=43PT3xTc+0-kdY6t=b2Q@mail.gmail.com>
	<CAOKDuOitDaQgR-3ao=VG9OTX2vDNoQ4_uiJa7H6ghS=g1=HdDA@mail.gmail.com>
Message-ID: <CAKxd1KMDKkaA=Q1LfUHEvH-p3uZLQitF3b-sjX7zGytoDbGgKA@mail.gmail.com>

Thanks for the replies.  Regarding the answer by Dirk, I didn't feel like I
still understood the reasoning why mclapply or foreach cannot handle XPtr
objects.  Instead of cluttering the SO question with comments I was getting
the impression that this was a limitation inherited with R objects (which
XPtr is supposed to be a proxy for an R object according to Dirk's
comment).  If this is not the case, I could repost this on Rcpp-devel
unless it could be migrated.

Regards,
Charles

On Thu, May 12, 2016 at 8:11 AM, Mark van der Loo <mark.vanderloo at gmail.com>
wrote:

> 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
Charles Determan