Program Instability Detection Based on Systematically Optimized Numerical Perturbation

TANG EnYi,BARR Earl,SU ZhenDong,LI XuanDong
DOI: https://doi.org/10.1360/112012-622
2014-01-01
Abstract:For efficiency,Many numerical programs are based on fixed-precision floating point numbers.However,it is very hard to guarantee the correctness of these programs during the propagation of the numerical errors.This paper presents an automatic approach that helps the developers detect the instabilities in their programs.The insight of our approach is by systematically perturbing the underlying numerical calculation,we can estimate the potential instabilities of numerical programs.We presents two concrete perturbations in our approach:value perturbation and expression perturbation.Value perturbation replaces the least significant bits of each floating-point value in the code,while expression perturbation changes the numerical expressions in programs to mathematically equivalent forms.We then compare the executions of these "equivalent" forms to help discover and remedy potential instabilities.We use a few techniques to optimize our perturbation approach.When users have powerful computing hardwares,a multi-core algrithm helps them to improve the performance of our perturbation.And when users have limited computing resources in their platform,we also present a Monte Carlo method to get acceptable results efficiently.The evaluation results on a few literary programs and the GNU scientific library (GSL) show the practicability and effectiveness of our perturbation approach.
What problem does this paper attempt to address?