High-Performance X-ray Scattering Simulations
Abstract
This thesis is part of a larger project in the field of computational microscopy. Its main contribution is to facilitate the implementation of high performance tools to assist in the understanding and simulation of microscopic coherent x-ray imaging of objects.
The main focus of this thesis is improving the performance of PaXPro, which is a C++ library focused on solving the paraxial wave equation in 2D and 3D. Some optimizations are made to an existing solver implementing the Split-Step Fourier Transform Method on the CPU. A GPU-based implementation of this solver is also created, using CUDA.
Benchmarking tools for PaXPro are created, and docker is used to measure performance on a wide range of systems, with a total of 4 different CPUs and 5 GPUs. Optimizations to the CPU-based solver achieve a significant speedup of more than 6x on an 8-core CPU with SMT. Consumer-grade GPUs achieve a speedup of around 2-4x when compared with the optimized CPU solver. Professional-grade GPUs achieve over 10x speedup.
Several ideas for future work that could further increase performance or expand functionality/usability are also included.