首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

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

申请/专利权人:河南省核芯微电子科技有限公司

申请日:2023-03-16

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

公开(公告)号:CN116431479B

主分类号:G06F11/36

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

优先权:

专利状态码:有效-授权

法律状态:2024.06.28#授权;2023.08.01#实质审查的生效;2023.07.14#公开

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

主权项:1.一种基于Dyninst的浮点程序精度损失检测方法,其特征在于:包括以下步骤:S1、输入数据生成:根据浮点数据格式分布不均匀的特点,生成在各个浮点数据区间均匀分布的测试数据,浮点数的表示由符号位s、指数位e和尾数位m组成,在浮点程序输入域内,首先生成小规模输入数据,根据小规模输入数据统计浮点程序代码块执行的频率,再根据执行频率较高代码块对应的输入由正态分布规则生成大规模输入数据;S2、浮点数据预处理:在对浮点程序进行精度检测之前,根据检测特定精度操作的算法,在输入区间进行采样执行浮点程序,并记录每一步的相对误差,执行过程中进行数据过滤,当浮点误差超过阈值时后面的程序不再执行,根据误差结果判定是否为特定精度操作,将检测出的特定精度操作排除在检测范围之外,减少误报精度损失;S3、浮点程序解析:对浮点数据预处理后,进行静态分析浮点程序源码,使用LLVM前端Clang生成对应的抽象语法树,借助Clang的ASTMatcher定位浮点数据声明与运算部分,根据浮点表达式生成相应的MPFR代码段,得到浮点表达式之后,将浮点表达式由中缀表达式转化为后缀表达式,根据后缀表达式生成对应的MPFR代码段;S4、语句级检测:通过Dyninst插桩框架对浮点程序进行语句级动态分析,使用MPFR库将浮点程序的浮点运算在语句级以更高的精度运算同时运行比较,在语句级进行精度损失检测,同时记录浮点程序精度损失变化情况,生成浮点程序精度损失变化图,定位精度损失源码位置。

全文数据:

权利要求:

百度查询: 河南省核芯微电子科技有限公司 一种基于Dyninst的浮点程序精度损失检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。