一种基于Dyninst的浮点程序精度损失检测方法

    公开(公告)号:CN116431479A

    公开(公告)日:2023-07-14

    申请号:CN202310255633.6

    申请日:2023-03-16

    IPC分类号: G06F11/36 G06F7/483 G06F7/58

    摘要: 本发明公开了一种基于Dyninst的浮点程序精度损失检测方法,属于计算机运算技术领域;包括以下步骤:根据浮点数据格式分布不均匀的特点,生成在各个浮点数据区间均匀分布的输入数据;精度检测之前进行预处理,将检测出的特定精度操作排除在检测范围之外,减少误报精度损失;浮点程序解析,根据浮点表达式自动生成对应的MPFR代码段;语句级动态分析,定位精度损失源码位置。本发明检测方法通过生成均匀分布的输入数据,替代多数检测工具随机生成的输入数据,剔除浮点特定精度操作减少误报,根据浮点程序源码自动生成对应的高精度MPFR运算,动态检测精度损失并记录精度损失变化情况,生成浮点程序精度损失变化图,从而能够清晰的观察产生精度损失的源码位置。

    一种基于Dyninst的浮点程序精度损失检测方法

    公开(公告)号:CN116431479B

    公开(公告)日:2024-06-28

    申请号:CN202310255633.6

    申请日:2023-03-16

    IPC分类号: G06F11/36 G06F7/483 G06F7/58

    摘要: 本发明公开了一种基于Dyninst的浮点程序精度损失检测方法,属于计算机运算技术领域;包括以下步骤:根据浮点数据格式分布不均匀的特点,生成在各个浮点数据区间均匀分布的输入数据;精度检测之前进行预处理,将检测出的特定精度操作排除在检测范围之外,减少误报精度损失;浮点程序解析,根据浮点表达式自动生成对应的MPFR代码段;语句级动态分析,定位精度损失源码位置。本发明检测方法通过生成均匀分布的输入数据,替代多数检测工具随机生成的输入数据,剔除浮点特定精度操作减少误报,根据浮点程序源码自动生成对应的高精度MPFR运算,动态检测精度损失并记录精度损失变化情况,生成浮点程序精度损失变化图,从而能够清晰的观察产生精度损失的源码位置。

    一种基于程序重写的浮点程序精度缺陷修复方法

    公开(公告)号:CN116431215A

    公开(公告)日:2023-07-14

    申请号:CN202310350979.4

    申请日:2023-04-04

    IPC分类号: G06F9/30 G06F9/302

    摘要: 本发明公开了一种基于程序重写的浮点程序精度缺陷修复方法,用以提升浮点计算的准确性,属于浮点运算技术领域;该方法中以浮点程序作为输入,首先提出一种取样‑替换‑分类的方法,对特定精度的操作进行筛选隔离,其次进行函数之间的嵌入,之后应用一组表达式间的转换规则以及变量间的映射方法,进行表达式间的重组,生成具有更多重写可能性的表达式,接着使用工具FPtool对生成的表达式进行处理,然后对处理后的浮点表达式进行重写,最后经过多次迭代生成比初始程序浮点计算精度更高的目标程序。本发明通过在GNU科学计算库GSL中进行10个函数的实验,结果显示以误差小于1ULP的比例为指标,平均精度提升5.2个百分点,部分函数提升20个百分点。