[发明专利]一种基于数学近似的浮点程序精度缺陷修复方法有效
申请号: | 201910033498.4 | 申请日: | 2019-01-14 |
公开(公告)号: | CN109840067B | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 毛晓光;陈立前;易昕;纪涛;王戟;董威;陈振邦;刘万伟;刘江潮 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F7/483 | 分类号: | G06F7/483;G06F11/07 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 周长清 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 数学 似的 浮点 程序 精度 缺陷 修复 方法 | ||
一种基于数学近似的浮点程序精度缺陷修复方法,其步骤包括:步骤S1.预处理;步骤S2.定位精度缺陷:使用线性搜索算法查找包含能触发精度缺陷的最小输入区间Ierr;步骤S3.生成数学近似;步骤S4.补丁生成和优化;步骤S5.补丁验证:对最小输入区间Ierr进行采样,测试所有采样输入对应的修复后的浮点程序的输出是否满足精度需求,若满足则修复结束,若不满足且分配的计算资源还未耗尽则返回S2重新执行,若计算资源已经耗尽,则返回修复未完成,修复结束。本发具有能够提高修复能力、满足给定精度需求等优点。
技术领域
本发明主要涉及到浮点运算的技术领域,特指一种一种基于数学近似的浮点程序精度缺陷修复方法。
背景技术
浮点运算被广泛应用于航空航天、金融、科学计算、物理仿真等各个领域中。浮点数在计算机中用来近似表示实数,由于浮点数的有限位数表示,浮点表示实数时可能会存在舍入误差,比如实数上的0.1在64位浮点数表示为0.100000001490116119384765625。因此,在浮点数计算过程中不可避免的会引入误差,特别是在浮点计算密集的浮点程序中,误差可能累积和放大,使得程序输出无法满足用户对结果的精度需求,产生精度缺陷。人工修复精度缺陷,需要维护人员有浮点运算和数值计算相关的专业知识,因此为了帮助维护人员修复精度缺陷,研究人员提出了浮点程序精度缺陷的修复方法。
浮点程序精度缺陷修复方法目的是修复精度缺陷。现有浮点程序精度缺陷修复方法主要包括以下三个步骤:
S1:定位精度缺陷,即找到引发精度缺陷的浮点表达式。
S2:补丁生成,即对定位到的浮点表达式使用数学规则进行变换生成新的表达式。
S3:补丁验证,即判断变换后的的浮点表达式相比于原表达式是否提升了精度,若提升,则返回新生成的表达式,否则执行S2。
以上传统的检测方式,存在一些不足之处:
1、修复能力不足:通过误差分析,可以发现引起精度缺陷主要是由于两方面的原因:一是程序执行过程中浮点计算引入的误差累积;二是浮点程序所对应的数学函数可能存在病态问题(条件数过大),导致浮点计算的误差被放大。现有的技术只尝试减少程序执行过程中浮点计算引入的误差来修复精度缺陷,没有针对病态问题引发的精度缺陷的有效修复方法。
2、修复不能满足给定的精度需求:现有技术主要基于数学规则,比如交换律、结合律等对引入误差的浮点表达式进行重写,重写的结果可能能提升浮点表达式计算结果的精度,但由于重写并没有以一个给定精度需求为目标进行修复,可能无法满足用户给定的精度需求。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够提高修复能力、满足给定精度需求的基于数学近似的浮点程序精度缺陷修复方法。
为解决上述技术问题,本发明采用以下技术方案:
一种基于数学近似的浮点程序精度缺陷修复方法,其步骤包括:
步骤S1.预处理;
步骤S2.定位精度缺陷:使用线性搜索算法查找包含能触发精度缺陷的最小输入区间Ierr;
步骤S3.生成数学近似:使用线性近似加误差补偿的方法来近似浮点程序在最小输入区间Ierr对应的数学函数执行,并使用迭代精化算法来生成满足给定精度需求的数学近似列表;
步骤S4.补丁生成和优化:将生成的数学近似列表转化为浮点程序补丁,然后对补丁执行性能进行优化;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910033498.4/2.html,转载请声明来源钻瓜专利网。