FloatGuard: Efficient Whole-Program Detection of Floating-Point Exceptions in AMD GPUs
Porting scientific applications across different GPU architectures introduces floating-point arithmetic variations that can affect reproducibility, making efficient detection and mitigation of exceptions like NaNs and infinities crucial. While NVIDIA has dominated the GPU market, AMD GPUs are increasingly used in HPC systems as well, yet existing floating-point exception detection frameworks focus on NVIDIA, leaving a gap for AMD GPUs. We present FloatGuard, the first framework for efficiently detecting floating-point exceptions in HIP programs running on AMD GPUs. FloatGuard leverages AMD GPU hardware registers to detect floating-point exceptions, overcoming the limitations of AMD's built-in trapping mechanisms through a novel algorithm that combines assembly- and source-level instrumentation with debugger-guided execution. We evaluate FloatGuard on 565 HIP programs, detecting floatingpoint exceptions in 507 cases with a slowdown ratio that increases at most linearly with the number of exceptions discovered. Furthermore, we analyze the impact of compiler optimizations on exceptions trapped, and compare FloatGuard with the state-of-the-art tool for detecting floating-point exceptions in CUDA programs, which further reveals key differences between AMD and NVIDIA's floating-point exception behaviors.
Authors
- Cindy Rubio-González (ORCID: https://orcid.org/0000-0002-0861-3763)
- Ignacio Laguna (ORCID: https://orcid.org/0000-0002-9374-4433)
- Dolores Miao (ORCID: https://orcid.org/0000-0002-7511-0269)
Institutions
- Lawrence Livermore National Laboratory (US)
- University of California, Davis (US)
Publication Details
- Published
- 2025-07-20
- DOI
- https://doi.org/10.1145/3731545.3731586
- Primary Topic
- Parallel Computing and Optimization Techniques
- Type
- article
- Field-Weighted Citation Impact
- 0.00