Abstract

In this paper we describe and demonstrate a C++ code written to determine the trajectory of particles traversing oriented single crystals and a CUDA code written to evaluate the radiation spectra from charged particles with arbitrary trajectories. The CUDA/C++ code can evaluate both classical and quantum mechanical radiation spectra for spin 0 and 1/2 particles. We include multiple Coulomb scattering and energy loss due to radiation emission which produces radiation spectra in agreement with experimental spectra for both positrons and electrons. We also demonstrate how GPUs can be used to speed up calculations by several orders of magnitude. This will allow research groups with limited funding or sparse access to super computers to do numerical calculations as if it were a super computer. We show that one Titan V GPU can replace up to 100 Xeon 36 core CPUs running in parallel. We also show that choosing a GPU for a specific job will have great impact on the performance, as some GPUs have better double precision performance than others. Program summaryProgram Title: Radiation From Charged Particles Penetrating Oriented CrystalsProgram Files doi:http://dx.doi.org/10.17632/zp9gskrbvg.1Licensing provisions: MIT licenseProgramming language: C++ and CUDANature of problem: Solving the problem of calculating the radiation spectrum emitted from charged particles penetrating oriented single crystals. Exact solutions are not possible analytically, but with Monte Carlo simulations we achieve the closest agreements with experiments. This problem is particularly difficult because of the amount of integrals needed to evaluate the entire radiation spectrum.Solution method: By moving the evaluation of each radiation integral to a thread on a GPU, we are able to parallelize the problem massively, and thereby decrease computation times by several orders of magnitude. Each thread in a Kernel call to the GPU then handles one integral. As Kernel calls can be queued, and the time to evaluate the trajectory of a particle is relatively long, each thread on the CPU evaluates its own trajectory and calls a kernel to evaluate the radiation from that specific particle. In this way we minimize the downtime of the GPU, as there will always be a few CPU threads with a Kernel call ready to be evaluated on the GPU.

Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.