Software Numerical Instability Detection and Diagnosis by Combining Stochastic and Infinite-Precision Testing

Software Numerical Instability Detection and Diagnosis by Combining Stochastic and Infinite-Precision Testing
复制标题

DOI:
10.1109/tse.2016.2642956
复制
发表时间:
2017-10
影响因子:
7.4
通讯作者:
Enyi Tang;X. Zhang;N. Müller;Zhenyu Chen;Xuandong Li
Enyi Tang;X. Zhang;N. Müller;Zhenyu Chen;Xuandong Li
中科院分区:
计算机科学1区
文献类型:
--
作者:
Enyi Tang;X. Zhang;N. Müller;Zhenyu Chen;Xuandong Li

文献摘要

被引文献

相似文献

数值不稳定是一个众所周知的问题,可能会导致严重的运行时故障。本文讨论了软件开发过程中不稳定的原因,并提出了一个工具链,不仅可以检测软件中潜在的不稳定,还可以诊断这种不稳定的原因。我们将不稳定的原因分为两类。当它是由软件需求引入时,我们称之为问题引起的不稳定。在这种情况下,无法通过改进软件开发来避免,而是需要检查需求,尤其是底层的数学属性。否则,我们称之为实践造成的不稳定。我们将工具链设计为四个松散耦合的工具,将随机算术与无限精度测试结合起来。我们工具链中的每个工具都可以根据分析软件的属性配置不同的策略。我们根据文献主题评估我们的工具链。结果表明,它有效地检测并分离出由其他问题引起的不稳定因素。我们还对最新版本的 GNU 科学库进行了评估,工具链在维护良好且广泛部署的数值库中发现了一些真正的错误。在我们的工具链的帮助下,我们向 GSL 错误列表报告详细信息和修复建议。
Numerical instability is a well-known problem that may cause serious runtime failures. This paper discusses the reason of instability in software development process, and presents a toolchain that not only detects the potential instability in software, but also diagnoses the reason for such instability. We classify the reason of instability into two categories. When it is introduced by software requirements, we call the instability caused by problem . In this case, it cannot be avoided by improving software development, but requires inspecting the requirements, especially the underlying mathematical properties. Otherwise, we call the instability caused by practice. We design our toolchain as four loosely-coupled tools, which combine stochastic arithmetic with infinite-precision testing. Each tool in our toolchain can be configured with different strategies according to the properties of the analyzed software. We evaluate our toolchain on subjects from literature. The results show that it effectively detects and separates the instabilities caused by problems from others. We also conduct an evaluation on the latest version of GNU Scientific Library, and the toolchain finds a few real bugs in the well-maintained and widely deployed numerical library. With the help of our toolchain, we report the details and fixing advices to the GSL buglist.