国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:于恒彪,易昕,范小康,唐滔,黄春,尹帮虎,王戟
单位:于恒彪,国防科技大学 计算机学院, 湖南 长沙 41007311,易昕,国防科技大学 计算机学院, 湖南 长沙 41007302,范小康,国防科技大学 计算机学院, 湖南 长沙 41007303,唐滔,国防科技大学 计算机学院, 湖南 长沙 41007304,黄春,国防科技大学 计算机学院, 湖南 长沙 41007305,尹帮虎,国防科技大学 系统工程学院, 湖南 长沙 41007306,王戟,国防科技大学 计算机学院, 湖南 长沙 41007307
关键词:编译优化;结果不一致;浮点指令差异性;Delta调试
基金:国家重点研发计划(2023YFB3001600); 国家自然科学基金(62272471, 62202488)
编译器是程序开发人员最依赖的性能优化工具之一. 然而, 受限于浮点数有限精度编码问题, 很多编译优化选项会改变浮点计算的语义, 进而导致程序计算结果不一致. 定位程序中导致编译优化结果不一致的语句对于程序性能优化和结果可复现具有重要意义. 当前最先进的方法PLiner采用基于语句精度增强的二分搜索来定位导致编译优化结果不一致的代码段, 受限于对多源问题代码的定位支持不够和搜索效率不高问题. 提出一种浮点指令差异性引导的Delta调试定位方法FI3D, 利用Delta调试中的回溯机制更好地支持多源问题代码定位, 基于不同编译优化选项下函数浮点指令序列的差异性来引导定位. 使用NPB基准测试集中的6个应用、GSL数学库中的10个程序和floatsmith混合精度测试集中的2个程序对FI3D进行了评测, 实验结果显示FI3D能够成功定位PLiner失效的4个测试用例, 且对PLiner成功定位的14个测试用例获得了平均26.8%的性能提升.
来源:2025年第12期
《软件学报》期刊编辑部