CN113094021A - 一种经验库制导的浮点程序优化加速方法 - Google Patents

一种经验库制导的浮点程序优化加速方法 Download PDF

Info

Publication number
CN113094021A
CN113094021A CN202110438904.2A CN202110438904A CN113094021A CN 113094021 A CN113094021 A CN 113094021A CN 202110438904 A CN202110438904 A CN 202110438904A CN 113094021 A CN113094021 A CN 113094021A
Authority
CN
China
Prior art keywords
program
optimization
experience
programs
rule
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.)
Granted
Application number
CN202110438904.2A
Other languages
English (en)
Other versions
CN113094021B (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202110438904.2A priority Critical patent/CN113094021B/zh
Publication of CN113094021A publication Critical patent/CN113094021A/zh
Application granted granted Critical
Publication of CN113094021B publication Critical patent/CN113094021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提出了一种经验库制导的浮点程序优化加速方法。该方法基于浮点成因相似性原理,即若两个浮点数值程序的计算过程相似,它们误差累积的原因也往往是类似的,因而可以使用类似的程序转换规则对其重写,从而降低程序的累积误差。基于此,加速策略将浮点数值程序的符号结构特征以及优化其累积误差所用到的程序转换规则提取出来,作为优化经验保存于经验库中。待优化其他程序时,首先在经验库中匹配待优化程序的符号结构特征,寻找相似程序的优化经验,并利用这些经验来指导并加速优化过程。优化经验中保存的程序转换规则会被优先用于重写待优化程序,避免了对整个规则库进行遍历。这个过程减少了优化所需的时间开销,提高了浮点优化的可用性。

Description

一种经验库制导的浮点程序优化加速方法
技术领域
本发明涉及一种经验库制导的浮点程序优化加速方法,属于程序可靠性保障技术应用领域。
背景技术
浮点数值程序在科学、工程和金融等多个领域具有非常广泛的应用。它使用有限精度的浮点数运算来模拟实数运算,从而不可避免地引入了舍入误差。不当的程序实现有可能导致舍入误差被逐步累积和放大,最终导致程序的计算结果和预期不一致,从而引发系统故障。在生命攸关的计算系统中,浮点误差引发的程序故障有可能带来灾难性后果。因此,浮点数值程序的正确性和可靠性需要得到保障。
为了保障浮点数值程序的可靠性,基于程序重写技术的自动化浮点优化技术逐渐得到关注。它使用程序转换规则将浮点数值程序以数值更为稳定的算法进行重写,以生成计算误差更小的程序。由于程序转换规则是一些经过严格证明的数学等式,保证了重写后的程序和重写前的程序在语义上具备等价性。
程序重写技术的缺陷在于优化效率不高。为了找到合适的程序转换规则,它需要反复遍历规则库。在遍历过程中,需要尝试用程序转换规则对程序进行重写,并通过观察重写后程序的计算误差是否减小,来判断规则的有效性。这个过程十分耗时,且大部分时间被浪费于无意义的规则尝试中,造成了优化效率的低下。
针对这一问题,本发明提出了一种经验库制导的浮点程序优化加速策略。该策略基于浮点成因相似性原理,即若两个浮点数值程序的计算过程相似,它们误差累积的原因也往往是类似的,因而可以使用类似的程序转换规则对其重写,从而降低程序的累积误差。基于此,加速策略将浮点数值程序的符号结构特征以及优化其累积误差所用到的程序转换规则提取出来,作为优化经验保存于经验库中。待优化其他程序时,首先在经验库中匹配待优化程序的符号结构特征,寻找相似程序的优化经验,并利用这些经验来指导并加速优化过程。优化经验中保存的程序转换规则会被优先用于重写待优化程序,从而避免了对整个规则库进行遍历。这个过程减少了优化所需的时间开销,从而提高了浮点优化技术的可用性。
发明内容
技术问题:本发明提出了一种经验库制导的浮点程序优化加速方法,该方法可以提高基于程序重写技术的浮点程序优化方法的优化效率,从而显著提高这类技术的可用性。
技术方案:本发明基于经验库制导技术,可以帮助优化算法快速找出能有效降低程序计算误差的程序转换规则。使用这些规则对程序进行重写,可以生成计算误差更小的等价程序,从而提高浮点程序的数值稳定性。本方法包含的具体步骤为:
1-1.从优化经验库中查询相似程序的优化经验,并生成一个候选优化经验集,这些经验记录了在优化相似程序时使用过的程序转换规则序列,这些规则序列将被用于指导优化过程;
1-2.获取到优化经验后,优化算法优先使用优化经验记录的程序转换规则对待优化程序进行重写,并生成一个程序候选集;通过区间划分技术,优化算法从程序候选集中挑选出合适的候选程序,并对其进行合并来生成最终的优化结果;
1-3.通过对优化后程序进行解析,抽取出该程序的优化经验;这些优化经验被保存到优化经验库中,以便在优化其他程序时发挥其指导作用。
其中,
所述的步骤1-1,从优化经验库中查询相似程序的优化经验,匹配待优化程序与经验库程序的相似程度,找到相似程度较高的程序,并将它们的优化经验抽取出来。
所述的步骤1-3.通过对优化后程序进行解析,抽取出该程序的优化经验,具体步骤如下:
2-1.抽取待优化程序的符号结构特征,计算其程序索引值;
2-2.根据步骤2-1计算的程序索引值,计算出各分区的查找优先级,并将优先级最高的分区作为查询目标;
2-3.通过二分搜索算法来定位初始的查找位置;
2-4.从初始查找位置开始,按序从前取n/2条优化经验,往后取n/2条优化经验,并开始遍历这n条优化经验;
2-5.如果这n条优化经验还没有全部遍历完,跳转至步骤2-6;否则,跳转至步骤2-9;
2-6.取出下一条要查看的优化经验;
2-7.查看步骤2-6中优化经验记录的程序与待优化程序是否相似;如果相似,跳转到步骤2-8;否则,跳转到步骤2-5;
2-8.将步骤2-6生成的优化经验加入到候选经验集中,并跳转到步骤2-5;
2-9.返回候选经验集,结束经验查询的过程。
所述的步骤1-2,优化算法优先使用优化经验记录的程序转换规则对待优化程序进行重写,是利用候选经验集来制导程序转换规则的选取过程,从而避免将时间浪费在无效规则上,以此来提高优化的效率。
所述的利用候选经验集来制导程序转换规则的选取过程,具体步骤如下:
3-1.取出候选优化经验集中的优化经验,并对其进行遍历;
3-2.如果已遍历完所有的优化经验,跳转到步骤3-9;否则,跳转到步骤3-3;
3-3.取出下一条要遍历的优化经验;
3-4.抽取优化经验所保存的程序和规则序列,并遍历规则序列来重写待优化程序;
3-5.如果已遍历完规则序列,则跳转到步骤3-8;否则,跳转至步骤3-6;
3-6.取出规则序列的下一条规则;
3-7.使用步骤3-6的规则对当前程序进行重写;如果发现规则和程序不匹配,则寻找一条与当前规则相似程度最高且与当前程序相匹配的规则,并使用新规则来重写当前程序;程序重写完成后,跳转至步骤3-5;
3-8.将当前程序加入到候选程序集中,然后跳转至步骤3-2;
3-9.取出候选程序集中所有候选程序,然后划分程序的输入定义域,并为每个分区分配一个在该分区内计算误差最小的候选程序,最后将这些候选程序进行合并得到最终优化结果,并结束整个流程。
所述的步骤1-3,通过对优化后程序进行解析,抽取出该程序的优化经验,是抽取程序优化过程中使用到的程序转换规则序列,将其总结成优化经验并保存到优化经验库中,在优化相似程序时,这些优化经验能帮助经验库发挥制导作用。
所述将其总结成优化经验并保存到优化经验库中,具体步骤如下:
4-1.从优化后程序中解析出程序转换规则序列,并生成对应的优化经验;
4-2.根据待优化程序生成程序索引值;
4-3.根据步骤4-2生成的程序索引值确定优化经验应该保存在哪个分区;
4-4.在步骤4-3所指的分区内查找优化经验的存储位置;
4-5.查看该优化经验是否已存在于优化经验库中;如果存在,则结束整个流程;否则,跳转至步骤4-6;
4-6.将优化经验进行保存,并结束整个流程。
有益效果:在经验库的制导下,本发明所述的加速策略可以帮助浮点优化工具快速搜索有效的程序转换规则。使用这些规则对程序进行重写,可以生成数值更为稳定的浮点数值程序。这个过程中避免了大量不必要的规则检验过程,显著提高了优化的效率。具体来说,本发明所述的方法具有如下的有益效果:
1.)本发明所提供的加速策略能够帮助浮点优化技术快速寻找有效的程序转换规则,从而显著提高优化的效率。通过经验库制导技术,加速策略会优先使用相似程序在优化过程中用到的程序转换规则。这个过程避免了对整个规则库进行遍历,从而节约了大量的时间开销。
2.)本发明所提供的加速策略是全自动的,加速过程不需要任何手工的干预。使用者只需要按照规定格式编写输入程序,加速策略会自动使用经验库制导技术来加速优化过程,从而快速生成计算误差更小的程序。
3.)本发明所提出的方法具备可演化性。一方面,加速过程离不开经验库的制导。另一方面,每次优化结束后,相关优化信息会被总结成优化经验并被保存在优化经验库中。随着越来越多的优化经验被加入到经验库中,经验库的制导能力会变得越来越强,使得本发明的使用场景更多样。
4.)本发明所提出的方法具备可拓展性。本发明并不只适用于一种浮点优化工具,而是适用于所有基于程序重写技术的浮点优化工具。因此,若将来出现优化能力更强的浮点优化工具,也可轻易利用本发明所提出的技术来进行加速。
附图说明
图1为优化加速的总流程。
图2为查询经验的流程。
图3为优化程序的流程。
图4为保存经验的流程。
具体实施方式
本发明提出了一种经验库制导的浮点程序优化加速策略。该策略的加速对象是基于程序重写技术的浮点程序优化工具。在经验库的制导下,加速策略可以帮助优化算法快速找到有效的程序转换规则,并使用这些规则来重写待优化程序,以生成计算误差更小的程序。这个过程避免了低效的规则库遍历操作,从而节约了大量的时间开销。
图1给出了加速策略的具体流程,即先从经验库中找到相似程序的优化经验,并生成一个候选优化经验集。这些优化经验可以制导并加速程序转换规则的选取过程。规则选取过程结束后,待优化程序会被重写,从而生成计算误差更小的程序。最后,相关优化信息会被总结成优化经验,并保存在优化经验库中,从而增强经验库的制导能力。具体的实施过程可以利用已有的控制流图构建相关工具。
以下部分就实施过程中的一些具体细节作更进一步的描述:
查询经验的过程依赖准确的程序相似度分析。在具体实施时,本发明采用了一种符号相似度和结构相似度相结合的程序相似度分析算法,其形式化定义如下:
S=(Ssym+Sstruct)/2
其中,S表示程序相似度,Ssym表示符号相似度,Sstruct表示结构相似度。下面对两种相似度进行分别介绍。
一、符号相似度分析
符号相似度反映了两个浮点数值程序在符号特征上的相似程度。在具体实施时,符号相似度采用了下述定义:
Figure BDA0003032580850000051
在上述定义中,sym_set(p)表示浮点数值程序p的符号集,|s|表示集合s的元素个数。在程序这个上下文中,符号既可以是运算符,也可以是操作数。常见的运算符可以是基本的四则运算,比如+,-,也可以是复杂的数学函数,比如sin、log。常见的操作数可以是常量,比如1.2,也可以是程序的输入变量,比如x,y。根据定义,如果两个程序共享的符号数量越多,它们在符号特征上的相似程度则越高。可以看出,符号相似度是一种计算次序不敏感的相似度分析算法。换言之,符号相似度并不关心符号在程序中出现的位置,只关心符号是否存在。
二、结构相似度分析
结构相似度衡量的是两个浮点数值程序在结构特征上的相似程度。在具体实施时,结构相似度采用了下述定义:
Figure BDA0003032580850000052
EN(p1,p2)={s1|eq(s1,s2)∧s1∈(nodes(p1)∧s2∈(nodes(p2)}
在上述定义中,nodes(p)表示浮点数值程序p的非去重符号集,eq函数用于判断两个符号是否等价。根据eq函数的定义,当下述两个条件得到满足时,两个符号互为等价。其一,两个符号处在各自程序的相同位置上。在判断位置关系时,需将程序转换成等价的二叉树形式,并根据根结点到对应结点的路径来唯一标识其所在位置。其二,两个符号处在相同分组。在本发明的实施中,符号会被预先分组。分组的基本原则是语义相近的符号被分为同一组,语义相异的符号则被分作不同分组。例如,符号+和-被分为同一分组,而符号sin和+被分为不同分组。特别地,所有变量被分入一个分组,所有常量也被分入同一分组。
与符号相似度不同,结构相似度是一种计算次序敏感的相似度分析方法。换言之,符号所在的位置会影响结构相似度的计算结果。它可以和符号相似度形成互补,使得程序相似度分析算法能面向更多变的应用场景。

Claims (7)

1.一种经验库制导的浮点程序优化加速方法,其特征在于该方法包含的具体步骤为:
1-1.从优化经验库中查询相似程序的优化经验,并生成一个候选优化经验集,这些经验记录了在优化相似程序时使用过的程序转换规则序列,这些规则序列将被用于指导优化过程;
1-2.获取到优化经验后,优化算法优先使用优化经验记录的程序转换规则对待优化程序进行重写,并生成一个程序候选集;通过区间划分技术,优化算法从程序候选集中挑选出合适的候选程序,并对其进行合并来生成最终的优化结果;
1-3.通过对优化后程序进行解析,抽取出该程序的优化经验;这些优化经验被保存到优化经验库中,以便在优化其他程序时发挥其指导作用。
2.根据权利要求1所述的一种经验库制导的浮点程序优化加速方法,其特征在于所述的步骤1-1,从优化经验库中查询相似程序的优化经验,匹配待优化程序与经验库程序的相似程度,找到相似程度较高的程序,并将它们的优化经验抽取出来。
3.根据权利要求2所述的一种经验库制导的浮点程序优化加速方法,其特征在于所述的步骤1-3.通过对优化后程序进行解析,抽取出该程序的优化经验,具体步骤如下:
2-1.抽取待优化程序的符号结构特征,计算其程序索引值;
2-2.根据步骤2-1计算的程序索引值,计算出各分区的查找优先级,并将优先级最高的分区作为查询目标;
2-3.通过二分搜索算法来定位初始的查找位置;
2-4.从初始查找位置开始,按序从前取n/2条优化经验,往后取n/2条优化经验,并开始遍历这n条优化经验;
2-5.如果这n条优化经验还没有全部遍历完,跳转至步骤2-6;否则,跳转至步骤2-9;
2-6.取出下一条要查看的优化经验;
2-7.查看步骤2-6中优化经验记录的程序与待优化程序是否相似;如果相似,跳转到步骤2-8;否则,跳转到步骤2-5;
2-8.将步骤2-6生成的优化经验加入到候选经验集中,并跳转到步骤2-5;
2-9.返回候选经验集,结束经验查询的过程。
4.根据权利要求1所述的一种经验库制导的浮点程序优化加速方法,其特征在于所述的步骤1-2,优化算法优先使用优化经验记录的程序转换规则对待优化程序进行重写,是利用候选经验集来制导程序转换规则的选取过程,从而避免将时间浪费在无效规则上,以此来提高优化的效率。
5.根据权利要求4所述的一种经验库制导的浮点程序优化加速方法,其特征在于所述的利用候选经验集来制导程序转换规则的选取过程,具体步骤如下:
3-1.取出候选优化经验集中的优化经验,并对其进行遍历;
3-2.如果已遍历完所有的优化经验,跳转到步骤3-9;否则,跳转到步骤3-3;
3-3.取出下一条要遍历的优化经验;
3-4.抽取优化经验所保存的程序和规则序列,并遍历规则序列来重写待优化程序;
3-5.如果已遍历完规则序列,则跳转到步骤3-8;否则,跳转至步骤3-6;
3-6.取出规则序列的下一条规则;
3-7.使用步骤3-6的规则对当前程序进行重写;如果发现规则和程序不匹配,则寻找一条与当前规则相似程度最高且与当前程序相匹配的规则,并使用新规则来重写当前程序;程序重写完成后,跳转至步骤3-5;
3-8.将当前程序加入到候选程序集中,然后跳转至步骤3-2;
3-9.取出候选程序集中所有候选程序,然后划分程序的输入定义域,并为每个分区分配一个在该分区内计算误差最小的候选程序,最后将这些候选程序进行合并得到最终优化结果,并结束整个流程。
6.根据权利要求1所述的一种经验库制导的浮点程序优化加速策略,其特征在于所述的步骤1-3,通过对优化后程序进行解析,抽取出该程序的优化经验,是抽取程序优化过程中使用到的程序转换规则序列,将其总结成优化经验并保存到优化经验库中,在优化相似程序时,这些优化经验能帮助经验库发挥制导作用。
7.根据权利要求6所述的一种经验库制导的浮点程序优化加速策略,其特征在于所述将其总结成优化经验并保存到优化经验库中,具体步骤如下:
4-1.从优化后程序中解析出程序转换规则序列,并生成对应的优化经验;
4-2.根据待优化程序生成程序索引值;
4-3.根据步骤4-2生成的程序索引值确定优化经验应该保存在哪个分区;
4-4.在步骤4-3所指的分区内查找优化经验的存储位置;
4-5.查看该优化经验是否已存在于优化经验库中;如果存在,则结束整个流程;否则,跳转至步骤4-6;
4-6.将优化经验进行保存,并结束整个流程。
CN202110438904.2A 2021-04-22 2021-04-22 一种经验库制导的浮点程序优化加速方法 Active CN113094021B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110438904.2A CN113094021B (zh) 2021-04-22 2021-04-22 一种经验库制导的浮点程序优化加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110438904.2A CN113094021B (zh) 2021-04-22 2021-04-22 一种经验库制导的浮点程序优化加速方法

Publications (2)

Publication Number Publication Date
CN113094021A true CN113094021A (zh) 2021-07-09
CN113094021B CN113094021B (zh) 2023-10-17

Family

ID=76679614

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110438904.2A Active CN113094021B (zh) 2021-04-22 2021-04-22 一种经验库制导的浮点程序优化加速方法

Country Status (1)

Country Link
CN (1) CN113094021B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039716A1 (en) * 2002-08-23 2004-02-26 Thompson Dean S. System and method for optimizing a computer program
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039716A1 (en) * 2002-08-23 2004-02-26 Thompson Dean S. System and method for optimizing a computer program
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
刘增明;张文山;: "嵌入式软件浮点运算精度分析", 航空兵器, no. 03, pages 44 - 47 *
单光庆;程书红;: "基于SQL中的查询优化策略研究", 电子测试, no. 01, pages 19 - 23 *
肖安祥: "一种经验库制导的浮点程序优化加速策略", 《计算机学报》, vol. 45, no. 09, pages 2014 - 2028 *
龙舜;: "往复式编译优化技术的新进展", 小型微型计算机系统, no. 03, pages 487 - 492 *

Also Published As

Publication number Publication date
CN113094021B (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
CN107016018B (zh) 数据库索引创建方法及装置
CN108710662B (zh) 语言转换方法和装置、存储介质、数据查询系统和方法
CN114880504B (zh) 一种图数据的查询方法、装置以及设备
CN104756107A (zh) 采用位置信息剖析数据
CN110969517B (zh) 一种招投标生命周期关联方法、系统、存储介质及计算机设备
CN116431837B (zh) 基于大型语言模型和图网络模型的文档检索方法和装置
Schulz Fingerprint indexing for paramodulation and rewriting
JP2020135892A (ja) 誤り訂正方法及び装置、コンピュータ読み取り可能な媒体
CN110728313A (zh) 一种用于意图分类识别的分类模型训练方法及装置
CN108459965B (zh) 一种结合用户反馈和代码依赖的软件可追踪生成方法
CN113918512A (zh) 电网运行规则知识图谱构建系统及方法
KR101116663B1 (ko) 고차원 데이터의 유사도 검색을 위한 데이터 분할방법
CN105843907A (zh) 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法
CN117807091A (zh) 数据的关联方法及装置
CN113094021B (zh) 一种经验库制导的浮点程序优化加速方法
CN115544033B (zh) 查重向量库更新、数据查重方法、装置、设备和介质
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
CN116610700A (zh) 查询语句检测方法及装置、存储介质
CN113495901B (zh) 一种面向可变长数据块的快速检索方法
CN114527963B (zh) C++二进制文件中的类继承关系识别方法及电子装置
CN114036345A (zh) 一种轨迹数据的处理方法、设备及存储介质
Maraist String shuffling over a gap between parsing and plan recognition
CN113779200A (zh) 目标行业词库的生成方法、处理器及装置
Li et al. ROPW: An online trajectory compression algorithm
CN115237936B (zh) 检测sql语句中字段的方法、装置、存储介质和设备

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