Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

2018-04-16 Thread Murray Efford
Thanks for all these good suggestions. StatsLib as suggested by Yixuan
seems especially straightforward. I may yet find that dpois and dbinom from
R are threadsafe.
Murray

On Tue, Apr 17, 2018 at 5:34 AM, Balamuta, James Joseph <
balam...@illinois.edu> wrote:

> Greetings and Salutations,
>
>
>
> There is also the boost header libraries that you can use:
>
>
>
> https://www.boost.org/doc/libs/1_67_0/doc/html/boost_random.html
>
>
>
> Gallery example: http://gallery.rcpp.org/articles/timing-normal-rngs/
>
>
>
> If you need parallel draws, see the sitmo engine:
> https://github.com/coatless/sitmo
>
>
>
> Also, you may wish to consider the rTRNG library: https://github.com/
> miraisolutions/rTRNG
>
>
>
> Sincerely,
>
>
>
> JJB
>
>
>
> *From: *<rcpp-devel-boun...@lists.r-forge.r-project.org> on behalf of
> Yixuan Qiu <yixu...@gmail.com>
> *Date: *Monday, April 16, 2018 at 11:53 AM
> *To: *Murray Efford <murray.eff...@gmail.com>
> *Cc: *"rcpp-devel@lists.r-forge.r-project.org" <
> rcpp-devel@lists.r-forge.r-project.org>
> *Subject: *Re: [Rcpp-devel] Distribution functions threadsafe in
> RcppParallel?
>
>
>
> For your information, here is a header-only library for distribution
> functions: https://github.com/kthohr/stats
>
> The API seems to be designed to mimic the R API.
>
> Best,
>
> Yixuan
>
>
>
> 2018-04-15 23:56 GMT-04:00 Murray Efford <murray.eff...@gmail.com>:
>
> Thanks. This is all happening inside a package for CRAN, so I would rather
> avoid more complexity and potential platform-dependence, but I also cannot
> afford for it to break unpredictably (or otherwise).
>
> Murray
>
>
>
> On Mon, Apr 16, 2018 at 3:33 PM, Dirk Eddelbuettel <e...@debian.org> wrote:
>
>
> On 16 April 2018 at 13:41, Murray Efford wrote:
> | I read in the RcppParallel blurb "The code that you write within parallel
> | workers should not call the R or Rcpp API in any fashion", which is
> | admirably clear. However, it leaves me without threadsafe access to
> | distribution functions (dpois, dbinom etc.). In practice, so far, these R
> | API calls seem to work for me, but can they be trusted? Is there an
> | alternative?
>
> That's a fair question. They may work, as they are also exposed / available
> via the standalone R math library (see Writing R Extensions).
>
> As such, they may not required memory allocations or other interactions
> with
> the R process and hence "not call R ... in any fashion" per the above.
>
> But we can't say for sure. If you want to be safe, maybe stick to
> equivalent functions from a non-R source: C++11, Boost, ...
>
> Dirk
>
>
> | (It seems this question must have arisen before, but I haven't found an
> | answer)
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
>
>
>
>
> ___
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
>
>
>
> --
>
> Yixuan Qiu <yixu...@gmail.com <yixuan@cos.name>>
> Department of Statistics,
> Purdue University
>
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

2018-04-16 Thread Balamuta, James Joseph
Greetings and Salutations,

There is also the boost header libraries that you can use:

https://www.boost.org/doc/libs/1_67_0/doc/html/boost_random.html

Gallery example: http://gallery.rcpp.org/articles/timing-normal-rngs/

If you need parallel draws, see the sitmo engine:  
https://github.com/coatless/sitmo

Also, you may wish to consider the rTRNG library: 
https://github.com/miraisolutions/rTRNG

Sincerely,

JJB

From: <rcpp-devel-boun...@lists.r-forge.r-project.org> on behalf of Yixuan Qiu 
<yixu...@gmail.com>
Date: Monday, April 16, 2018 at 11:53 AM
To: Murray Efford <murray.eff...@gmail.com>
Cc: "rcpp-devel@lists.r-forge.r-project.org" 
<rcpp-devel@lists.r-forge.r-project.org>
Subject: Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

For your information, here is a header-only library for distribution functions: 
https://github.com/kthohr/stats
The API seems to be designed to mimic the R API.

Best,
Yixuan

2018-04-15 23:56 GMT-04:00 Murray Efford 
<murray.eff...@gmail.com<mailto:murray.eff...@gmail.com>>:
Thanks. This is all happening inside a package for CRAN, so I would rather 
avoid more complexity and potential platform-dependence, but I also cannot 
afford for it to break unpredictably (or otherwise).
Murray

On Mon, Apr 16, 2018 at 3:33 PM, Dirk Eddelbuettel 
<e...@debian.org<mailto:e...@debian.org>> wrote:

On 16 April 2018 at 13:41, Murray Efford wrote:
| I read in the RcppParallel blurb "The code that you write within parallel
| workers should not call the R or Rcpp API in any fashion", which is
| admirably clear. However, it leaves me without threadsafe access to
| distribution functions (dpois, dbinom etc.). In practice, so far, these R
| API calls seem to work for me, but can they be trusted? Is there an
| alternative?

That's a fair question. They may work, as they are also exposed / available
via the standalone R math library (see Writing R Extensions).

As such, they may not required memory allocations or other interactions with
the R process and hence "not call R ... in any fashion" per the above.

But we can't say for sure. If you want to be safe, maybe stick to
equivalent functions from a non-R source: C++11, Boost, ...

Dirk

| (It seems this question must have arisen before, but I haven't found an
| answer)
--
http://dirk.eddelbuettel.com | @eddelbuettel | 
e...@debian.org<mailto:e...@debian.org>


___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org<mailto:Rcpp-devel@lists.r-forge.r-project.org>
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel



--
Yixuan Qiu <yixu...@gmail.com<mailto:yixuan@cos.name>>
Department of Statistics,
Purdue University
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

2018-04-16 Thread Yixuan Qiu
For your information, here is a header-only library for distribution
functions: https://github.com/kthohr/stats

The API seems to be designed to mimic the R API.


Best,
Yixuan

2018-04-15 23:56 GMT-04:00 Murray Efford :

> Thanks. This is all happening inside a package for CRAN, so I would rather
> avoid more complexity and potential platform-dependence, but I also cannot
> afford for it to break unpredictably (or otherwise).
> Murray
>
> On Mon, Apr 16, 2018 at 3:33 PM, Dirk Eddelbuettel  wrote:
>
>>
>> On 16 April 2018 at 13:41, Murray Efford wrote:
>> | I read in the RcppParallel blurb "The code that you write within
>> parallel
>> | workers should not call the R or Rcpp API in any fashion", which is
>> | admirably clear. However, it leaves me without threadsafe access to
>> | distribution functions (dpois, dbinom etc.). In practice, so far, these
>> R
>> | API calls seem to work for me, but can they be trusted? Is there an
>> | alternative?
>>
>> That's a fair question. They may work, as they are also exposed /
>> available
>> via the standalone R math library (see Writing R Extensions).
>>
>> As such, they may not required memory allocations or other interactions
>> with
>> the R process and hence "not call R ... in any fashion" per the above.
>>
>> But we can't say for sure. If you want to be safe, maybe stick to
>> equivalent functions from a non-R source: C++11, Boost, ...
>>
>> Dirk
>>
>> | (It seems this question must have arisen before, but I haven't found an
>> | answer)
>>
>> --
>> http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
>>
>
>
> ___
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>



-- 
Yixuan Qiu >
Department of Statistics,
Purdue University
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

2018-04-16 Thread JJ Allaire
Here it's recommended that you simply read the source code to figure out if
memory allocations or stack checking are done:
https://rcppcore.github.io/RcppParallel/#api_restrictions

On Sun, Apr 15, 2018 at 11:56 PM, Murray Efford 
wrote:

> Thanks. This is all happening inside a package for CRAN, so I would rather
> avoid more complexity and potential platform-dependence, but I also cannot
> afford for it to break unpredictably (or otherwise).
> Murray
>
> On Mon, Apr 16, 2018 at 3:33 PM, Dirk Eddelbuettel  wrote:
>
>>
>> On 16 April 2018 at 13:41, Murray Efford wrote:
>> | I read in the RcppParallel blurb "The code that you write within
>> parallel
>> | workers should not call the R or Rcpp API in any fashion", which is
>> | admirably clear. However, it leaves me without threadsafe access to
>> | distribution functions (dpois, dbinom etc.). In practice, so far, these
>> R
>> | API calls seem to work for me, but can they be trusted? Is there an
>> | alternative?
>>
>> That's a fair question. They may work, as they are also exposed /
>> available
>> via the standalone R math library (see Writing R Extensions).
>>
>> As such, they may not required memory allocations or other interactions
>> with
>> the R process and hence "not call R ... in any fashion" per the above.
>>
>> But we can't say for sure. If you want to be safe, maybe stick to
>> equivalent functions from a non-R source: C++11, Boost, ...
>>
>> Dirk
>>
>> | (It seems this question must have arisen before, but I haven't found an
>> | answer)
>>
>> --
>> http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
>>
>
>
> ___
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

2018-04-15 Thread Murray Efford
Thanks. This is all happening inside a package for CRAN, so I would rather
avoid more complexity and potential platform-dependence, but I also cannot
afford for it to break unpredictably (or otherwise).
Murray

On Mon, Apr 16, 2018 at 3:33 PM, Dirk Eddelbuettel  wrote:

>
> On 16 April 2018 at 13:41, Murray Efford wrote:
> | I read in the RcppParallel blurb "The code that you write within parallel
> | workers should not call the R or Rcpp API in any fashion", which is
> | admirably clear. However, it leaves me without threadsafe access to
> | distribution functions (dpois, dbinom etc.). In practice, so far, these R
> | API calls seem to work for me, but can they be trusted? Is there an
> | alternative?
>
> That's a fair question. They may work, as they are also exposed / available
> via the standalone R math library (see Writing R Extensions).
>
> As such, they may not required memory allocations or other interactions
> with
> the R process and hence "not call R ... in any fashion" per the above.
>
> But we can't say for sure. If you want to be safe, maybe stick to
> equivalent functions from a non-R source: C++11, Boost, ...
>
> Dirk
>
> | (It seems this question must have arisen before, but I haven't found an
> | answer)
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
>
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Re: [Rcpp-devel] Distribution functions threadsafe in RcppParallel?

2018-04-15 Thread Dirk Eddelbuettel

On 16 April 2018 at 13:41, Murray Efford wrote:
| I read in the RcppParallel blurb "The code that you write within parallel
| workers should not call the R or Rcpp API in any fashion", which is
| admirably clear. However, it leaves me without threadsafe access to
| distribution functions (dpois, dbinom etc.). In practice, so far, these R
| API calls seem to work for me, but can they be trusted? Is there an
| alternative?

That's a fair question. They may work, as they are also exposed / available
via the standalone R math library (see Writing R Extensions).

As such, they may not required memory allocations or other interactions with
the R process and hence "not call R ... in any fashion" per the above. 

But we can't say for sure. If you want to be safe, maybe stick to 
equivalent functions from a non-R source: C++11, Boost, ...  

Dirk

| (It seems this question must have arisen before, but I haven't found an
| answer)

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel