Iterative reconstruction from projections is typically a function reserved for the medical industry. This approach allows medical professionals to reconstruct computed tomography (CT) images from acquired data; the reconstructed images display virtual “slices” of a scanned object, such as a heart or brain.
In reconstructing an image from the data, algorithms are used to approximate the solution. The closer the solution, the better the reconstruction. Multiple iterations produce more accurate solutions, and, thus, higher-quality images. This technique, however, consumes computation time; speeding the process through the GPU is one solution to this problem.
Reveal Imaging, a SAIC company, uses this CT technology in developing threat-detection products for transportation systems—such as cargo and baggage screening in airports—and in securing facilities and public events. Speed is critical in their technology, and they approached us seeking acceleration.
Reveal Imaging was running its cone-beam reconstructor via CUDA code previously implemented by a different contractor, but the performance was sub-par. They tasked ArrayFire with improving that performance on their GTX690s.
Our engineers approached this by following standard CUDA practices. The project consisted mostly of cleaning up the existing code to allow it to run faster.
First, we removed the dependence of the permitted slice thickness on the number of GPU cards in the system. Then we allowed for one of the GPUs in the system to be excluded from those used by the reconstruction code and dedicated to driving a display. Next, we assured that the code met specifications with the latest CUDA compilers. Finally, we implemented performance enhancements, bottleneck reductions, and bug fixes previously identified.
The conclusion of the project was followed by a three-week testing period, during which time Reveal Imaging determined the reliability and overall satisfaction of the code’s performance. The code’s original speed was measured at around 200 slices per second—through our optimization efforts, we were able to increase that number to 320 slices per second. Upon completion of the testing period, Reveal Imaging was very pleased with the results and end performance of their code.
The changes that you made sped up the system more than expected! How often does anybody get to say that things work better than expected?—Reveal Imaging
In the end, Reveal Imaging was able to focus on other development aspects of their project while we focused on what we do best—working relentlessly to achieve the best possible results in parallel computing.
Science Applications International Corporation (SAIC) is a leading technology integrator that provides full lifecycle services and solutions in the technical, engineering, and enterprise IT markets. SAIC has approximately 13,000 employees worldwide.