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.


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


[1] Anderson, N; Titterington, D, Cross correlation between simultaneously generated sequences of pseudo-random uniform deviates, Stat Comput, 16, 11-15, (1970)
[2] Bock, R; Lieberman, M, Fitting a response model for \(n\) dichotomously scored items, Psychometrika, 35, 179-197, (1970)
[3] Cenacchi, G; Matteis, A, Pseudo-random numbers for comparative Monte Carlo calculations, Numer Math, 16, 11-15, (1970) · Zbl 0187.12802
[4] Chapman B, Jost G, van der Pas R (2001) Using OpenMP: portable shared memory parallel programming. MIT Press, Cambridge
[5] Matteis, A; Pagnutti, S, Parallelization of random number generators and long-range correlation, Numer Math, 53, 595-608, (1988) · Zbl 0633.65006
[6] Matteis, A; Pagnutti, S, Long-range correlation in linear and non-linear random number generators, Parallel Comput, 14, 207-210, (1990) · Zbl 0712.65005
[7] Etacher, K, On the CRAY-system random number generator, Simulation, 72, 163-169, (1999) · Zbl 1036.68633
[8] Eugster, MJA; Knaus, J; Porzelius, C; Schmidberger, M; Vicedo, E, Hands-on tutorial for parallel computing with R, Comput Stat, 26, 219-239, (2011) · 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, Efficient jump ahead for \({\cal F}_2\)-linear random number generators, INFORMS J Comput, 20, 385-390, (2008) · 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, Random numbers for simulation, Comm ACM, 33, 85-98, (1990)
[14] L’Ecuyer, P, Combined multiple recursive random number generators, Oper Res, 44, 816-822, (1996) · Zbl 0904.65004
[15] L’Ecuyer, P, Good parameters and implementation for combined multiple recursive random number generators, Oper Res, 47, 159-164, (1999) · Zbl 1042.65505
[16] L’Ecuyer, P; Simard, R, Testu01: A C library for empirical testing of random number generators, ACM Trans Math Softw, 33, 22, (2007) · Zbl 1365.65008
[17] L’Ecuyer, P; Tezuka, S, Structural properties for two classes of random number generators, Math Comput, 57, 735-746, (1991) · 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, Algorithm 806: sprng: A scalable library for pseudorandom number generation, ACM Trans Math Softw, 26, 436-461, (2000)
[22] Matsumoto, M; Nishimura, T, Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator, ACM Trans Model. Comput. Simul., 8, 3-30, (1998) · Zbl 0917.65005
[23] Matsumoto, M; Wada, I; Kuramoto, A; Ashihara, H, Common defects in initialization of pseudorandom number generators, ACM Trans Model Comput Simul, 17, 15, (2007) · 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, State of the art in parallel computing with R, J Stat Softw, 31, 1, (2009)
[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. It attempts to reflect the references listed in the original paper as accurately as possible without claiming the completeness or perfect precision of the matching.