CN114564184A - 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 - Google Patents
频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 Download PDFInfo
- Publication number
- CN114564184A CN114564184A CN202210183569.0A CN202210183569A CN114564184A CN 114564184 A CN114564184 A CN 114564184A CN 202210183569 A CN202210183569 A CN 202210183569A CN 114564184 A CN114564184 A CN 114564184A
- Authority
- CN
- China
- Prior art keywords
- sequence
- tree
- energy consumption
- option
- ptr
- 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.)
- Pending
Links
- 238000005265 energy consumption Methods 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 title claims abstract description 109
- 238000005065 mining Methods 0.000 title claims abstract description 46
- 230000006872 improvement Effects 0.000 claims abstract description 106
- 230000001976 improved effect Effects 0.000 claims abstract description 4
- 238000005457 optimization Methods 0.000 claims description 63
- 238000004422 calculation algorithm Methods 0.000 claims description 60
- 230000003993 interaction Effects 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000694 effects Effects 0.000 claims description 10
- 230000002441 reversible effect Effects 0.000 claims description 8
- 238000002372 labelling Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 4
- 238000009825 accumulation Methods 0.000 claims description 3
- 238000012512 characterization method Methods 0.000 claims description 3
- 150000001875 compounds Chemical class 0.000 claims description 3
- 238000005070 sampling Methods 0.000 claims description 3
- 239000000243 solution Substances 0.000 description 108
- 238000010586 diagram Methods 0.000 description 13
- 238000003780 insertion Methods 0.000 description 11
- 230000037431 insertion Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000012088 reference solution Substances 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 241001441724 Tetraodontidae Species 0.000 description 1
- 230000003679 aging effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000009412 basement excavation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- HBMJWWWQQXIZIP-UHFFFAOYSA-N silicon carbide Chemical compound [Si+]#[C-] HBMJWWWQQXIZIP-UHFFFAOYSA-N 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种频繁序列挖掘帮助的LLVM编译时能耗优化方法及系统,该方法首先生成初始候选解集S,并基于候选解集S构建初始的带能耗改进标注的选项序列事务数据库DB E,然后基于DB E挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTree E和后缀树postfixTree E,再基于前缀树prefixTree E和后缀树postfixTree E生成带能耗改进标注频繁选项序列帮助的新解,评估生成新解并更新DB E;不断生成新解直至达到预设的停机时间或解质量,输出S中的最优解。该方法及系统有利于在同等停机时间下提高解质量及其收敛速度。
Description
技术领域
本发明涉及本发明属于编译优化技术领域,具体涉及一种频繁序列挖掘帮助的LLVM编译时能耗优化方法及系统。
背景技术
开源编译器LLVM具有高度模块化的特点和跨语言跨硬件平台的编译优化能力,现已广泛用于各类软件的开发中。LLVM提供了大量用于优化非功能性属性的编译选项并且这些选项可在编译优化过程的不同阶段被应用,进而产生不同优化效果的可执行代码。LLVM开发者虽已基于领域知识以及在典型应用和常用硬件平台下的实验结果提供了-O0、-O1、-O2和-O3等标准优化等级,但运用这些标准等级对应的选项序列往往只能得到平均好的优化结果。
如何针对给定的硬件平台和应用程序搜索最佳LLVM选项序列以获取具有更优非功能属性的可执行代码一直是编译优化领域的公开问题和热点问题。解决这一问题将面临两个主要的挑战:一是庞大且离散的选项序列优化空间。若一个特定版本LLVM提供n个选项,规定序列长度为n(每个选项均有机会使用)并且选项可重复使用时,则由不同选项序列所构成的离散优化空间将高达nn。对于LLVM10.01中-O2等级对应序列出现的84个选项而言,其优化空间就将超过10160。二是选项之间存在复杂交互。序列中一个选项的应用可使得后续选项生效或失效,使得以不同顺序应用一组完全相同的选项可得到具有不同非功能属性优化效果的不同版本可执行代码。针对上述挑战,学术界和工业界已开展了许多LLVM编译优化研究工作。早期多以可执行代码大小或执行时间为非功能性属性优化目标,而随着物联网和云计算技术的广泛应用,有力地推动了长时间运行的嵌入式系统和数据中心应用的蓬勃发展。这些系统或应用的能耗优化也已得到越来越多的关注。
目前国内外已涌现出机器学习和设计空间搜索(又称迭代编译)两类方法。然而这些方法多集中于执行时间优化,能耗优化方面开展的工作还较为稀少。与机器学习方法不同,设计空间搜索方法虽不依赖于离线预测模型或知识库而具有较好的可移植性,但在搜索过程中还缺乏有效捕获和使用选项交互信息的手段,进而影响到求解质量和收敛速度。Nobre方法和Georgiou方法虽依赖于标准等级隐含的选项依赖关系,但尚未考虑硬件平台和待优化应用对选项交互的影响,更未从寻优过程中动态捕获选项交互信息。而Asher方法仅捕获任意两个选项之间的交互信息。另外,福建师范大学倪友聪等针对GCC编译器运用频繁模式在线捕获任意多个选项之间的交互信息,提出了两种GCC编译时能耗优化遗传算法GA-FP和FACET。但这些工作是在GCC预定义的一组选项及其规定的使用顺序下求解选项选择的优化问题,完全不同于本文的选项序列优化问题(前者优化空间为2n而后者高达nn,假设GCC与LLVM均提供n个选项)。换言之,GA-FP和FACET不适用于LLVM任意序场景下选项交互信息的捕获,因而仍需重新构建选项交互信息的挖掘模型、表示方法和挖掘算法,并在此基础上设计新的优化算法。与此同时,值得注意的是:目前我们仍未查阅到在迭代优化过程中动态捕获和使用与优化目标进行关联的LLVM选项交互信息的研究工作。根据大规模变量且存在变量交互的优化问题求解理论,这将显著影响LLVM选项序列的优化质量和寻优速度。
发明内容
本发明的目的在于提供一种频繁序列挖掘帮助的LLVM编译时能耗优化方法及系统,该方法及系统有利于在同等停机时间下提高解质量及其收敛速度。
为实现上述目的,本发明采用的技术方案是:一种频繁序列挖掘帮助的LLVM编译时能耗优化方法,首先生成初始候选解集S,并基于候选解集S构建初始的带能耗改进标注的选项序列事务数据库DBE,然后基于DBE挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE,再基于前缀树prefixTreeE和后缀树postfixTreeE生成带能耗改进标注频繁选项序列帮助的新解,评估生成新解并更新DBE;不断生成新解直至达到预设的停机时间或解质量,输出S中的最优解。
进一步地,该方法包括以下步骤:
步骤S1、输入初始解集大小N和优化环境Env;
步骤S2、将迭代次数t赋初值1;产生大小为N的候选解集S={X1,X2,…,Xi,…,XN},其中,1≤i≤N,Xi∈Ω,N-1个候选解由拉丁超立方体采样产生,而另一个解为-O2等级对应的解;将事务标识tID赋初值0,将DBE初始化为空集
步骤S3、对于候选解集S中每个候选解Xi:计算Xi的能耗优化目标值fEnv(Xi);所述fEnv(Xi)为在优化环境Env下,解Xi相较于LLVM的-O2等级对应的序列能耗改进百分比,即降低能耗的百分比;如果fEnv(Xi)>0,即有能耗改进效果,则更新DBE,即令事务标识tID加1,并将带能耗改进标注的选项序列事务TE(tID,Xi,fEnv(Xi))加入DBE;
步骤S4、如果未达到预设的停机时间或解质量,转下一步,否则转步骤S8;
步骤S5、基于DBE挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE;
步骤S6、对于候选解集S中每个候选解Xi:基于Xi、前缀树prefixTreeE和后缀树postfixTreeE生成新解Yi,并计算Yi的能耗优化目标值fEnv(Yi);如果fEnv(Yi)>fEnv(Xi),则一方面在DBE中查找Xi对应的事务TE,若存在则用Yi和fEnv(Yi)分别替换TE中的Xi和fEnv(Xi),另一方面将S中Xi用Yi替换;
步骤S7、令迭代次数t加1,并返回步骤S4,继续判断、循环;
步骤S8、输出最优解X。
进一步地,通过带能耗改进标注的频繁选项序列挖掘算法prefixspan+来挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE,具体包括以下步骤:
步骤A1、输入指向前缀树prefixTreeE待插入子结点的结点指针ptrpre,指向后缀树postfixTreeE根结点的指针ptrpost,频繁选项序列β,最小支持计数Supmin,以及以β为前缀的投影数据库DBE|β;
步骤A2、判断DBE|β中事务数目是否小于Supmin,是则结束,否则扫描数据库DBE|β,并在扫描过程中分别计算每个选项op所对应序列α=<op>的支持计数和能耗改进标注Eα,并生成频繁选项序列集合
步骤A3、对于每个生成序列γ=β°α,用于表示以β为前缀和α为后缀,并经连接生成的频繁选项序列;将γ的支持计数和能耗改进标注Eγ分别置为和Eα,构造出频繁选项序列以α、ptrpre和为输入将插入至前缀树,并将返回值赋给ptrpre,以ptrpost和为输入将插入至后缀树,得到带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE;
步骤A4、构建γ的前缀投影数据库DBE|γ,其等于(DBE|β)|α;
步骤A5、以ptrpre、ptrpost、γ、Supmin和DBE|γ为参数,递归调用prefixspan+算法。
式中,X表示β为事务TE中选项序列X的子序列,而Eβ是β所参与各事务TE的能耗改进标注的累和;通过计算定量刻画频繁选项序列β的平均功效;通过在优势解中借助带能耗改进标注的频繁选项序列捕获选项交互,为选项序列寻优过程提供有用的启发式信息。
步骤B3、在ptrpre指向结点的哈希表中增加一个表项,该表项的键值为α对应选项,值为指针ptrnewNode;
步骤B4、将指针ptrpre指向ptrnewNode;
步骤B5、输出返回待插子结点的新指针ptrpre。
步骤C2、将i赋值为序列γ的长度len,并将指针ptrpar指向ptrpost;
步骤C3、当i>0,转下一步,否则结束;
步骤C4、以γ[i]为键在ptrpar指向结点的哈希表中查找,并获取指向匹配子结点的指针ptrchd;
步骤C5、如果ptrchd不为空,则匹配成功,进一步判断:如果ptrchd指向结点的频繁序列的支持计数小于则更新结点中频繁序列的标注,即将ptrchd指向结点对应的频繁序列的支持计数和能耗改进标注分别置为和Eγ;如果ptrchd为空,则进行如下操作:令δ=<γ[i],…,γ[len]>,并将其支持计数和能耗改进标注分别设为和Eγ,构造出带能耗改进标注的频繁后缀选项序列基于和空的哈希表生成新结点newNode,并置ptrnewNode指向结点newNode;在ptrpar指向结点的哈希表中增加一个表项,该表项的键值为γ[i]选项,值为指针ptrnewNode;然后将指针ptrpar指向ptrnewNode;
步骤C6、令i减1,并返回步骤C3继续判断、循环,否则结束。
进一步地,基于解X、前缀树prefixTreeE和后缀树postfixTreeE生成新解Y的具体方法为:
步骤D1、随机产生0或1并赋值给i,将解X赋值给解Y;
步骤D2、如果i==0,转步骤D3,按前缀匹配生成新解,否则转步骤D4,按后缀匹配生成新解;
步骤D3、随机产生起始位置strt和结束位置end,1≤strt≤end<n,生成连续子序列α=<xstrt,xstrt+1,…,xend>;运用前缀匹配规则,并获取匹配结果Sop,即选项-平均功效集;基于Sop并运用概率选择规则,获取选中的选项j;将Y中第end+1元素更新为j;然后转步骤D5;
步骤D4、随机产生起始位置strt和结束位置end,生成连续子序列α=<xstrt,xstrt+1,…,xend>;运用后缀匹配规则,并获取匹配结果Sop;基于Sop并运用概率选择规则,获取选中的选项j;将Y中第strt-1元素更新为j;然后转步骤D5;
步骤D5、输出新解Y并结束。
进一步地,运用前缀匹配规则,并获取匹配结果Sop的具体方法为:
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按正序从前缀树prefixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集生成式(3)定义的选项-平均功效集Sop作为匹配结果;
进一步地,运用后缀匹配规则,并获取匹配结果Sop的具体方法为:
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按逆序从后缀树postfixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集生成式(4)定义的选项-平均功效集Sop作为匹配结果;
本发明还提供了一种频繁序列挖掘帮助的LLVM编译时能耗优化系统,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现上述的方法步骤。
与现有技术相比,本发明具有以下有益效果:提供了一种频繁序列挖掘帮助的LLVM编译时能耗优化方法及系统,本方法与当前最快可获取较好质量解的Georgiou算法以及公认在足够长演化时间后可得到高质量解的GA算法在4个不同领域的7个典型案例下的实验对比显示:在基准停机时间下本方法较Georgiou和GA的解质量平均相对改进最好可达15.52%和101.81%;在达到基准解质量的收敛速度上,本方法较Georgiou和GA平均相对改进最好可达18.00%和25.25%。
附图说明
图1是本发明实施例中选项交互信息的挖掘模型和表示方法。
图2是本发明实施例中以最小支持计数为2对图1中更新后数据库的递归挖掘过程示意图。
图6是本发明实施例中在基准停机时间下FHIA-FSM、GA和Georgiou三种算法针对各案例所获取目标值fEnv(X*)(相对于-O2等级的能耗改进百分比)的统计盒图。
图7是本发明实施例中FHIA-FSM、GA和Georgiou三种算法针对各案例达到基准解质量下计算时间改进百分比IΔt%的统计盒图。
图8是本发明实施例的方法实现流程图。
图9是本发明实施例中带能耗改进标注的频繁选项序列挖掘算法prefixspan+的实现流程图。
图10是本发明实施例中插入前缀树算法的实现流程图。
图11是本发明实施例中插入后缀树算法的实现流程图。
图12是本发明实施例中新解生成算法的实现流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
本实施例提供了一种频繁序列挖掘帮助的LLVM编译时能耗优化方法FHIA-FSM(Fast Heuristic Iteration Algorithm for energy consumption optimization underLLVM based on Frequent options Sequence Mining),首先生成初始候选解集S,并基于候选解集S构建初始的带能耗改进标注的选项序列事务数据库DBE,然后基于DBE挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE,再基于前缀树prefixTreeE和后缀树postfixTreeE生成带能耗改进标注频繁选项序列帮助的新解,评估生成新解并更新DBE;不断生成新解直至达到预设的停机时间或解质量,输出S中的最优解。
本方法采用序列编码<x1,x2,…,xn>(xi∈{1,2,…n})表示候选解X。其中,LLVM选项从1开始至n进行编号。本方法中能耗优化目标函数fEnv(X)定义为:在给定硬件平台、LLVM和待优化应用源代码及典型输入所构成的优化环境Env下,解X相对于-O2等级对应序列获取的能耗改进百分比(降低能耗的百分比)。
如图8所示,本方法具体包括以下步骤:
步骤S1、输入初始解集大小N和优化环境Env;
步骤S2、将迭代次数t赋初值1;产生大小为N的候选解集S={X1,X2,…,Xi,…,XN},其中,1≤i≤N,Xi∈Ω,N-1个候选解由拉丁超立方体采样产生,而另一个解为-O2等级对应的解;将事务标识tID赋初值0,将DBE初始化为空集
步骤S3、对于候选解集S中每个候选解Xi:计算Xi的能耗优化目标值fEnv(Xi);所述fEnv(Xi)为在优化环境Env下,解Xi相较于LLVM的-O2等级对应的序列能耗改进百分比,即降低能耗的百分比;如果fEnv(Xi)>0,即有能耗改进效果,则更新DBE,即令事务标识tID加1,并将带能耗改进标注的选项序列事务TE(tID,Xi,fEnv(Xi))加入DBE;
步骤S4、如果未达到预设的停机时间或解质量,转下一步,否则转步骤S8;
步骤S5、基于DBE挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE;
步骤S6、对于候选解集S中每个候选解Xi:基于Xi、前缀树prefixTreeE和后缀树postfixTreeE生成新解Yi,并计算Yi的能耗优化目标值fEnv(Yi);如果fEnv(Yi)>fEnv(Xi),则一方面在DBE中查找Xi对应的事务TE,若存在则用Yi和fEnv(Yi)分别替换TE中的Xi和fEnv(Xi),另一方面将S中Xi用Yi替换;
步骤S7、令迭代次数t加1,并返回步骤S4,继续判断、循环;
步骤S8、输出最优解X。
在步骤S3中,给出了初始DBE的构建,其形式如表1所示。
表1带能耗改进标注的选项序列事务数据库DBE示例
在传统序列事务基础上DBE中的各事务TE增加了能耗改进标注fEnv(X),从而将选项序列与其功效进行了定量关联。其可用三元组TE(tid,X,fEnv(X))进行表示,TE中各元素分别表示事务ID、选项序列(解)和能耗改进标注。进一步地,在迭代优化过程中DBE被不断更新,如步骤S6中所述。另外,步骤S5中挖掘输出频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE,以及步骤S6中新解的生成,将在后面详细阐述。
1带能耗改进标注的频繁选项序列挖掘方法
带能耗改进标注的频繁选项序列挖掘方法包括选项交互信息的挖掘模型和表示方法,以及带能耗改进标注的频繁选项序列挖掘算法prefixspan+。本方法通过带能耗改进标注的频繁选项序列挖掘算法prefixspan+来挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE。
1.1选项交互信息的挖掘模型和表示方法
图1给出了选项交互信息的挖掘模型和表示方法。其基于寻优过程中带能耗改进标注的频繁选项序列事务数据库DBE,并采用提出的prefixspan+算法挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE。选项交互信息的挖掘模型和表示方法为新解生成提供了有用、全面、可高效使用和时效性好的启发式信息。具体地:
(1)有用性
DBE各事务TE(tid,X,fEnv(X))中的选项序列X(解)均较-O2等级有能耗改进效果,并且X的功效也以能耗改进标注fEnv(X)形式保存于TE中,如图1上方矩形框中表。为了在有改进效果的事务中捕获选项交互及其出现频度和功效,从DBE中挖掘那些反复出现的选项子序列β,并将β在DBE中出现次数(支持计数)以及每次出现时的能耗改进标注与β进行定量关联,进而形成带能耗改进标注的频繁选项序列(简记为)。
式中,X表示β为事务TE中选项序列X的子序列,而Eβ是β所参与各事务TE的能耗改进标注的累和;通过计算定量刻画频繁选项序列β的平均功效;通过在优势解中借助带能耗改进标注的频繁选项序列捕获选项交互,为选项序列寻优过程提供有用的启发式信息。
(2)全面性及可高效使用性
为了在DBE中捕获任意多个选项的交互,prefixspan+算法挖掘并存储完整的包括各种不同长度的频繁选项序列。考虑到同时按正序或逆序快速定位某一特定的频繁选项序列,采用带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE分别以共享前缀序列和共享后缀序列形式同时保存挖掘出的所有的频繁选项序列图1下部矩形框中示意了前缀树prefixTreeE和后缀树postfixTreeE。prefixTreeE和postfixTreeE树中每个结点对应一个频繁选项序列父子结点之间弧指示了父子结点中选项序列的前缀或后缀关系。例如:图1中prefixTreeE树的第2层第3个结点与第3层第6个结点构成了父子结点关系。这两个结点分别对应了频繁选项序列和而弧上标注了单选项构成的序列α=<2>。其中,子结点中序列γ=β°α是以父结点中序列β作为前缀,连接弧上标注序列α而形成。类似地,图1中postfixTreeE树的第2层第2个结点与第3层第4个结点构成了父子结点关系。这两个结点分别对应了频繁选项序列和而弧上标注了单选项构成的序列α=<3>。其中,子结点中序列γ=β°α是以父结点中序列β作为后缀,连接弧上标注序列α而形成。
任何一个频繁选项序列既可按正序从prefixTreeE树根也能按逆序从postfixTreeE树根开始沿着弧进行匹配查找而获得。例中的可按正序从prefixTreeE树根开始按弧<3>→弧<2>,或者按逆序从postfixTreeE树根开始按弧<2>→弧<3>进行查找定位。为了提高在prefixTreeE树和postfixTreeE树中查找频繁选项序列的效率,用两个信息域定义结点。一个域用于记录结点所表示的频繁选项序列而另一个域是一张哈希表HT用于表示父子关系的弧。HT每个表项由一个键值对构成,键为弧上标注序对应的选项,值是指向孩子结点的指针。
因而,将任意多个选项的频繁交互运用带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE形式进行表示。进而为选项序列寻优过程提供全面并可高效使用的启发式信息。
(3)时效性
考虑到选项序列优化算法寻优过程中获取的解集在不断变化,根据生成的新解对当前数据库DBE进行更新,以保留更为优异的解,图1上部矩形框中示意了DBE的更新过程。其中:当前DBE中灰色背景指示的事务TE将被基于TE生成并且更为优异的新解Y替换。因而,从不断变化DBE挖掘出的带能耗标注的频繁选项序列可为迭代寻优过程提供最新的选项交互启发式信息。
1.2带能耗改进标注的频繁选项序列挖掘算法prefixspan+
prefixspan+挖掘算法采用前缀渐增的频繁序列递归挖掘过程。如图9所示,prefixspan+挖掘算法具体包括以下步骤:
步骤A1、输入指向前缀树prefixTreeE待插入子结点的结点指针ptrpre,指向后缀树postfixTreeE根结点的指针ptrpost,频繁选项序列β,最小支持计数Supmin,以及以β为前缀的投影数据库DBE|β;
步骤A2、判断DBE|β中事务数目是否小于Supmin,是则结束,否则扫描数据库DBE|β,并在扫描过程中按式(1)和式(2)分别计算每个选项op所对应序列α=<op>的支持计数和能耗改进标注Eα,并生成频繁选项序列集合
步骤A3、对于每个生成序列γ=β°α,用于表示以β为前缀和α为后缀,并经连接生成的频繁选项序列;将γ的支持计数和能耗改进标注Eγ分别置为和Eα,构造出频繁选项序列以α、ptrpre和为输入将插入至前缀树,并将返回值赋给ptrpre,以ptrpost和为输入将插入至后缀树,得到带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE;
步骤A4、构建γ的前缀投影数据库DBE|γ,其等于(DBE|β)|α;
步骤A5、以ptrpre、ptrpost、γ、Supmin和DBE|γ为参数,递归调用prefixspan+算法。
图2示意了prefixspan+算法在最小支持计数Supmin=2时,对图1中更新后DBE的递归挖掘过程,为了提高图2的可读性,递归回溯过程的弧被略去。
prefixspan+算法首先将Supmin与以β为前缀的投影数据库DBE|β中的事务数目相比,若事务数小于Supmin则返回上次递归处,否则获取数据库DBE|β中频繁选项序列(α的长度为1)的集合S,如prefixspan+挖掘算法步骤A2所示;然后依次对S中的每个元素执行以下四个步骤,如prefixspan+挖掘算法步骤A3-A5所示:生成新的频繁选项序列插入至前缀树、插入至后缀树、以及构建以新序列为前缀的投影数据库DBE|γ并进行递归调用。下面结合图2解释prefixspan+算法的执行过程。
图2中每个结点表示以β为前缀的投影数据库DBE|β,根结点可看成空序列为前缀的投影数据库DBE|<>(简记为DBE)。prefixspan+算法从图2根结点开始挖掘,经过扫描DBE发现1,2,3和4四个频繁选项,并按式(1)和式(2)分别累计各选项在DBE中的出现次数和所参与事务的能耗改进标注,从而生成4个长度为1的频繁选项序列的集合S,如图2中根结点与第二层4个结点之间弧上的标注。现以S中的第1个元素(<1>,3,24%)为例给出此次递归过程的4个步骤:
①以β=<>为前缀和α=<1>为后缀连接生成新序列γ=β°α=<1>。此时γ=α,故γ与α的支持计数和能耗改进标注相同;
②调用前缀树插入算法将插入前缀树。具体地,首先根据生成一个新结点newNode,然后按照ptrpre(当前为根结点)指示的位置将newNode结点插入前缀树,最后修改ptrpre让其指向newNode结点以指示下一个待插入结点位置。插入后得到图3中左部的前缀树;
④以γ=<1>为前缀构建数据库DBE|<1>,得到图2第二层最左边结点。根结点DBE与结点DBE|<1>之间的弧上标注了此次递归调用获取的频繁选项序列由DBE获取DBE|<1>的过程是将DBE各事务TE的选项序列中从第一位开始至第一次出现的1所对应的连续子序列删除,得到一个新序列δ。若δ不空,则将TE的事务id、δ和TE的能耗改进标注作为一个新事务TE|<1>包含在DBE|<1>中,否则TE不包含在DBE|<1>中。值得注意的是DBE|<1>刻画了频繁选项序列<1>所出现的各个事务TE|<1>,因而TE|<1>与其来源于DBE中事务TE的能耗改进标注相同。构建完成DBE|<1>进入prefixspan+的下一次递归调用。
①以β=<1>为前缀和α=<2>为后缀连接生成新序列γ=β°α=<1,2>。DBE|<1>中各事务TE|<1>是DBE中以<1>为前缀的事务TE,因而DBE中子序列<1,2>(表示选项1在选项2之前出现的情况,包含但不一定都是紧邻关系)的出现次数一定与<2>在DBE|<1>中出现次数相同。另外,TE|<1>与其来源的TE在能耗改进标注上相同,从而γ在DBE中和α在DBE|<1>中的出现次数和能耗改进标注应分别相等,故
②调用前缀树插入算法按照当前ptrpre指示的位置将插入到前缀树中。图3的左部和右部分别给出了插入到前缀树之前和之后的情形。在图3右部中,深色背景指示的结点为此次插入新生成的结点,而ptrpre指向下一个待插入结点位置。
③调用后缀树插入算法将插入后缀树。由于后缀树按共享序列后缀的形式进行组织,而prefixspan+是按前缀进行递归调用,因而当后缀树插入算法按频繁序列γ中元素的逆序插入时,需要进行序列后缀的匹配查找。在当前的后缀树中依次逆序插入γ的元素2和1时均未匹配成功,故分别生成两个新结点,并按先后顺序插入到指定位置。生成新结点的步骤如后缀树插入算法中步骤C5所示。各新结点均表示频繁序列γ的后缀部分,它们仅改变了频繁序列的表示形式,故其支持计数和能耗改进标注都为2和17%。图4的左部和右部分别示意了插入后缀树之前和之后的情形。图4中深色背景指示的结点为此次插入过程中新生成的结点。
④以γ=<1,2>为前缀构建数据库DBE|<1,2>,得到图2第三层最左边结点。结点DBE|<1>和DBE|<1,2>之间弧上标注了此次递归调用获取的频繁选项序列由于前缀投影操作具有传递性,因而DBE|<1,2>可通过以<2>为前缀在DBE|<1>上投影获得,如prefixspan+挖掘算法步骤A4。构建完成DBE|<1,2>后进入prefixspan+的下一次递归调用。
以此方式递归挖掘完成所有以<1>为前缀的频繁选项序列时的状态,对应于由图2中第四层第一个结点DBE|<1,3,2>开始向上逐级回溯。在回溯至根结点DBE后,将又从(<2>,4,34%)开始递归挖掘以<2>为前缀的频繁序列。此时对应的后缀树如图5的左部所示。值得注意的是,当插入时,将在后缀树中匹配到后缀选项2。这时无需生成新结点,而要依据的支持计数和能耗改进标注更新匹配的结点。因后缀树以共享后缀形式组织频繁选项序列而prefixspan+却以前缀渐增方式挖掘输出频繁序列,为正确更新匹配结点的支持计数和能耗改进标注,需将匹配结点和的支持计数进行比较。若后者较前者的支持计数大,则用的支持计数和能耗改进标注的值更新匹配结点的对应元素;否则不修改匹配结点中任何元素。图5的左部和右部分别示意了插入后缀树之前和之后的情形。图5左部中指示的结点为匹配结点,因它的支持计数小于的支持计数,故需要被更新。图5右部中指示结点给出了匹配结点中更新后的值。当图2中所示的挖掘过程完成后,可获取图1中的前缀树prefixTreeE和后缀树postfixTreeE。
如图10所示,前缀树插入算法具体包括以下步骤:
步骤B3、在ptrpre指向结点的哈希表中增加一个表项,该表项的键值为α对应选项,值为指针ptrnewNode;
步骤B4、将指针ptrpre指向ptrnewNode;
步骤B5、输出返回待插子结点的新指针ptrpre。
如图11所示,后缀树插入算法具体包括以下步骤:
步骤C2、将i赋值为序列γ的长度len,并将指针ptrpar指向ptrpost;
步骤C3、当i>0,转下一步,逆序插入γ中各元素,否则结束;
步骤C4、以γ[i]为键在ptrpar指向结点的哈希表中查找,并获取指向匹配子结点的指针ptrchd;
步骤C5、如果ptrchd不为空,则匹配成功,进一步判断:如果ptrchd指向结点的频繁序列的支持计数小于则更新结点中频繁序列的标注,即将ptrchd指向结点对应的频繁序列的支持计数和能耗改进标注分别置为和Eγ;如果ptrchd为空,则进行如下操作:令δ=<γ[i],…,γ[len]>,并将其支持计数和能耗改进标注分别设为和Eγ,构造出带能耗改进标注的频繁后缀选项序列基于和空的哈希表生成新结点newNode,并置ptrnewNode指向结点newNode;在ptrpar指向结点的哈希表中增加一个表项,该表项的键值为γ[i]选项,值为指针ptrnewNode;然后将指针ptrpar指向ptrnewNode;
步骤C6、令i减1,并返回步骤C3继续判断、循环,否则结束。
2带能耗改进标注频繁选项序列帮助的新解生成机制
带能耗改进标注频繁选项序列帮助的新解生成机制以前缀树prefixTreeE和后缀树postfixTreeE作为启发式信息设计了一组与新解生成相关的规则,并进一步定义了具体的新解生成过程。
2.1与新解生成相关的规则
下面以图1中前缀树prefixTreeE和后缀树postfixTreeE,以及解x=<5,6,3,2,7>中连续子序列α=<3,2>为例阐述前缀匹配、后缀匹配和概率选择等与新解生成相关的规则。
下面以图1中前缀树prefixTreeE和后缀树postfixTreeE,以及解x=<5,6,3,2,7>中连续子序列α=<3,2>为例阐述前缀匹配、后缀匹配和概率选择等与新解生成相关的规则。
(1)前缀匹配规则
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按正序从前缀树prefixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集生成式(3)定义的选项-平均功效集Sop作为匹配结果;
例中,α=<3,2>在图1前缀树中匹配获得孩子结点集Schd={(<3,2,1>,2,16%),(<3,2,4>,2,17%)},如图1中虚线框中指示的两个结点,匹配路径已用弧线在前缀树中标出。根据式(3)计算的匹配结果Sop={(1,8%),(4,8.5%)}。
(2)后缀匹配规则
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按逆序从后缀树postfixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集生成式(4)定义的选项-平均功效集Sop作为匹配结果;
例中,α=<3,2>在图1后缀树中匹配获得孩子结点集Schd={(<1,3,2>,2,17%),(<4,3,2>,2,18%)},如图1中虚线框中指示的两个结点,匹配路径已用弧线在后缀树中标出。而根据式(4)计算的匹配结果Sop={(1,8.5%),(4,9%)}。
(3)概率选择规则
概率选择操作根据前缀匹配或后缀匹配规则的匹配结果Sop按概率选中某个选项。具体地,若则按等概率从优化问题提供的n个选项中随机选择一个;若则按式(5)定义的概率pj选择选项j。式(5)中j为Sop中出现的选项,而avgUtilj为选项j对应的平均功效。
例中后缀匹配规则的匹配结果Sop={(1,8.5%),(4,9%)},则选择选项1的概率p1=8.5%/(8.5%+9%)≈48.6%,而选择选项4的概率p4=9%/(8.5%+9%)≈51.4%。
2.2新解生成过程
基于上述设计的前缀匹配、后缀匹配和概率选择三种规则,新解生成算法给出了新解生成过程的详细步骤。新解生成算法的步骤D3给出了基于前缀匹配的新解生成过程,而步骤D4给出了基于后缀匹配的新解生成过程。例中X=<5,6,3,2,7>,若前缀匹配和后缀匹配两种新解生成过程中随机产生的起始位置strt和结束位置end都分别为2和3,则前者和后者获取的匹配结果分别为Sop={(1,8%),(4,8.5%)}、Sop={(1,8.5%),(4,9%)}。假定按平均功效大概率选中选项,则前者和后者都会选中选项4。因而,前者生成的新解Y=<5,6,3,2,4>,而后者对应的新解Y=<5,4,3,2,7>。
如图12所示,所述新解生成算法具体包括以下步骤:
步骤D1、随机产生0或1并赋值给i,将解X赋值给解Y;
步骤D2、如果i==0,转步骤D3,按前缀匹配生成新解,否则转步骤D4,按后缀匹配生成新解;
步骤D3、随机产生起始位置strt和结束位置end,1≤strt≤end<n,生成连续子序列α=<xstrt,xstrt+1,…,xend>;运用前缀匹配规则,并按式(3)获取匹配结果Sop,即选项-平均功效集;基于Sop并运用概率选择规则,获取选中的选项j;将Y中第end+1元素更新为j;然后转步骤D5;
步骤D4、随机产生起始位置strt和结束位置end,生成连续子序列α=<xstrt,xstrt+1,…,xend>;运用后缀匹配规则,并按式(4)获取匹配结果Sop;基于Sop并运用概率选择规则,获取选中的选项j;将Y中第strt-1元素更新为j;然后转步骤D5;
步骤D5、输出新解Y并结束。
本实施例还提供了一种频繁序列挖掘帮助的LLVM编译时能耗优化系统,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现上述的方法步骤。
3实施例
3.1实施例简介
通过综合考虑应用领域、源代码的结构特性和操作特性三个要素,本发明从包含应用程序最多、用于嵌入式系统执行时间和能耗优化的开源基准平台BEEBS中选取了7个具有代表性的应用程序作为案例,如表2所示。这些案例涵盖了安全、网络、汽车和消费四个领域,并覆盖了函数调用、嵌套循环、位操作、字符串操作、单循环和数组访问等常见源代码结构特性,同时也尽可能多地包括影响运行时能耗的整型运算强度、浮点运算强度、分支频度和内存访问频度等不同的源代码操作特性,并在表2中用“低”、“中”和“高”对强度或频度进行分级。
表2实施例的基本情况
3.2使用的统计方法
考虑到演化算法和本方法FHIA-FSM的随机性,它们在各实施例下分别独立运行20次并进行统计检验。本实施例采用Wilcoxom秩和检验对实验数据进行统计分析,并将置信水平α设置为0.05。为了进一步观测对比数据的差异程度(effect size),本实施例还使用Vargha-Delaney的作为effect size的直观变量,的值域为[0,1],其值越大说明差异程度越大。
3.3实验安装
(1)实验环境
表3给出实验环境的具体配置。
表3实验环境配置
(2)算法参数的设定
表4给出了本方法FHIA-FSM和GA算法下的参数设定,符号NA表示不包含对应参数。而Georgiou算法不含任何参数。
表4 FHIA-FSM和GA算法参数设置
3.4实验研究的问题、结果及分析
考虑到Georgiou算法与本方法FHIA-FSM同为基于设计空间搜索并且面向最小化能耗的LLVM选项序列优化方法,与此同时Georgiou算法也是目前设计空间搜索方法中能最快获取较好解质量的一种方法。而遗传算法GA是编译优化领域公认在演化足够长时间后能获取高质量解的一种方法。因而本实施例以Georgiou算法的优化用时和解质量分别作为停机基准时间和基准解质量,并在表2所示的4个不同领域的7个典型案例下围绕求解质量和收敛速度两个问题开展实验研究。
(1)问题1(求解质量):按照基准停机时间,本方法FHIA-FSM较Georgiou算法和GA算法能否得到更优的选项序列,使得案例应用程序的运行时能耗更低?通过回答这一问题,可以验证FHIA-FSM算法的有用性。
表5给出了在基准停机时间下FHIA-FSM、GA和Georgiou三种算法针对各个案例所获取最佳目标值(相对-O2等级最好的能耗改进百分比)的统计量结果。表5中FHIA-FSM同时优于GA和Georgiou的值已被加粗表示。由表5的统计量结果可知:FHIA-FSM在7个案例下最佳目标值的平均值都较GA和Georgiou更优;除fdct案例外,在其它6个案例最佳目标值的最大值中,FHIA-FSM也都较GA和Georgiou更优;FHIA-FSM在7个案例下最佳目标值的最小值也较GA更优。与此同时,GA在7个案例下最佳目标值的平均值和最小值均劣于Georgiou;除fdct、float_matmult和int_matmult三个案例外,在其它4个案例最佳目标值的最大值中,GA也均劣于Georgiou。
表5在基准停机时间下本文FHIA-FSM、GA和Georgiou三种算法针对各个案例所获取最佳目标值(相对于-O2等级的能耗改进百分比)的统计量结果
表6进一步给出了本方法FHIA-FSM分别与GA和Georgiou针对基准停机时间下各案例最佳目标值(相对于-O2等级的能耗改进百分比)的秩和检验结果。表6中的第2列和第4列中的p-value值在全部7个案例下均远小于置信水平0.05,这从统计意义角度表明FHIA-FSM在基准停机时间下解质量显著优于GA和Georgiou。表6中第3列和第5列中effect size的值在所有7个案例下均大于0.8,这表明FHIA-FSM较GA和Georgiou能以较大概率上获得更优的解。图6所给出的统计盒图也直观地得到一致结论。
表6本文FHIA-FSM分别与GA和Georgiou针对基准停机时间下各案例最佳目标值(相对于-O2等级的能耗改进百分比)的秩和检验结果
为了进一步量化FHIA-FSM对解质量的改进情况,表7给出了FHIA-FSM较GA和Georgiou在基准停机时间下各案例解质量的平均相对改进百分比。从表7可以看出:各案例中FHIA-FSM较GA和Georgiou在解质量上均有较大提升,而且相对GA的提升更为显著。解质量的平均相对改进最好情况发生在blowfish案例中,FHIA-FSM较GA和Georgiou在解质量上分别提升了101.81%和15.52%。
表5、表6、图6和表7的结果表明:不使用任何启发式信息的GA算法获取的解质量多劣于使用启发式信息进行寻优的本方法和Georgiou。这实证了启发式信息对于设计空间搜索这类LLVM选项序列优化方法提高解质量的重要性;此外,本文FHIA-FSM使用带能耗改进标注的频繁选项序列捕获选项交互的启发式信息较Georgiou使用标准等级隐含的选项依赖关系作为启发式信息对于提高解质量更为有效。因而,在基准停机时间下本文提出的FHIA-FSM较GA和Georgiou从统计意义上可获得更优的编译选项序列,使得各案例应用程序的运行能耗更低。
表7本方法较GA和Georgiou在基准停机时间下各案例解质量(目标值)的平均相对改进百分比
(2)问题2(收敛速度):本方法FHIA-FSM较Georgiou算法和GA算法能否以更少的计算时间达到基准解质量?通过回答这一问题,可以进一步验证本方法效率。亦即FHIA-FSM可否以更快的速度收敛得到基准质量的解。
为了避免测量噪声并进行归一化对比,以Georgiou算法达到基准解质量时的优化用时作为基准时间T0,定义计算时间改进百分比IΔt%作为度量指标,如式(6)所示。式(6)中,T为FHIA-FSM或GA在达到基准解质量所花费的计算时间。
表8给出了本方法FHIA-FSM、GA和Georgiou三种算法针对各案例在达到基准解质量时计算时间改进百分比IΔt%的统计量结果。表8中FHIA-FSM同时优于GA和Georgiou的值已被加粗表示。此外,在各案例中均以Georgiou的优化结果作基准停机时间和基准解质量,故表8中Georgiou的IΔt%指标值均为0。由表8的统计量结果可知:FHIA-FSM在7个案例下IΔt%的平均值和最大值均较GA和Georgiou更优;FHIA-FSM在7个案例下IΔt%的最小值也较GA更优。与此同时,GA在全部的7个案例下IΔt%的平均值和最小值均劣于Georgiou;除fdct、float_matmult和int_matmult案例外,其它4个案例IΔt%的最大值GA也都劣于Georgiou。表9进一步给出了本方法FHIA-FSM分别与GA和Georgiou针对各实施例在达到基准解质量时计算时间改进百分比IΔt%的秩和检验结果。表9中的第2列和第4列中的p-value值在全部的7个案例下均远小于置信水平0.05,这从统计意义上表明本文FHIA-FSM在达到基准解质量时的收敛速度显著优于GA和Georgiou。表9中第3列和第5列中effect size的值在所有7个案例下均大于0.8,这表明FHIA-FSM较GA和Georgiou能以较大概率使用更少的计算时间达到基准解质量。图7所给出的统计盒图也直观地得到一致结论。
为了量化FHIA-FSM对收敛速度的改进情况,表10给出了FHIA-FSM较GA和Georgiou在各案例达到基准解质量时计算时间的平均相对改进百分比。从表10可以看出:各案例中FHIA-FSM较GA和Georgiou在收敛速度上均有较大提升,而且相对GA的提升更为显著。FHIA-FSM较GA和Georgiou在收敛速度的平均相对改进最好情况分别发生在blowfish和int_matmult案例中,其分别提升了25.25%和18%。
表8本文FHIA-FSM、GA和Georgiou三种算法针对各案例在达到基准解质量时计算时间改进百分比IΔt%的统计量结果
表9本文FHIA-FSM分别与GA和Georgiou针对各案例在达到基准解质量时计算时间改进百分比IΔt%的秩和检验结果
表8、表9、图7和表10的结果表明:在达到基准解质量过程中,不使用任何启发式信息的GA算法较使用启发式信息进行寻优的算法FHIA-FSM和Georgiou需要消耗更多的计算时间。这说明启发式信息对于设计空间搜索这类LLVM选项序列优化方法不仅对于提高解质量,而且对于加快收敛速度也具有重要的作用;此外,本方法FHIA-FSM使用带能耗改进标注的频繁选项序列捕获选项交互的启发式信息较Georgiou使用标准等级隐含的选项依赖关系作为启发式信息能更为有效地提高收敛速度。
表10本文FHIA-FSM较GA和Georgiou在各案例达到基准解质量时计算时间的相对改进百分比
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
Claims (10)
1.一种频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,首先生成初始候选解集S,并基于候选解集S构建初始的带能耗改进标注的选项序列事务数据库DBE,然后基于DBE挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE,再基于前缀树prefixTreeE和后缀树postfixTreeE生成带能耗改进标注频繁选项序列帮助的新解,评估生成新解并更新DBE;不断生成新解直至达到预设的停机时间或解质量,输出S中的最优解。
2.根据权利要求1所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,包括以下步骤:
步骤S1、输入初始解集大小N和优化环境Env;
步骤S2、将迭代次数t赋初值1;产生大小为N的候选解集S={X1,X2,…,Xi,…,XN},其中,1≤i≤N,Xi∈Ω,N-1个候选解由拉丁超立方体采样产生,而另一个解为-O2等级对应的解;将事务标识tID赋初值0,将DBE初始化为空集
步骤S3、对于候选解集S中每个候选解Xi:计算Xi的能耗优化目标值fEnv(Xi);所述fEnv(Xi)为在优化环境Env下,解Xi相较于LLVM的-O2等级对应的序列能耗改进百分比,即降低能耗的百分比;如果fEnv(Xi)>0,即有能耗改进效果,则更新DBE,即令事务标识tID加1,并将带能耗改进标注的选项序列事务TE(tID,Xi,fEnv(Xi))加入DBE;
步骤S4、如果未达到预设的停机时间或解质量,转下一步,否则转步骤S8;
步骤S5、基于DBE挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE;
步骤S6、对于候选解集S中每个候选解Xi:基于Xi、前缀树prefixTreeE和后缀树postfixTreeE生成新解Yi,并计算Yi的能耗优化目标值fEnv(Yi);如果fEnv(Yi)>fEnv(Xi),则一方面在DBE中查找Xi对应的事务TE,若存在则用Yi和fEnv(Yi)分别替换TE中的Xi和fEnv(Xi),另一方面将S中Xi用Yi替换;
步骤S7、令迭代次数t加1,并返回步骤S4,继续判断、循环;
步骤S8、输出最优解X。
3.根据权利要求2所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,通过带能耗改进标注的频繁选项序列挖掘算法prefixspan+来挖掘生成带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE,具体包括以下步骤:
步骤A1、输入指向前缀树prefixTreeE待插入子结点的结点指针ptrpre,指向后缀树postfixTreeE根结点的指针ptrpost,频繁选项序列β,最小支持计数Supmin,以及以β为前缀的投影数据库DBE|β;
步骤A2、判断DBE|β中事务数目是否小于Supmin,是则结束,否则扫描数据库DBE|β,并在扫描过程中分别计算每个选项op所对应序列α=<op>的支持计数和能耗改进标注Eα,并生成频繁选项序列集合
步骤A3、对于每个生成序列γ=β°α,用于表示以β为前缀和α为后缀,并经连接生成的频繁选项序列;将γ的支持计数和能耗改进标注Eγ分别置为和Eα,构造出频繁选项序列以α、ptrpre和为输入将插入至前缀树,并将返回值赋给ptrpre,以ptrpost和为输入将插入至后缀树,得到带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE;
步骤A4、构建γ的前缀投影数据库DBE|γ,其等于(DBE|β)|α;
步骤A5、以ptrpre、ptrpost、γ、Supmin和DBE|γ为参数,递归调用prefixspan+算法。
步骤C2、将i赋值为序列γ的长度len,并将指针ptrpar指向ptrpost;
步骤C3、当i>0,转下一步,否则结束;
步骤C4、以γ[i]为键在ptrpar指向结点的哈希表中查找,并获取指向匹配子结点的指针ptrchd;
步骤C5、如果ptrchd不为空,则匹配成功,进一步判断:如果ptrchd指向结点的频繁序列的支持计数小于则更新结点中频繁序列的标注,即将ptrchd指向结点对应的频繁序列的支持计数和能耗改进标注分别置为和Eγ;如果ptrchd为空,则进行如下操作:令δ=<γ[i],…,γ[len]>,并将其支持计数和能耗改进标注分别设为和Eγ,构造出带能耗改进标注的频繁后缀选项序列基于和空的哈希表生成新结点newNode,并置ptrnewNode指向结点newNode;在ptrpar指向结点的哈希表中增加一个表项,该表项的键值为γ[i]选项,值为指针ptrnewNode;然后将指针ptrpar指向ptrnewNode;
步骤C6、令i减1,并返回步骤C3继续判断、循环,否则结束。
7.根据权利要求2所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,基于解X、前缀树prefixTreeE和后缀树postfixTreeE生成新解Y的具体方法为:
步骤D1、随机产生0或1并赋值给i,将解X赋值给解Y;
步骤D2、如果i==0,转步骤D3,按前缀匹配生成新解,否则转步骤D4,按后缀匹配生成新解;
步骤D3、随机产生起始位置strt和结束位置end,1≤strt≤end<n,生成连续子序列α=<xstrt,xstrt+1,…,xend>;运用前缀匹配规则,并获取匹配结果Sop,即选项-平均功效集;基于Sop并运用概率选择规则,获取选中的选项j;将Y中第end+1元素更新为j;然后转步骤D5;
步骤D4、随机产生起始位置strt和结束位置end,生成连续子序列α=<xstrt,xstrt+1,…,xend>;运用后缀匹配规则,并获取匹配结果Sop;基于Sop并运用概率选择规则,获取选中的选项j;将Y中第strt-1元素更新为j;然后转步骤D5;
步骤D5、输出新解Y并结束。
10.一种频繁序列挖掘帮助的LLVM编译时能耗优化系统,其特征在于,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现如权利要求1-9任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210183569.0A CN114564184A (zh) | 2022-02-25 | 2022-02-25 | 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210183569.0A CN114564184A (zh) | 2022-02-25 | 2022-02-25 | 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114564184A true CN114564184A (zh) | 2022-05-31 |
Family
ID=81716565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210183569.0A Pending CN114564184A (zh) | 2022-02-25 | 2022-02-25 | 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114564184A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114850A1 (en) * | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US20070006293A1 (en) * | 2005-06-30 | 2007-01-04 | Santosh Balakrishnan | Multi-pattern packet content inspection mechanisms employing tagged values |
CN101034361A (zh) * | 2007-01-18 | 2007-09-12 | 浙江大学 | 一种基于指令代价的编译器优化代码生成方法 |
US20110154309A1 (en) * | 2009-12-22 | 2011-06-23 | Apple Inc. | Compiler with energy consumption profiling |
US20150100304A1 (en) * | 2013-10-07 | 2015-04-09 | Xerox Corporation | Incremental computation of repeats |
CN113900662A (zh) * | 2021-11-19 | 2022-01-07 | 福建师范大学 | 一种llvm编译选项选择方法 |
-
2022
- 2022-02-25 CN CN202210183569.0A patent/CN114564184A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114850A1 (en) * | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US20070006293A1 (en) * | 2005-06-30 | 2007-01-04 | Santosh Balakrishnan | Multi-pattern packet content inspection mechanisms employing tagged values |
CN101034361A (zh) * | 2007-01-18 | 2007-09-12 | 浙江大学 | 一种基于指令代价的编译器优化代码生成方法 |
US20110154309A1 (en) * | 2009-12-22 | 2011-06-23 | Apple Inc. | Compiler with energy consumption profiling |
US20150100304A1 (en) * | 2013-10-07 | 2015-04-09 | Xerox Corporation | Incremental computation of repeats |
CN113900662A (zh) * | 2021-11-19 | 2022-01-07 | 福建师范大学 | 一种llvm编译选项选择方法 |
Non-Patent Citations (1)
Title |
---|
倪友聪;吴瑞;杜欣;叶鹏;李汪彪;肖如良;: "基于频繁模式挖掘的GCC编译时能耗演化优化算法", 软件学报, no. 05, 15 May 2019 (2019-05-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2013290313B2 (en) | Method and system for automated improvement of parallelism in program compilation | |
CN103765402B (zh) | 使用混合代码签名跟踪程序的调用上下文 | |
CN113641701B (zh) | 一种数据查询方法、系统、异构加速平台及存储介质 | |
US9417858B2 (en) | Strength reduction compiler optimizations for operations with unknown strides | |
CN105224452A (zh) | 一种针对科学计算程序静态分析性能的预测代价优化方法 | |
CN110071871A (zh) | 一种大模式集ip地址匹配方法 | |
CN107025263A (zh) | 用于数据库语句的语句解析方法 | |
Preissl et al. | Using MPI communication patterns to guide source code transformations | |
CN114816517A (zh) | 一种层次语义感知的代码表示学习方法 | |
US8914782B2 (en) | Optimization of declarative queries | |
CN103902651B (zh) | 一种基于MongoDB的云端代码查询方法与装置 | |
CN114564184A (zh) | 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 | |
CN115033884A (zh) | 基于危险函数参数依赖的二进制代码漏洞检测方法 | |
Dower et al. | Evolutionary System Definition Language | |
CN115879868B (zh) | 一种专家系统与深度学习相融合的智能合约安全审计方法 | |
CN117033248B (zh) | 一种基于程序状态反馈和控制流图的Web模糊测试方法 | |
Milicchio et al. | High-performance data structures for de novo assembly of genomes: cache oblivious generic programming | |
Van Lunteren | Accelerating Decision-Tree-Based Inference Through Adaptive Parallelization | |
Ma et al. | CPM Algorithm for Mining Association Rules from Databases of Engineering Design Instances. | |
Filippov et al. | Ulyanovsk State Technical University, 32, Street Severny Venets, Ulyanovsk 432027, Russia stroeva95@ mail. ru | |
Li | Comparison of Single-Machine and Distributed Calculation of Temporal Degree Metrics | |
CN115964048A (zh) | 一种gpu编译器优化方法 | |
Filippov et al. | Search for Structurally Similar Projects of Software Systems | |
Liu et al. | Contiguous Sequence Mining Approach for Program Procedure Pattern | |
Fähndrich et al. | Type-based flow analysis and context-free language reachability |
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 |