PLINER: Isolating Lines of Floating-Point Code for Compiler-Induced Variability

PLINER: Isolating Lines of Floating-Point Code for Compiler-Induced Variability
复制标题

DOI:
10.1109/sc41405.2020.00053
复制
发表时间:
2020-11
期刊:
SC20: International Conference for High Performance Computing, Networking, Storage and Analysis
影响因子:
--
通讯作者:
Hui Guo;I. Laguna;Cindy Rubio-González
Hui Guo;I. Laguna;Cindy Rubio-González
中科院分区:
其他
文献类型:
--
作者:
Hui Guo;I. Laguna;Cindy Rubio-González

文献摘要

相似文献

当使用不同的编译器或使用不同的优化级别时,科学应用程序通常会受到数值不一致的影响;这种不一致会阻碍可重复性,并且很难诊断。我们提出了PLINER,一个工具,自动查明代码行,触发编译器引起的变化。PLINER使用一种新的方法来提高不同级别的代码粒度的浮点精度,并执行引导搜索来识别受数值不一致影响的位置。我们展示了PLINER在现实世界中的数值不一致,需要数周的诊断,PLINER隔离在几分钟内。我们还评估了100个合成程序和NAS并行基准测试(NPB)的PLiNER。在合成程序中,PLiNER在87%的时间内检测到受影响的代码行,而最先进的方法仅在6%的时间内检测到受影响的代码行。此外,PLINER成功地隔离了NPB中发现的所有数值不一致。
Scientific applications are often impacted by numerical inconsistencies when using different compilers or when a compiler is used with different optimization levels; such inconsistencies hinder reproducibility and can be hard to diagnose. We present PLINER, a tool to automatically pinpoint code lines that trigger compiler-induced variability. PLINER uses a novel approach to enhance floating-point precision at different levels of code granularity, and performs a guided search to identify locations affected by numerical inconsistencies. We demonstrate PLINER on a real-world numerical inconsistency that required weeks to diagnose, which PLINER isolates in minutes. We also evaluate PLiNER on 100 synthetic programs, and the NAS Parallel Benchmarks (NPB). On the synthetic programs, PLiNER detects the affected lines of code 87% of the time while the stateof-the-art approach only detects the affected lines 6% of the time. Furthermore, PLINER successfully isolates all numerical inconsistencies found in the NPB.