ShoveRand: A model-driven framework to easily generate random numbers on GP-GPU

Stochastic simulations are often sensitive to the randomness source that characterizes the statistical quality of their results. Consequently, we need highly reliable Random Number Generators (RNGs) to feed such applications. Recent developments try to shrink the computation time by using more and more General Purpose Graphics Processing Units (GP-GPUs) to speed-up stochastic simulations. Such devices bring new paral-lelization possibilities, but they also introduce new programming difficulties. Since RNGs are at the base of any stochastic simulation, they also need to be ported to GP-GPU. There is still a lack of well-designed implementations of quality-proven RNGs on GP-GPU platforms. In this paper, we introduce ShoveRand, a framework defining common rules to generate random numbers uniformly on GP-GPU. Our framework is designed to cope with any GPU-enabled development platform and to expose a straightforward interface to users. We also provide an existing RNG implementation with this framework to demonstrate its efficiency in both development and ease of use.

[1]  H Yang,et al.  Encyclopedia of Quantitative Finance , 2007 .

[2]  Pierre L'Ecuyer,et al.  An Object-Oriented Random-Number Package with Many Long Streams and Substreams , 2002, Oper. Res..

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

[4]  G. Marsaglia,et al.  A New Class of Random Number Generators , 1991 .

[5]  Rama Cont Encyclopedia of quantitative finance , 2010 .

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

[7]  George Marsaglia,et al.  A random number generator for PC's , 1990 .

[8]  David R. C. Hill,et al.  Pseudo-Random Number Generation on GP-GPU , 2011, 2011 IEEE Workshop on Principles of Advanced and Distributed Simulation.

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

[10]  Jeremy G. Siek,et al.  Concept Checking: Binding Parametric Polymorphism in C++ , 2000 .

[11]  David R. C. Hill Practical distribution of random streams for stochastic High Performance Computing , 2010, 2010 International Conference on High Performance Computing & Simulation.

[12]  Francois Panneton Construction d'ensembles de points basee sur des recurrences lineaires dans un corps fini de caracteristique 2 pour la simulation Monte Carlo et l'integration quasi-Monte Carlo , 2004 .

[13]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[14]  R. Tausworthe Random Numbers Generated by Linear Recurrence Modulo Two , 1965 .

[15]  Andrei Alexandrescu,et al.  Modern C++ Design , 2001 .

[16]  Pierre L'Ecuyer,et al.  Testing random number generators , 1992, WSC '92.