MONTE CARLO METHODS FOR NEUTRON TRANSPORT ON GRAPHICS PROCESSING UNITS USING CUDA
Open Access
- Author:
- Nelson, Adam Gregory
- Graduate Program:
- Nuclear Engineering
- Degree:
- Master of Science
- Document Type:
- Master Thesis
- Date of Defense:
- None
- Committee Members:
- Kostadin Nikolov Ivanov, Thesis Advisor/Co-Advisor
Kostadin Nikolov Ivanov, Thesis Advisor/Co-Advisor
Maria Nikolova Avramova, Thesis Advisor/Co-Advisor - Keywords:
- gpu
neutron transport
gp-gpu
monte carlo
cuda - Abstract:
- This work examined the feasibility of utilizing Graphics Processing Units (GPUs) to accelerate Monte Carlo neutron transport problems. These GPUs use many parallel processors to perform the complex calculations necessary to create three-dimensional images at fast enough rates for the video game industry. In 2006 NVIDIA released a programming framework (called CUDA) that allows developers to easily program for the many cores provided by GPUs for general purpose programs. Initial assessments have suggested that the MC algorithm may not be able to fully utilize the GPU constraints. These constraints include the fact that MC codes are highly dependent on branch statements (IF, ELSE, FOR, and WHILE) which can have a large impact on GPU performance. In this work, a Monte Carlo neutron transport code was written from scratch to be run on both the x86 CPU platform and the GPU CUDA platform to understand the type of performance that can be gained by utilizing GPUs. After optimizing the code to run on the GPU, a speedup of nearly 21x was found when using only single-precision floating point math. This can be further increased with no additional effort if accuracy is sacrificed for speed: using a compiler flag, the speedup was increased to nearly 24x. Further, if double-precision floating point math is desired for neutron tracking through the geometry, a speedup of 11x was found. While the GPUs have proven to be useful, they are not without limitations. The following are such limitations: the maximum memory currently available on a single GPU is 4GB; the GPU RAM does not provide error-checking and correction; and the optimization required to decrease GPU runtime can lead to code that is not readable by those who are not the original developers.