×

Using rngstreams for parallel random number generation in C++ and R. (English) Zbl 1306.65078

Summary: The RngStreams software package provides one viable solution to the problem of creating independent random number streams for simulations in parallel processing environments. Techniques are presented for effectively using RngStreams with C++ programs that are parallelized via OpenMP or MPI. Ways to access the backbone generator from RngStreams in R through the parallel and rstream packages are also described. The ideas in the paper are illustrated with both a simple running example and a Monte Carlo integration application.

MSC:

65C10 Random number generation in numerical analysis
62-08 Computational methods for problems pertaining to statistics
PDFBibTeX XMLCite
Full Text: DOI arXiv

References:

[1] Anderson N, Titterington D (1970) Cross correlation between simultaneously generated sequences of pseudo-random uniform deviates. Stat Comput 16:11-15
[2] Bock R, Lieberman M (1970) Fitting a response model for \[n\] n dichotomously scored items. Psychometrika 35:179-197
[3] Cenacchi G, De Matteis A (1970) Pseudo-random numbers for comparative monte carlo calculations. Numer Math 16:11-15 · Zbl 0187.12802
[4] Chapman B, Jost G, van der Pas R (2001) Using OpenMP: portable shared memory parallel programming. MIT Press, Cambridge
[5] De Matteis A, Pagnutti S (1988) Parallelization of random number generators and long-range correlation. Numer Math 53:595-608 · Zbl 0633.65006
[6] De Matteis A, Pagnutti S (1990) Long-range correlation in linear and non-linear random number generators. Parallel Comput 14:207-210 · Zbl 0712.65005
[7] Etacher K (1999) On the CRAY-system random number generator. Simulation 72:163-169 · Zbl 1036.68633
[8] Eugster MJA, Knaus J, Porzelius C, Schmidberger M, Vicedo E (2011) Hands-on tutorial for parallel computing with R. Comput Stat 26:219-239 · Zbl 1304.65030
[9] Gentle J (2003) Random number generation and Monte Carlo methods. Springer, New York · Zbl 1028.65004
[10] Haramoto H, Matsumoto M, Nishimura T, Panneton F, L’Ecuyer P (2008) Efficient jump ahead for \[{\cal F}_2\] F2-linear random number generators. INFORMS J Comput 20:385-390 · Zbl 1243.65006
[11] Hechenleitner B, Entacher C (2003) Pitfalls when using parallel streams in OMNeT++ simulations. In: Proceedings of inter-domain performance and simulation workshop. Salzburg, Austria, pp 11-20
[12] Hill DRC (2010) Practical distribution of random streams for stochastic high performance computing. In: International conference on high performance computing and simulation (HPCS), pp 1-8 · Zbl 1365.65008
[13] L’Ecuyer P (1990) Random numbers for simulation. Comm ACM 33:85-98
[14] L’Ecuyer P (1996) Combined multiple recursive random number generators. Oper Res 44(5):816-822 · Zbl 0904.65004
[15] L’Ecuyer P (1999) Good parameters and implementation for combined multiple recursive random number generators. Oper Res 47(1):159-164 · Zbl 1042.65505
[16] L’Ecuyer P, Simard R (2007) Testu01: A C library for empirical testing of random number generators. ACM Trans Math Softw 33(4):22 · Zbl 1365.65008
[17] L’Ecuyer P, Tezuka S (1991) Structural properties for two classes of random number generators. Math Comput 57(196):735-746 · Zbl 0748.65007
[18] L’Ecuyer P, Simard R, Chen J, Kelton W (2001) An object-oriented random-number package with many long streams and substreams. Technical report, University of Montreal. http://www.iro.umontreal.ca/ lecuyer/myftp/streams00/c++/streams4.pdf · Zbl 0712.65005
[19] Lemieux C (2009) Monte Carlo and Quasi-Monte Carlo sampling. Springer, New York · Zbl 1269.65001
[20] Leydold J (2012) rstream: streams of random numbers. http://CRAN.R-project.org/package=rstream. R package version 1.3.2
[21] Mascagni M, Srinivasan A (2000) Algorithm 806: Sprng: A scalable library for pseudorandom number generation. ACM Trans Math Softw 26(3):436-461
[22] Matsumoto M, Nishimura T (1998) Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Trans Model. Comput. Simul. 8:3-30 · Zbl 0917.65005
[23] Matsumoto M, Wada I, Kuramoto A, Ashihara H (2007) Common defects in initialization of pseudorandom number generators. ACM Trans Model Comput Simul 17(4):15 · Zbl 1390.65013
[24] Quinn M (2003) Parallel programming in C with MPI and OpenMP. McGraw Hill, New York
[25] Core Team R (2013) R: a language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. http://www.R-project.org/ · Zbl 0917.65005
[26] Rizopoulos D (2006) ltm: an R package for latent variable modelling and item response theory analyses. J Stat Softw 17(5):1-25. http://www.jstatsoft.org/v17/i05/
[27] Schmidberger M, Morgan M, Eddelbuettel D, Yu H, Tierney L, Mansmann U (2009) State of the art in parallel computing with R. J Stat Softw 31:1
[28] Tierney L, Rossini AJ, Li N, Sevcikova H (2013) Snow: simple network of workstations. http://CRAN.R-project.org/package=snow. R package version 0.3-12
[29] Urbanek S (2011) Multicore: parallel processing of R code on machines with multiple cores or CPUs. http://CRAN.R-project.org/package=multicore. R package version 0.1-7
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. In some cases that data have been complemented/enhanced by data from zbMATH Open. This attempts to reflect the references listed in the original paper as accurately as possible without claiming completeness or a perfect matching.