paperbot · PL 论文追踪

全部论文 待读 收藏

P0 Accurate Residues for Floating-Point Debugging

面向浮点调试的精确残差计算
OOPSLA 10(OOPSLA2)2026匹配度 8/10 · 论文直接针对浮点程序分析中的残差计算与调试误报问题,属于用户明确关注的浮点程序分析方向;虽未涉及LLM交叉,但问题驱动、方法改进与大规模benchmark评估符合其偏好。引用 0 inbox
Yumeng He, Pavel Panchekha
crossref: 2026-10-02

AI 速览

一句话:通过改进无误差变换的残差计算并提出多次重执行的 residue override,在保持效率的同时大幅减少浮点调试误报。

浮点运算易错;浮点调试器运行时插桩估计每个浮点值的残差(实际浮点值与理想实数值之差)以标记数值问题。现有无误差变换法高效但误报多,高精度算术法准确却极慢。本文将残差计算拆为舍入误差计算与残差函数求值两步,沿用并改进无误差变换路线,在 44 个大型科学计算负载的 14 个误报基准上完全消除 10 个的误报。针对复杂数值问题中的吸收现象(一次执行无法同时精确计算两个机器精度残差),提出 residue override:多次重执行并拼装出全部残差精确的执行;在 169 个数值分析基准上平均需 3.6 次重执行。

问题
浮点调试器需要准确估计每个浮点值的残差以减少误报,但现有无误差变换法误报率高,高精度算术法又过慢。
方法
将残差计算拆分为舍入误差计算与残差函数求值两步并分别改进,同时提出 residue override,通过多次重执行在不同执行中计算不同残差并拼装成全部残差精确的执行。
评估
在 44 个大型科学计算负载和 169 个数值分析基准上评估误报消除情况与重执行开销,平均仅需 3.6 次重执行,部分误报基准需约 7.1 次。
原文摘要(Abstract)

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. To do so, they estimate residues—the difference between actual floating-point and ideal real values—for every floating-point value in the program. A large literature has explored various approaches for computing these residues accurately (leading to few false reports, i.e., false positives and false negatives) and efficiently (leading to low overhead over uninstrumented execution). Unfortunately, the most efficient methods, based on "error-free transformations", have a high rate of false positives, 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 benchmarks. Moreover, we find that more complex numerical issues, such as those found in numerical analysis textbooks, require additional care, because floating-point debuggers suffer from absorption, in which two different machine-precision residues cannot both be computed accurately in a single execution. To address absorption, this paper introduces residue override, which re-executes the program multiple times, computing different residues in different executions and assembling a final "patchwork" execution where all residues are accurately computed. 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.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot12106,
  title = {Accurate Residues for Floating-Point Debugging},
  author = {Yumeng He and Pavel Panchekha},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {OOPSLA2},
  year = {2026},
  doi = {10.1145/3839526}
}