Floating-point arithmetic is error-prone and unintuitive. Floating-point debuggers instrument programs to monitor floating-point arithmetic at run time and flag numerical issues. They estimate residues, i.e., the difference between actual floating-point and ideal real values, for every floating-point value in the program. Prior work explores various approaches for computing these residues accurately and efficiently. Unfortunately, the most efficient methods, based on "error-free transformations", have a high rate of false reports, while the most accurate methods, based on high-precision arithmetic, are very slow. This paper builds on error-free-transformations-based approaches and aims to improve their accuracy while preserving efficiency. To more accurately compute residues, this paper divides residue computation into two steps (rounding error computation and residue function evaluation) and shows how to perform each step accurately via careful improvements to the current state of the art. We evaluate on 44 large scientific computing workloads, focusing on the 14 benchmarks where prior tools produce false reports: our approach eliminates false reports on 10 benchmarks and substantially reduces them on the remaining 3 benchmarks. Moreover, complex numerical issues require additional care due to absorption, where two machine-precision residues cannot both be computed accurately in a single execution. This paper introduces residue override, which re-executes the program multiple times, computing different residues in different executions and assembling a final "patchwork" execution. We evaluate on 169 standard benchmarks drawn from numerical analysis papers and textbooks, requiring only 3.6 re-executions on average. Among 34 benchmarks with false reports in the initial run, residue override is triggered on 29 of them and reduces false reports on 25 of them, averaging 7.1 re-executions.


翻译:浮点运算容易出错且不直观。浮点调试器通过插桩程序来监控运行时浮点运算,并标记数值问题。它们会估算程序中每个浮点值的残差,即实际浮点值与理想实数值之间的差异。先前的工作探索了多种准确高效计算这些残差的方法。遗憾的是,基于"无误差变换"的高效方法误报率很高,而基于高精度算术的最准确方法则速度非常慢。本文在无误差变换方法的基础上,旨在保持效率的同时提高其准确性。为了更准确地计算残差,本文将残差计算分为两个步骤(舍入误差计算和残差函数评估),并展示了如何通过对当前最优方法进行精细改进来准确执行每个步骤。我们在44个大型科学计算负载上进行了评估,重点关注先前工具会产生误报的14个基准测试:我们的方法消除了10个基准测试中的误报,并在其余3个基准测试中大幅减少了误报。此外,由于吸收效应(即一次执行中无法同时准确计算两个机器精度残差),复杂的数值问题需要额外处理。本文引入了残差覆盖机制,即多次重新执行程序,在不同执行中计算不同残差,并组合出最终的"拼凑"执行结果。我们在从数值分析论文和教科书中选取的169个标准基准测试上进行了评估,平均仅需3.6次重新执行。在初始运行出现误报的34个基准测试中,有29个触发了残差覆盖机制,其中25个减少了误报,平均需要7.1次重新执行。

0
下载
关闭预览

相关内容

机器学习损失函数概述,Loss Functions in Machine Learning
专知会员服务
84+阅读 · 2022年3月19日
专知会员服务
34+阅读 · 2021年7月25日
你的算法可靠吗? 神经网络不确定性度量
专知
40+阅读 · 2019年4月27日
CVPR 2019 | PointConv:在点云上高效实现卷积操作
机器之心
10+阅读 · 2019年4月21日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
手把手教你构建ResNet残差网络
专知
38+阅读 · 2018年4月27日
边缘计算应用:传感数据异常实时检测算法
计算机研究与发展
11+阅读 · 2018年4月10日
侦测欺诈交易(异常点检测)
GBASE数据工程部数据团队
20+阅读 · 2017年5月10日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
VIP会员
最新内容
综述 | 3D场景图:开放挑战与未来方向
专知会员服务
4+阅读 · 6月22日
21世纪的无人机战争
专知会员服务
4+阅读 · 6月22日
《量子技术的军事任务技术适配与利用》
专知会员服务
5+阅读 · 6月22日
美国从乌克兰无人机战争中学习经验
专知会员服务
7+阅读 · 6月21日
ICML 2026 | 面向视觉语言模型的语义鲁棒性认证
专知会员服务
5+阅读 · 6月21日
相关VIP内容
机器学习损失函数概述,Loss Functions in Machine Learning
专知会员服务
84+阅读 · 2022年3月19日
专知会员服务
34+阅读 · 2021年7月25日
相关资讯
你的算法可靠吗? 神经网络不确定性度量
专知
40+阅读 · 2019年4月27日
CVPR 2019 | PointConv:在点云上高效实现卷积操作
机器之心
10+阅读 · 2019年4月21日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
手把手教你构建ResNet残差网络
专知
38+阅读 · 2018年4月27日
边缘计算应用:传感数据异常实时检测算法
计算机研究与发展
11+阅读 · 2018年4月10日
侦测欺诈交易(异常点检测)
GBASE数据工程部数据团队
20+阅读 · 2017年5月10日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
Top
微信扫码咨询专知VIP会员