Toward Increasing Trust in Exascale Simulations
Dorra Ben Khalifa, Xinyi Li, Ignacio Laguna, Matthieu Martel, Ganesh Lalitha Gopalakrishnan · 2022
In recent decades, High Performance Computing (HPC) and simulations have become determinant in many areas of engineering and science. Since many HPC applications rely extensively on floating-point arithmetic operations to solve computational problems, many kinds of numerical errors can be introduced during the program execution, leading to instability or reproducibility problems. One kind of these error sources is the loss of significant digits or cancellation which produces inaccurate results when two nearby numbers are subtracted. In this article, we present Candy, a new dynamic library based on code instrumentation that detects cancellations in numerical software. The originality of our method is to compute the number of significant bits of floating-point numbers in a generalized framework by attaching a shadow value in higher precision to each number. This helps to detect in an accurate way if a program suffers from cancellation problems and thus to increase the trust in large-scale HPC applications and exascale simulations. We evaluate Candy over a set of complex and real-world numerical applications. In addition, we compare our method against the state-of-art tool FPChecker in terms of efficiency, mixed precision results and speed of the analysis.