Efficient Parallel CUDA Random Number Generator on NVIDIA GPUs

• Journal title : Journal of KIISE
• Volume 42, Issue 12,  2015, pp.1467-1473
• Publisher : Korean Institute of Information Scientists and Engineers
• DOI : 10.5626/JOK.2015.42.12.1467
Title & Authors
Efficient Parallel CUDA Random Number Generator on NVIDIA GPUs
Kim, Youngtae; Hwang, Gyuhyeon;

Abstract
In this paper, we implemented a parallel random number generation program on GPU's, which are known for high performance computing, using LCG (Linear Congruential Generator). Random numbers are important in all fields requiring the use of randomness, and LCG is one of the most widely used methods for the generation of pseudo-random numbers. We explained the parallel program using the NVIDIA CUDA model and MPI(Message Passing Interface) and showed uniform distribution and performance results. We also used a Monte Carlo algorithm to calculate pi($\small{{\pi}}$) comparing the parallel random number generator with cuRAND, which is a CUDA library function, and showed that our program is much more efficient. Finally we compared performance results using multi-GPU's with those of ideal speedups.
Keywords
random number;linear congruential generator;CUDA;GPU;MPI;
Language
Korean
Cited by
References
1.
A. Sheldon, A first course in probability, Pearson Education India, 2002.

2.
C. Dutang, and D Wuertz, A note on random number generation, 2009.

3.
S. Mohanty, A. K. Mohanty, and F. Carminati, "Efficient pseudo-random number generation for monte-carlo simulations using graphic processors," Journal of Physics: Conference Series. IOP Publishing, Vol. 368, No. 1, 2012.

4.
W. B. Langdon, "A fast high quality pseudo random number generator for NVIDIA CUDA," Proc. of the 11th Annual Conference Companion on Genetic and Evolutionary Computation Conference: Late Breaking Papers. ACM, 2009.

5.
M. Manssen, M. Weigel, and A. K. Hartmann1, "Random number generators for massively parallel simulations on GPU," The European Physical Journal Special Topics, Vol. 210, No. 1, pp. 53-71, 2012.

6.
D. Kirk, "NVIDIA CUDA software and GPU parallel computing architecture," ISMM, Vol. 7, 2007.

7.
P. S. Pacheco, Parallel Programming with MPI, Morgan Kaufmann, 2001.

8.
NVIDIA, CUDA, Compute United Device Architecture Reference Manual Version 5.0, NVIDIA Corporation, 2012.

9.
D. E. Knuth, The Art of Computer Programming Volume 2 (3rd ed.): Seminumerical Algorithms, Addison-Wesley, Boston, MA, 1997.

10.
G. Fox, M. Johnson, G. Lyzenga, S. Otto, J. Salmon, and D. Walker, Solving Problems on concurrent Processors Vol. 1, Prentice Hall, Englewood Cliffs, NJ, 1988.

11.
B. Kernighan, and D. Ritchie, The C Programming Language: 2nd Edition, Prentice Hall Software Series Englewood Cliffs, 1998.

12.
B. Gough, GNU scientific library reference manual, Network Theory Ltd., 2009.

13.
J. H. Lim, S. H. Lee, and D. K. Kim, "New Randomness Testing Methods using Approximate Periods," KIISE Transactions on Computing Practices (KTCP), Vol. 16, No. 6, pp. 742-746, 2010. (in Korean)

14.
M. H. Kalos, and P. A. Whitlock, Monte Carlo Methods, Wiley-VCH, 2nd edition, 2008.

15.
H. Lee, E. Im, "Parallelization of Path Integral Monte Carlo Simulation on nVidia GPU," Proc. of the Korean Information Science Society Conference, Vol. 36, No. 1, pp. 322-326, 2009. (in Korean)

16.
M. Choi, S. Maeng, "Parallelized PI(${\pi}$) Calculation Algorithm using MPI," Proc. of the Korean Information Science Society Conference, Vol. 31, No. 1, pp. 91-93, 2004. (in Korean)

17.
T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, MIT Press, 2009.

18.
NVIDIA, CUDA CURAND Library, PG-05328-032_V01 August, 2010.