MRG8: Random Number Generation for the Exascale Era

Pseudo random number generators (PRNGs) are crucial for numerous applications in HPC ranging from molecular dynamics to quantum chemistry, and hydrodynamics. These applications require high throughput and good statistical quality from the PRNGs - especially for parallel computing where long pseudo-random sequences can be exhausted rapidly. Although a handful PRNGs have been adapted to parallel computing, they do not fully exploit the features of wide-SIMD many-core processors and GPU accelerators in modern supercomputers. Multiple Recursive Generators (MRGs) are a family of random number generators based on higher order recursion, which provide statistically high-quality random number sequences with extremely long-recurrence lengths, and deterministic jump-ahead for effective parallelism. We reformulate the MRG8 (8th-order recursive implementation) for Intel's KNL and NVIDIA's P100 GPU - named MRG8-AVX512 and MRG8-GPU respectively. Our optimized implementation generates the same random number sequence as the original well-characterized MRG8. We evaluated MRG8-AVX512 and MRG8-GPU together with vender tuned random number generators for Intel KNL and GPU. MRG8-AVX512 achieves a substantial 69% improvement compared to Intel's MKL, and MRG8-GPU shows a maximum 3.36x speedup compared to NVIDIA's cuRAND library.

[1]  David Thomas,et al.  The Art in Computer Programming , 2001 .

[2]  Takuji Nishimura,et al.  Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator , 1998, TOMC.

[3]  Harald Niederreiter,et al.  Random number generation and Quasi-Monte Carlo methods , 1992, CBMS-NSF regional conference series in applied mathematics.

[4]  Pierre L'Ecuyer,et al.  TestU01: A C library for empirical testing of random number generators , 2006, TOMS.

[5]  Donald E. Knuth,et al.  The art of computer programming. Vol.2: Seminumerical algorithms , 1981 .

[6]  Craig B. Borkowf,et al.  Random Number Generation and Monte Carlo Methods , 2000, Technometrics.

[7]  Jerome Spanier,et al.  Dynamic creation of pseudorandom number generators , 2000 .

[8]  Pierre L'Ecuyer,et al.  Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators , 1999, Oper. Res..

[9]  R. Needs,et al.  Quantum Monte Carlo simulations of solids , 2001 .

[10]  K. Fiedler,et al.  Monte Carlo Methods in Ab Initio Quantum Chemistry , 1995 .

[11]  Lev N. Shchur,et al.  PRAND: GPU accelerated parallel random number generation library: Using most reliable algorithms and applying parallelism of modern GPUs and CPUs , 2013, Comput. Phys. Commun..

[12]  Makoto Matsumoto,et al.  SIMD-Oriented Fast Mersenne Twister: a 128-bit Pseudorandom Number Generator , 2008 .

[13]  Pierre L'Ecuyer,et al.  Random numbers for parallel computers: Requirements and methods, with emphasis on GPUs , 2015, Math. Comput. Simul..

[14]  P. Hellekalek Good random number generators are (not so) easy to find , 1998 .

[15]  Mark A. Moraes,et al.  Parallel random numbers: As easy as 1, 2, 3 , 2011, 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[16]  Jason Wittenberg,et al.  Clarify: Software for Interpreting and Presenting Statistical Results , 2003 .

[17]  Pierre L'Ecuyer,et al.  Combined Multiple Recursive Random Number Generators , 1995, Oper. Res..

[18]  Mutsuo Saito,et al.  Variants of Mersenne Twister Suitable for Graphic Processors , 2010, TOMS.

[19]  Kenichi Miura,et al.  Random number generators tested on quantum Monte Carlo simulations , 2010, J. Comput. Chem..

[20]  Lih-Yuan Deng,et al.  Developments in pseudo‐random number generators , 2017 .