Numerical accuracy differences in CPU and GPGPU codes

This thesis presents an analysis of numerical accuracy issues that are found in many scientific GPU applications due to floating-point computation. Two widely held myths about floating-point on GPUs are that the CPU's answer is more precise than the GPU version and that computations on the GPU...

Full description

Bibliographic Details
Published:
Online Access:http://hdl.handle.net/2047/d20001067
Description
Summary:This thesis presents an analysis of numerical accuracy issues that are found in many scientific GPU applications due to floating-point computation. Two widely held myths about floating-point on GPUs are that the CPU's answer is more precise than the GPU version and that computations on the GPU are unavoidably different from the same computations on a CPU. We dispel both myths by studying a specific application: Digital Breast Tomosynthesis. We describe situations where the GPGPU provides greater precision in the application. Digital Breast Tomosynthesis (1500 lines of code) was analyzed and differences between the CUDA (GPU) and C++ (CPU) implementations were completely resolved. The techniques developed can aid in debugging other scientific GPU floating-point code. This analysis requires an in-depth understanding of the arithmetic issues that arise in implementing floating-point on CPUs, multi-core architectures, and GPUs. We provide insight into the accuracy, speed and verification of floating-point codes, as GPUs are increasingly used in important scientific and medical applications.