Challenges Adapting CUDA PIC Codes to multiple GPUs
MetadataShow full item record
A Particle-In-Cell code is a common particle simulation method often used to simulate the behaviour of plasma. In this work, a parallel PIC code is developed in CUDA, with a focus on how to adapt the method for multiple GPUs. An electrostatic three dimensional PIC code is developed, with an FFT-based solver using the cuFFT library. Several issues related to parallelizing the PIC code are discussed, along with the performance on one and two GPUs compared to the CPU version we developed based on OpenMP and FFTW as a benchmark. For most problem sizes, the application is found to be memory bound, with the speed of the memory interface playing a larger role than the double precision performance. Alternatives to some of the naive solutions are discussed, with suggestions for how the simulation could be implemented for a shared memory computer. Benchmarks were performed on several GPU platforms including Nvidia Tesla K20 and GTX 980, and the challenges of getting the implementations to simulate plasma oscillations are discussed.