GPU-Accelerated 3D Reconstruction
Optimizing 3D Reconstruction for Computed Tomography
Optimizing 3D Reconstruction for Computed Tomography
Berkeley Lab's Advanced Light Source enables high power X-ray imaging of microscopic materials. By combining multiple X-ray images from a sample on a rotating platform, a 3-dimensional volumetric reconstruction is possible.
I was approached by a researcher from Berkeley Lab's CAMERA group to assist with acceleration of 3D-reconstruction code, originally written in Fortran. To support this goal, I explored multiple multiple techniques to measure the potential performance gains: First, I explored using nvfortran (NVidia's fortran compiler) with parallel doconcurrent pragmas, first by identifying obvious loop parallelization candidates, and second, refining computations to avoid if/then branching that could interrupt computation pipelines. Next, I re-implemented the algorithm from scratch in pure Python using scipy and then accelerated the computations using CuPy (CUDA-accelerated Numpy) and various interpolation schemes. The greatest speedups were achieved using a specialized CUDA-accelerated kernel for volumetric affine transformations (voltools), resulting in reconstruction wall time over 300x faster than the baseline fortran implementation.
PyTorch - CUDA - CuPy
Python scikit
NVFortran