  Computed Tomography (CT) is a key 3D imaging technology that fundamentally
relies on the compute-intense back-projection operation to generate 3D volumes.
GPUs are typically used for back-projection in production CT devices. However,
with the rise of power-constrained micro-CT devices, and also the emergence of
CPUs comparable in performance to GPUs, back-projection for CPUs could become
favorable. Unlike GPUs, extracting parallelism for back-projection algorithms
on CPUs is complex given that parallelism and locality are not explicitly
defined and controlled by the programmer, as is the case when using CUDA for
instance. We propose a collection of novel back-projection algorithms that
reduce the arithmetic computation, robustly enable vectorization, enforce a
regular memory access pattern, and maximize the data locality. We also
implement the novel algorithms as efficient back-projection kernels that are
performance portable over a wide range of CPUs. Performance evaluation using a
variety of CPUs from different vendors and generations demonstrates that our
back-projection implementation achieves on average 5.2x speedup over the
multi-threaded implementation of the most widely used, and optimized, open
library. With a state-of-the-art CPU, we reach performance that rivals
top-performing GPUs.

Distributed, Parallel, and Cluster Computing