Effektiv parallell slumptalsgenerering på GPU:er
Examensarbete för kandidatexamen
Engineering Mathematics (300 hp)
This work compares several popular pseudo-random number generators implemented on a graphics processing unit (GPU). We consider generation for both uniform and normal distributions. The generators have also been tested using a selection of test algorithms to assess the quality of the output. As a final verification the generators have been tested in-situ on a simulation code. We chose to implement and test five different algorithms for generating uniform distributed numbers and three for generating normal distributed numbers. The generators were implemented with an object oriented programming approach in C++ using Nvidia’s CUDA framework. We have also included generators from Nvidia’s own random number generator library, cuRAND, to compare with our own. The test algorithms were implemented in C++ and CUDA as well. Our results show that some algorithms are not suited for use on GPUs, while other more GPU customized algorithms perform admirably. The results from the simulation code show that all of the generators except Wallace provide good output. The running time of the simulation code is about 100 to 250 times faster on the GPU depending on implementation compared to CPU. From our results we can recommend the Linear Congruental Generator (LCG) for generating uniform numbers if perfomance is a priority, and combining it with the Box-Muller Transform for generating normal distributed numbers.
Sannolikhetsteori och statistik , Data- och informationsvetenskap , Probability Theory and Statistics , Computer and Information Science