[R-pkg-devel] Multi-threaded C with R's RNG

2015-11-28 Thread Tom Snijders
On Fri, 27 Nov 2015 19:48:04 +0100, Guillaume Chapron 
carnivorescie...@gmail.com wrote:



| Has anyone written a package with a C code that uses R's RNG but in a 
multi-threaded way (e.g. to parallelize Monte Carlo simulations)? I do not have 
the knowledge to figure out myself how to solved this and would need to see an 
example.



This is done in RSiena, using the package parallel. The programming was done by 
Ruth Ripley. There is some documentation in the package RSienaTest in 
\doc\RSIENAspec.tex and \doc\RSienaDeveloper.tex (search in these files for 
'processes'); RSienaTest is not at CRAN but can be obtained from 
http://r-forge.r-project.org/R/?group_id=461; with respect to this use of 
random number streams, RSiena and RSienaTest are identical.



Best wishes,

Tom

Tom A.B. Snijders
Professor of Statistics and Methodology
Dept. of Sociology, University of Groningen
Emeritus Fellow, Nuffield College, University of Oxford
Associate Member, Dept. of Statistics, University of Oxford
http://www.stats.ox.ac.uk/~snijders/


[[alternative HTML version deleted]]

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


Re: [R-pkg-devel] Multi-threaded C with R's RNG

2015-11-28 Thread Dirk Eddelbuettel

On 28 November 2015 at 13:40, Tom Snijders wrote:
| On Fri, 27 Nov 2015 19:48:04 +0100, Guillaume Chapron 
carnivorescie...@gmail.com wrote:
| 
| 
| 
| | Has anyone written a package with a C code that uses R's RNG but in a 
multi-threaded way (e.g. to parallelize Monte Carlo simulations)? I do not have 
the knowledge to figure out myself how to solved this and would need to see an 
example.
| 
| 
| 
| This is done in RSiena, using the package parallel. The programming was done 
by Ruth Ripley. There is some documentation in the package RSienaTest in 
\doc\RSIENAspec.tex and \doc\RSienaDeveloper.tex (search in these files for 
'processes'); RSienaTest is not at CRAN but can be obtained from 
http://r-forge.r-project.org/R/?group_id=461; with respect to this use of 
random number streams, RSiena and RSienaTest are identical.

I just glanced at its Random.h and Random.cpp.  One could split hairs and say
that its use of unif_rand() and subsequent _modifications within RSiena_
itself keep the calculation away from R's core.

See Writing R Extensions and the difference between using the RNG via
unif_rand (as also discussed in using the optional external math library that
buildable from R sources) and using the full-blown d/p/q/r functions.
Presumably when people ask for 'R random numbers in streams' they want the
full richness of the various distributions available for random draws.

But your point is well taken: the basic uniform sample can be accessed, and
hence be seeded from R before calling.   More complicated (parallel) setup
may still require extrade code.

There are a few CRAN packages doing that.  Too bad we don't have a nice
survey paper.  I could do with one now...

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

__
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel