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(${\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.
본 논문에서는 고성능 병렬 계산 장치로 주목받고 있는 GPU에서의 선형 합동 방식(linear congruential)의 병렬 난수 생성 프로그램을 구현하였다. 난수는 임의성을 필요로 하는 모든 분야에서 중요하게 사용되며, 선형 합동 난수 방식은 컴퓨터 계산을 통하여 생성되는 의사 난수(pseudo random numbers) 생성 방식 중에 가장 많이 사용되는 방식이다. 본 논문에서는 NVIDIA CUDA 프로그래밍 모델을 사용하여 구현된 프로그램 및 MPI를 사용한 다중 GPU를 구동하는 병렬프로그램을 설명하고, 생성된 난수들의 임의성과 성능을 알아보았다. 또한 원주율(${\pi}$)을 계산하기 위한 몬테카를로 알고리즘을 사용하여 CUDA 라이브러리 함수인 cuRAND와 성능을 비교하였으며, 다수의 GPU를 동시에 계산한 성능의 변화도 알아보았다.