CN109814834B - 一种基于条件数指导的浮点程序精度缺陷检测方法 - Google Patents

一种基于条件数指导的浮点程序精度缺陷检测方法 Download PDF

Info

Publication number
CN109814834B
CN109814834B CN201910033063.XA CN201910033063A CN109814834B CN 109814834 B CN109814834 B CN 109814834B CN 201910033063 A CN201910033063 A CN 201910033063A CN 109814834 B CN109814834 B CN 109814834B
Authority
CN
China
Prior art keywords
program
input
error
condition number
precision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910033063.XA
Other languages
English (en)
Other versions
CN109814834A (zh
Inventor
陈立前
毛晓光
易昕
纪涛
王戟
董威
文艳军
刘江潮
尹良泽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201910033063.XA priority Critical patent/CN109814834B/zh
Publication of CN109814834A publication Critical patent/CN109814834A/zh
Application granted granted Critical
Publication of CN109814834B publication Critical patent/CN109814834B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)

Abstract

一种基于条件数指导的浮点程序精度缺陷检测方法,其步骤包括:步骤S1.预处理;步骤S2.输入域划分;步骤S3.第一阶段搜索:对分输入域使用差分演化搜索算法查找能触发可能最大条件数的程序输入,并对整个分输入域表按找到的输入对应的程序输出的误差从大到小进行排序,获取排序后的分输入域列表并记录对应查找到的程序输入;步骤S4.第二阶段搜索:从排序后的分输入域表的表头取出分输入域,从第一阶段找到的程序输入作为初始测试点,查找能触发最大程序输出误差的程序输入,保存查找到的程序输入和对应输出误差到搜索结果表;步骤S5.精度缺陷验证。本发明具有能够提高检测准确度、提高检测稳定性、降低时间开销等优点。

Description

一种基于条件数指导的浮点程序精度缺陷检测方法
技术领域
本发明主要涉及到浮点运算技术领域,特指一种基于条件数指导的浮点程序精度缺陷检测方法。
背景技术
浮点运算被广泛应用于航空航天、金融、科学计算、物理仿真等各个领域中。浮点数在计算机中用来近似表示实数,由于浮点数的有限位数表示,浮点表示实数时可能会存在舍入误差,比如实数上的0.1在64位浮点数表示为0.100000001490116119384765625。因此,在浮点数计算过程中不可避免的会引入误差,特别是在浮点计算密集的浮点程序中,误差可能累积和放大,使得程序输出无法满足用户对结果的精度需求,产生精度缺陷。然而,并不是所有输入都会导致浮点程序的精度缺陷,同时,浮点输入的对应的数目巨大,比如,对于单个64位浮点输入,就有2的64次方个浮点数。因此,在这么大的浮点输入域中找到能触发精度缺陷的程序输入,需要有效的浮点程序精度缺陷检测方法。
浮点程序精度缺陷检测方法目的是找到能导致精度缺陷的浮点输入。现有精度缺陷检测方法主要包括四个步骤:
S1:对浮点程序的输入域进行采样,采样方法取决于精度缺陷检测方法所采用的搜索算法。
S2:验证采样点对应的程序输出是否存在精度缺陷,若存在,则返回采样点。否则进行S3。
S3:根据搜索算法,生成新的采样点。
S4:执行S2。
以上传统的检测方式,存在一些不足之处:
1、检测准确度低:通过误差分析,可以发现引起精度缺陷主要是由于两方面的原因:一是程序执行过程中浮点计算引入的误差累积;二是浮点程序所对应的数学函数可能存在病态问题(条件数过大),导致浮点计算的误差被放大。现有的技术只使用浮点程序输出结果的误差作为指导,没有利用浮点程序对应的数学函数的相关特性,缺乏辅助性指导规则,导致检测结果的准确度低。
2、检测稳定性低:浮点程序的输入域越大,相同时间内采样率就越低,检测方法就越容易陷入局部最优,导致方法重复执行时输出结果差异性较大,即方法的稳定性低。现有技术没有对输入域进行有效划分,同时采用单一搜索算法和指导规则,更加降低了方法的稳定性。
3、时间开销大:目前采用浮点程序在更高精度下执行的输出来验证原浮点程序的输出是否存在精度缺陷,但是浮点程序在更高精度下执行时间远远高于原精度执行(时间是几百倍甚至上千倍),现有方法对所有采样点都进行了验证,因此采样点越多,时间开销越大。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够提高检测准确度、提高检测稳定性、能够降低时间开销的基于条件数指导的浮点程序精度缺陷检测方法。
为解决上述技术问题,本发明采用以下技术方案:
一种基于条件数指导的浮点程序精度缺陷检测方法,其步骤包括:
步骤S1.预处理;
步骤S2.输入域划分:对目标程序的输入域进行划分,获取输入域划分后的分输入域表;
步骤S3.第一阶段搜索:对分输入域使用差分演化搜索算法查找能触发可能最大条件数的程序输入,并对整个分输入域表按找到的输入对应的程序输出的误差从大到小进行排序,获取排序后的分输入域列表并记录对应查找到的程序输入;
步骤S4.第二阶段搜索:从排序后的分输入域表的表头取出分输入域,从第一阶段找到的程序输入作为初始测试点,查找能触发最大程序输出误差的程序输入,保存查找到的程序输入和对应输出误差到搜索结果表;
步骤S5.精度缺陷验证:对搜索结果表按程序输出的误差从大到小进行排序,取程序输出误差的最大值,判断程序输出是否不满足用户精度需求,若是则判断为精度缺陷,返回程序输入和对应的输出误差,检测结束,若否且分配的计算资源还未耗尽则返回步骤S2重新执行,若计算资源已经耗尽,则返回未检测到精度缺陷,检测结束。
作为本发明的进一步改进:所述步骤S1的步骤包括:
步骤S11.将程序加载至动态重编译框架中;
步骤S12.识别目标程序中的浮点运算指令并替换为高精度运算指令;
步骤S13.完成所有浮点指令的替换,生成目标程序的高精度执行版本。
作为本发明的进一步改进:所述步骤S2的步骤包括:
步骤S21.对目标程序的每个输入的输入域按浮点数分布进行划分,具体划分方法是:对大于-1小于1的部分,按[0,1]和[-1,0]进行划分;对于输入大于1,的部分按照[2k,2k +1]进行划分;对于输入小于-1的部分按照[-2k+1,-2k]进行划分;其中,0≤k≤1023,k属于整数;获取每个输入对应的分输入域集合;
步骤S22.对目标程序的所有输入的分输入域集合进行笛卡尔乘操作,获取目标程序的分输入域表。
作为本发明的进一步改进:所述步骤S3中计算条件数的具体公式是:
Figure GDA0002958103420000031
其中C(x)代表条件数函数,f(x)代表数学函数,f′(x)代表f(x)的一阶导数,x表示输入。
作为本发明的进一步改进:所述步骤S3中使用差分演化搜索算法进行搜索步骤为:
步骤S31.从分输入域中随机生成n个初始程序输入;
步骤S32.使用条件数计算公式计算程序输入对应的条件数值;
步骤S33.根据条件数值和差分演化规则生成新的输入,并重新选取n个程序输入;
步骤S34.经过m次执行S33步骤后,从最后n个程序输入中选取能触发最大条件数的输入;其中m是正整数,是用户可设置的参数。
作为本发明的进一步改进:所述步骤S33中差分演化规则中生成新输入的具体公式是:
b′=b0+mutation*(population[rand1]-population[rand0])
其中b′是新生成的程序输入,b0是原程序输入,mutation是变异系数取值范围是0到1之间的小数,population是n个程序输入的列表,rand1和rand0是大于等于0小于等于n的随机整数;
所述步骤S33中差分演化规则中选取输入的标准是从新生成的输入和原输入中选取对应条件数大的程序输入,即若C(b′)>C(b0),那么选取b′,C(b′)≤C(b0),那么选取b0
作为本发明的进一步改进:所述步骤S4中计算程序输出误差的公式是:
Figure GDA0002958103420000041
其中fp(x)代表目标程序,f(x)代表目标程序对应的数学函数,x表示输入。
作为本发明的进一步改进:所述步骤S4中使用马尔科夫链蒙特卡洛采样算法进行搜索的具体步骤为:
步骤S41.从初始程序输入出发,产生一个新的程序输入;
步骤S42.计算新的程序输入对应的程序输出误差,根据采样规则选择下一个程序输入,并根据所选取的程序输入生成一个新的程序输入;
步骤S43.经过k次执行S42步骤后,返回最后选择的程序输入;其中k是正整数,是用户可设置的参数。
作为本发明的进一步改进:所述步骤S42中使用采样规则选择下一个程序输入的具体步骤是:
步骤S421.如果Error(b′)>Error(b0),那么选择b′作为下一个输入点;
步骤S422.如果Error(b′)≤Error(b0),那么以概率p(b′)选择b′,否则选择b0作为下一个输入点;
p(b′)=exp(-(Error(b′)-Error(b0))/T)
所述步骤S422中exp是指数函数,T是一个算法自动调整的参数。
作为本发明的进一步改进:所述步骤S5中判断程序输出是否不满足用户精度需求的不等式条件是:
Error(f(x),fp(x))<ε
其中,ε是用户给定的程序输出误差上限,如果Error(f(x),fp(x))大于ε则表示输入x触发了精度缺陷,若小于ε则表示程序输出满足用户精度需求。
与现有技术相比,本发明的优点在于:
1、本发明的基于条件数指导的浮点程序精度缺陷检测方法,能够提高检测准确度。相比于现有检测方法只使用浮点程序的输出误差作指导,本发明同时利用浮点程序的输出误差和对应数学函数的条件数作为指导,提高了检测的准确度。
2、本发明的基于条件数指导的浮点程序精度缺陷检测方法,能够提高检测稳定性。相比于现有检测方法直接在整个输入域进行搜索,本发明通过按照浮点数分布对输入域划分,使得检测方法在全输入域内的采样率基本一致,同时使用近似计算条件数的方法,提高了相同时间内能够完成验证的采样点的数量,进而提高了检测的稳定性。相比于现有检测方法只使用单一搜索算法进行搜索,本发明使用了两种全局搜索算法进行分阶段搜索,也有利于提高检测的稳定性。
3、本发明的基于条件数指导的浮点程序精度缺陷检测方法,能够降低时间开销。相比于现有检测方法只使用时间开销很大的程序输出误差进行指导,本发明使用近似计算条件数的方法,大大降低了第一阶段搜索的时间开销,同时第一阶段搜索为第二阶段搜索缩小了搜索范围,减少了执行程序高精度版本的次数,也降低了时间开销。
附图说明
图1是本发明方法的流程示意图。
图2是本发明在具体应用实例中实际执行时的原理示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1和图2所示,本发明的一种基于条件数指导的浮点程序精度缺陷检测方法,其步骤包括:
步骤S1.预处理:对目标程序进行分析,生成目标程序的高精度执行版本。
步骤S2.输入域划分:对目标程序的输入域进行划分,获取输入域划分后的分输入域表。
步骤S3.第一阶段搜索:对分输入域使用差分演化搜索算法查找能触发可能最大条件数的程序输入,并对整个分输入域表按找到的输入对应的程序输出的误差从大到小进行排序,获取排序后的分输入域列表并记录对应查找到的程序输入。
步骤S4.第二阶段搜索:从排序后的分输入域表的表头取出分输入域,从第一阶段找到的程序输入作为初始测试点,使用马尔科夫链蒙特卡洛采样算法查找能触发最大程序输出误差的程序输入,保存查找到的程序输入和对应输出误差到搜索结果表。
步骤S5.精度缺陷验证:对搜索结果表按程序输出的误差从大到小进行排序,取程序输出误差的最大值,判断程序输出是否不满足用户精度需求,若是则判断为精度缺陷,返回程序输入和对应的输出误差,检测结束,若否且分配的计算资源还未耗尽则返回S2重新执行,若计算资源已经耗尽,则返回未检测到精度缺陷,检测结束。
在具体应用实例中,所述步骤S1的具体步骤为:
步骤S11.将程序加载至动态重编译框架中。
步骤S12.识别目标程序中的浮点运算指令并替换为高精度运算指令。
步骤S13.完成所有浮点指令的替换,生成目标程序的高精度执行版本。
在具体应用实例中,所述步骤S2的具体步骤为:
步骤S21.对目标程序的每个输入的输入域按浮点数分布进行划分,具体划分方法是:对大于-1小于1的部分,按[0,1]和[-1,0]进行划分;对于输入大于1,的部分按照[2k,2k +1]进行划分;对于输入小于-1的部分按照[-2k+1,-2k]进行划分。其中,0≤k≤1023,k属于整数。获取每个输入对应的分输入域集合。
步骤S22.对目标程序的所有输入的分输入域集合进行笛卡尔乘操作,获取目标程序的分输入域表。
在具体应用实例中,所述步骤S3中计算条件数的具体公式是:
Figure GDA0002958103420000071
其中C(x)代表条件数函数,f(x)代表数学函数,f′(x)代表f(x)的一阶导数,x表示输入。
本发明使用了浮点程序fp(x)来近似原条件数函数公式中的数学函数f(x),即:
Figure GDA0002958103420000072
因为计算数学函数f(x)需要使用目标程序的高精度执行版本进行计算,时间开销很大,本发明通过使用fp(x)近似f(x),来降低计算条件数的时间开销。
对于步骤S2中输入域的划分方法,其它基于浮点数分布的划分方法都属于本发明划分方法的有效变体,其关键点在于对合理划分搜索空间,平衡采样率,提高检测方法的稳定性。
在具体应用实例中,所述步骤S3中使用差分演化搜索算法进行搜索的具体步骤为:
步骤S31.从分输入域中随机生成n个初始程序输入。
步骤S32.使用条件数计算公式计算程序输入对应的条件数值。
步骤S33.根据条件数值和差分演化规则生成新的输入,并重新选取n个程序输入。
步骤S34.经过m次执行S33步骤后,从最后n个程序输入中选取能触发最大条件数的输入。其中m是正整数,是用户可设置的参数。
对于步骤S3中使用的条件数计算的近似方法,其它类似的对条数计算的近似计算方法都属于本发明近似方法的有效变体,其关键点在于使用条件数做指导,并通过近似计算的方法快速计算条件数,降低时间开销。
在具体应用实例中,所述步骤S33中差分演化规则中生成新输入的具体公式是:
b′=b0+mutation*(population[rand1]-population[rand0])
其中b′是新生成的程序输入,b0是原程序输入,mutation是变异系数取值范围是0到1之间的小数,population是n个程序输入的列表,rand1和rand0是大于等于0小于等于n的随机整数。
所述步骤S33中差分演化规则中选取输入的标准是从新生成的输入和原输入中选取对应条件数大的程序输入,即若C(b′)>C(b0),那么选取b′,C(b′)≤C(b0),那么选取b0
在具体应用实例中,所述步骤S4中计算程序输出误差的公式是:
Figure GDA0002958103420000081
其中fp(x)代表目标程序,f(x)代表目标程序对应的数学函数,x表示输入。
本发明使用目标程序的高精度执行版本计算f(x)的输出值。
在具体应用实例中,所述步骤S4中使用马尔科夫链蒙特卡洛采样算法进行搜索的具体步骤为:
步骤S41.从初始程序输入出发,产生一个新的程序输入。
步骤S42.计算新的程序输入对应的程序输出误差,根据采样规则选择下一个程序输入,并根据所选取的程序输入生成一个新的程序输入。
步骤S43.经过k次执行S42步骤后,返回最后选择的程序输入。其中k是正整数,是用户可设置的参数。
在具体应用实例中,所述步骤S41和S42中生成新输入的方法是:
b′=b0+mutation*step
其中b′是新生成的程序输入,b0是原程序输入,mutation是变异系数取值范围是0到1之间的小数,step=0*ulp(b0),其中θ是一个0到1010之间的正整数,ulp(b0)的计算公式如下:
Figure GDA0002958103420000091
在具体应用实例中,所述步骤S42中使用采样规则选择下一个程序输入的具体步骤是:
步骤S421.如果Error(b′)>Error(b0),那么选择b′作为下一个输入点。
步骤S422.如果Error(b′)≤Error(b0),那么以概率p(b′)选择b′,否则选择b0作为下一个输入点。
p(b′)=exp(-(Error(b′)-Error(b0))/T)
所述步骤S422中exp是指数函数,T是一个算法自动调整的参数,本发明中设定初始值为1.0。
在具体应用实例中,所述步骤S5中判断程序输出是否不满足用户精度需求的不等式条件是:
Error(f(x),fp(x))<ε
其中ε是用户给定的程序输出误差上限,如果Error(f(x),fp(x))大于ε则表示输入x触发了精度缺陷,若小于ε则表示程序输出满足用户精度需求。
所述步骤S5中计算资源包括:检测方法的执行时间,采样点数量和存储开销等。
在上述技术方案中,差分演化搜索算法和马尔科夫链蒙特卡洛采样算法是本发明使用的两种经典的全局搜索算法,使用其它全局搜索算法,比如遗传算法、随机算法等,替换本发明中使用算法都属于本发明方法的有效变体,其关键点在于分阶段搜索,第一阶段使用计算的时间开销较小的条件数做指导进行快速搜索,第二阶段在第一阶段的基础上在较小搜索范围内搜索能触发最大程序输出误差的输入。动态重编译则是在程序执行过程中对程序部分进行重新编译。
由上可知,本发明同时利用浮点程序的输出误差和对应数学函数的条件数作为指导,目的就在于提高检测的准确度。本发明首先对输入域按照浮点数的分布进行划分,同时根据指导规则使用两种全局搜索算法进行分阶段搜素,目的就在于提高检测方法的稳定性。本发明首先对条件数函数进行近似,使得条件数函数计算速度和原程序执行时间相近,然后采用分阶段搜索,第一阶段只使用条件数作为指导,第二阶段才使用浮点程序输出的误差进行指导,目的就在于在相同采样点数目下,降低检测的时间开销。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (10)

1.一种基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,步骤包括:
步骤S1.预处理;
步骤S2.输入域划分:对目标程序的输入域进行划分,获取输入域划分后的分输入域表;
步骤S3.第一阶段搜索:对分输入域使用差分演化搜索算法查找能触发可能最大条件数的程序输入,并对整个分输入域表按找到的输入对应的程序输出的误差从大到小进行排序,获取排序后的分输入域列表并记录对应查找到的程序输入;
步骤S4.第二阶段搜索:从排序后的分输入域表的表头取出分输入域,从第一阶段找到的程序输入作为初始测试点,查找能触发最大程序输出误差的程序输入,保存查找到的程序输入和对应输出误差到搜索结果表;
步骤S5.精度缺陷验证:对搜索结果表按程序输出的误差从大到小进行排序,取程序输出误差的最大值,判断程序输出是否不满足用户精度需求,若是则判断为精度缺陷,返回程序输入和对应的输出误差,检测结束,若否且分配的计算资源还未耗尽则返回步骤S2重新执行,若计算资源已经耗尽,则返回未检测到精度缺陷,检测结束。
2.根据权利要求1所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S1的步骤包括:
步骤S11.将程序加载至动态重编译框架中;
步骤S12.识别目标程序中的浮点运算指令并替换为高精度运算指令;
步骤S13.完成所有浮点指令的替换,生成目标程序的高精度执行版本。
3.根据权利要求1所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S2的步骤包括:
步骤S21.对目标程序的每个输入的输入域按浮点数分布进行划分,具体划分方法是:对大于-1小于1的部分,按[0,1]和[-1,0]进行划分;对于输入大于1的部分按照[2k,2k+1]进行划分;对于输入小于-1的部分按照[-2k+1,-2k]进行划分;其中,0≤k≤1023,k属于整数;获取每个输入对应的分输入域集合;
步骤S22.对目标程序的所有输入的分输入域集合进行笛卡尔乘操作,获取目标程序的分输入域表。
4.根据权利要求1所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S3中计算条件数的具体公式是:
Figure FDA0002958103410000021
其中C(x)代表条件数函数,f(x)代表数学函数,f′(x)代表f(x)的一阶导数,x表示输入。
5.根据权利要求1-4中任意一项所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S3中使用差分演化搜索算法进行搜索步骤为:
步骤S31.从分输入域中随机生成n个初始程序输入;
步骤S32.使用条件数计算公式计算程序输入对应的条件数值;
步骤S33.根据条件数值和差分演化规则生成新的输入,并重新选取n个程序输入;
步骤S34.经过m次执行S33步骤后,从最后n个程序输入中选取能触发最大条件数的输入;其中m是正整数,是用户可设置的参数。
6.根据权利要求5所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S33中差分演化规则中生成新输入的具体公式是:
b′=b0+mutation*(population[rand1]-population[rand0])
其中b′是新生成的程序输入,b0是原程序输入,mutation是变异系数取值范围是0到1之间的小数,population是n个程序输入的列表,rand1和rand0是大于等于0小于等于n的随机整数;
所述步骤S33中差分演化规则中选取输入的标准是从新生成的输入和原输入中选取对应条件数大的程序输入,即若C(b′)>C(b0),那么选取b′,C(b′)≤C(b0),那么选取b0,C(b′)为b′对应的条件数,C(b0)为b0对应的条件数。
7.根据权利要求1-4中任意一项所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S4中计算程序输出误差的公式是:
Figure FDA0002958103410000031
其中fp(x)代表目标程序,f(x)代表目标程序对应的数学函数,x表示输入。
8.根据权利要求7所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S4中使用马尔科夫链蒙特卡洛采样算法进行搜索,具体步骤为:
步骤S41.从初始程序输入出发,产生一个新的程序输入;
步骤S42.计算新的程序输入对应的程序输出误差,根据采样规则选择下一个程序输入,并根据所选取的程序输入生成一个新的程序输入;
步骤S43.经过k次执行S42步骤后,返回最后选择的程序输入;其中k是正整数,是用户可设置的参数。
9.根据权利要求8所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S42中使用采样规则选择下一个程序输入的具体步骤是:
步骤S421.如果Error(b′)>Error(b0),那么选择b′作为下一个输入点,b′是新生成的程序输入,b0是原程序输入,Error(b′)为b′对应的输出误差,Error(b0)为b0对应的输出误差;
步骤S422.如果Error(b′)≤Error(b0),那么以概率p(b′)选择b′,否则选择b0作为下一个输入点;
p(b′)=exp(-(Error(b′)-Error(b0))/T)
所述步骤S422中exp是指数函数,T是一个算法自动调整的参数。
10.根据权利要求1-4中任意一项所述的基于条件数指导的浮点程序精度缺陷检测方法,其特征在于,所述步骤S5中判断程序输出是否不满足用户精度需求的不等式条件是:
Error(f(x),fp(x))<ε
其中,ε是用户给定的程序输出误差上限,如果Error(f(x),fp(x))大于ε则表示输入x触发了精度缺陷,若小于ε则表示程序输出满足用户精度需求,f(x)代表目标程序对应的数学函数,fp(x)代表目标程序,Error(f(x),fp(x))为目标程序对应的程序输出误差。
CN201910033063.XA 2019-01-14 2019-01-14 一种基于条件数指导的浮点程序精度缺陷检测方法 Active CN109814834B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910033063.XA CN109814834B (zh) 2019-01-14 2019-01-14 一种基于条件数指导的浮点程序精度缺陷检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910033063.XA CN109814834B (zh) 2019-01-14 2019-01-14 一种基于条件数指导的浮点程序精度缺陷检测方法

Publications (2)

Publication Number Publication Date
CN109814834A CN109814834A (zh) 2019-05-28
CN109814834B true CN109814834B (zh) 2021-04-20

Family

ID=66604310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910033063.XA Active CN109814834B (zh) 2019-01-14 2019-01-14 一种基于条件数指导的浮点程序精度缺陷检测方法

Country Status (1)

Country Link
CN (1) CN109814834B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625223B (zh) * 2020-05-26 2023-04-28 中国人民解放军国防科技大学 一种基于静态分析与抽象的软件设计重建方法
KR102664797B1 (ko) * 2023-03-15 2024-05-10 고려대학교 산학협력단 동적 타입 언어에서 발생하는 타입에러를 자동 수정하는 장치 및 방법
CN116431479B (zh) * 2023-03-16 2024-06-28 河南省核芯微电子科技有限公司 一种基于Dyninst的浮点程序精度损失检测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751334A (zh) * 2009-12-30 2010-06-23 中国人民解放军国防科学技术大学 一种基于还原程序的硬件故障检测方法
CN102646060A (zh) * 2012-02-23 2012-08-22 中国人民解放军国防科学技术大学 高性能计算机系统中不满足计算精度要求的结点检测方法
CN105278914A (zh) * 2015-11-26 2016-01-27 中国科学院半导体研究所 基于fpga的可配置浮点向量范数求解ip核
CN108139912A (zh) * 2015-10-24 2018-06-08 艾伦·A·约根森 在浮点运算期间计算和保留误差边界的装置和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173682A1 (en) * 2011-12-28 2013-07-04 Microsoft Corporation Floating-point error propagation in dataflow

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751334A (zh) * 2009-12-30 2010-06-23 中国人民解放军国防科学技术大学 一种基于还原程序的硬件故障检测方法
CN102646060A (zh) * 2012-02-23 2012-08-22 中国人民解放军国防科学技术大学 高性能计算机系统中不满足计算精度要求的结点检测方法
CN108139912A (zh) * 2015-10-24 2018-06-08 艾伦·A·约根森 在浮点运算期间计算和保留误差边界的装置和方法
CN105278914A (zh) * 2015-11-26 2016-01-27 中国科学院半导体研究所 基于fpga的可配置浮点向量范数求解ip核

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FLOATING-POINT NUMBERS WITH ERROR-ESTIMATES;MASOTTI, G;《COMPUTER-AIDED DESIGN》;19930930;524-538 *
浮点计算程序误差分析理论研究及其实现;宋凯;《中国优秀硕士学位论文全文数据库 信息科技辑》;20151015;I138-48 *

Also Published As

Publication number Publication date
CN109814834A (zh) 2019-05-28

Similar Documents

Publication Publication Date Title
CN109814834B (zh) 一种基于条件数指导的浮点程序精度缺陷检测方法
US7917326B2 (en) Storage medium for estimating and improving test case generation
Alrubaye et al. On the use of information retrieval to automate the detection of third-party java library migration at the method level
Sasaki et al. Finding file clones in FreeBSD ports collection
CN112699050A (zh) 一种基于变异体分组的软件测试用例多种群进化生成方法
Lengler et al. The (1+ 1)-EA on noisy linear functions with random positive weights
Wu et al. Cooperative coevolutionary CMA-ES with landscape-aware grouping in noisy environments
CN108761310B (zh) 一种量子芯片的测试方法
CN111445025B (zh) 确定业务模型超参数的方法和装置
Pashaei et al. Random forest in splice site prediction of human genome
US7590624B2 (en) Process for identifying duplicate values in very large data sets
CN107016073A (zh) 一种文本分类特征选择方法
Kulalvaimozhi et al. Performance analysis of sorting algorithm
CN114201869A (zh) 模型量化方法、装置及存储介质
JP7184093B2 (ja) 熟練指数提供装置、熟練指数提供方法、及びプログラム
CN113609247A (zh) 一种基于改进Simhash算法的大数据文本去重技术
CN111290946A (zh) 基于原子状态函数的浮点数误差检测方法和装置
US10025831B2 (en) Adaptive short lists and acceleration of biometric database search
Zhang et al. An automatic approach for scoring vulnerabilities in risk assessment
Pravorska Additional Detection of Clones Using Locally Sensitive Hashing
Chockler et al. Finding rare numerical stability errors in concurrent computations
CN114860190B (zh) 一种针对高性能计算函数库中浮点算术表达式在指定区间内误差较大子区间划分方法及系统
CN115080985B (zh) 基于分块的大规模代码静态分析方法和系统
Zhang et al. Hashing-based just-in-time learning for big data quality prediction
CN115858239A (zh) 通过排序分析检测数值程序中高浮点误差的方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant