Small angle neutron scattering for materials research uses a high-energy particle accelerator to produce scattering amplitude functions. However, the physics behind the neutron scattering is well-known and can be simulated on supercomputer clusters, provided an initial seed trajectory and molecular (MD) information is given.

I recently completed a project where I improved the performance of a program for neutron scattering physics simulation by using CUDA to get some quite large performance gains. Despite the existing application already being written for super-computer clusters with MPI, writing a CUDA scattering implementation, offloading some nodes to the GPU, and allowing for a “hybrid” CPU/GPU computation model that still supports CPU clusters worked surprisingly well.