针对修复浮点程序中的精度缺陷的问题,从精度缺陷修复的基础理论和表达式变换方向,提出一种浮点程序精度缺陷修复方法,用以提升浮点计算的准确性。所提方法以浮点程序作为输入,首先,提出一种取样-替换-分类的方法,对特定精度的操作进行...针对修复浮点程序中的精度缺陷的问题,从精度缺陷修复的基础理论和表达式变换方向,提出一种浮点程序精度缺陷修复方法,用以提升浮点计算的准确性。所提方法以浮点程序作为输入,首先,提出一种取样-替换-分类的方法,对特定精度的操作进行筛选隔离;然后,进行函数之间的嵌入,再通过一组表达式间的转换规则以及变量间的映射方法重组表达式,生成具有更多重写可能性的表达式;其次,使用FPtool处理生成的表达式,再使用Herbie重写处理后的浮点表达式;最后,经过多次迭代生成比初始程序浮点计算精度更高的目标程序。在GSL(GNU Scientific Library)的10个函数上进行实验,实验结果表明,以误差小于1 ULP(Unit at the Last Place)的比例为指标,所提方法优化后的平均占比提升了5.20%。展开更多
文摘针对修复浮点程序中的精度缺陷的问题,从精度缺陷修复的基础理论和表达式变换方向,提出一种浮点程序精度缺陷修复方法,用以提升浮点计算的准确性。所提方法以浮点程序作为输入,首先,提出一种取样-替换-分类的方法,对特定精度的操作进行筛选隔离;然后,进行函数之间的嵌入,再通过一组表达式间的转换规则以及变量间的映射方法重组表达式,生成具有更多重写可能性的表达式;其次,使用FPtool处理生成的表达式,再使用Herbie重写处理后的浮点表达式;最后,经过多次迭代生成比初始程序浮点计算精度更高的目标程序。在GSL(GNU Scientific Library)的10个函数上进行实验,实验结果表明,以误差小于1 ULP(Unit at the Last Place)的比例为指标,所提方法优化后的平均占比提升了5.20%。