CN114564184A - 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 - Google Patents

频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 Download PDF

Info

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
Application number
CN202210183569.0A
Other languages
English (en)
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.)
Fujian Normal University
Original Assignee
Fujian Normal 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 Fujian Normal University filed Critical Fujian Normal University
Priority to CN202210183569.0A priority Critical patent/CN114564184A/zh
Publication of CN114564184A publication Critical patent/CN114564184A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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提供了大量用于优化非功能性属性的编译选项并且这些选项可在编译优化过程的不同阶段被应用,进而产生不同优化效果的可执行代码。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初始化为空集
Figure BDA0003521730010000021
步骤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>的支持计数
Figure BDA0003521730010000031
和能耗改进标注Eα,并生成频繁选项序列集合
Figure BDA0003521730010000032
步骤A3、对于每个
Figure BDA0003521730010000033
生成序列γ=β°α,用于表示以β为前缀和α为后缀,并经连接生成的频繁选项序列;将γ的支持计数
Figure BDA0003521730010000034
和能耗改进标注Eγ分别置为
Figure BDA0003521730010000035
和Eα,构造出频繁选项序列
Figure BDA0003521730010000036
以α、ptrpre
Figure BDA0003521730010000037
为输入将
Figure BDA0003521730010000038
插入至前缀树,并将返回值赋给ptrpre,以ptrpost
Figure BDA0003521730010000039
为输入将
Figure BDA00035217300100000310
插入至后缀树,得到带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE
步骤A4、构建γ的前缀投影数据库DBE|γ,其等于(DBE|β)|α
步骤A5、以ptrpre、ptrpost、γ、Supmin和DBE|γ为参数,递归调用prefixspan+算法。
进一步地,每个
Figure BDA00035217300100000311
用一个三元组
Figure BDA00035217300100000312
进行表征,其中β捕获了哪些选项按先后顺序发生了交互,
Figure BDA00035217300100000313
和Eβ分别用于表示交互的发生次数和功效;
Figure BDA00035217300100000314
和Eβ分别由式(1)和式(2)计算得到:
Figure BDA0003521730010000041
Figure BDA0003521730010000042
式中,
Figure BDA0003521730010000043
X表示β为事务TE中选项序列X的子序列,而Eβ是β所参与各事务TE的能耗改进标注的累和;通过计算
Figure BDA0003521730010000044
定量刻画频繁选项序列β的平均功效;通过在优势解中借助带能耗改进标注的频繁选项序列捕获选项交互,为选项序列寻优过程提供有用的启发式信息。
进一步地,以α、ptrpre
Figure BDA0003521730010000045
为输入将
Figure BDA0003521730010000046
插入至前缀树的具体方法为:
步骤B1、输入单选项的序列α,指向前缀树prefixTreeE待插入子结点的结点指针ptrpre,以及带能耗改进标注的频繁选项序列
Figure BDA0003521730010000047
步骤B2、基于
Figure BDA0003521730010000048
和空的哈希表生成新结点newNode,并置ptrnewNode指向结点newNode;
步骤B3、在ptrpre指向结点的哈希表中增加一个表项,该表项的键值为α对应选项,值为指针ptrnewNode
步骤B4、将指针ptrpre指向ptrnewNode
步骤B5、输出返回待插子结点的新指针ptrpre
进一步地,以ptrpost
Figure BDA0003521730010000049
为输入将
Figure BDA00035217300100000410
插入至后缀树的具体方法为:
步骤C1、输入指向后缀树postfixTreeE根结点的指针ptrpost以及带能耗改进标注的频繁选项序列
Figure BDA00035217300100000411
步骤C2、将i赋值为序列γ的长度len,并将指针ptrpar指向ptrpost
步骤C3、当i>0,转下一步,否则结束;
步骤C4、以γ[i]为键在ptrpar指向结点的哈希表中查找,并获取指向匹配子结点的指针ptrchd
步骤C5、如果ptrchd不为空,则匹配成功,进一步判断:如果ptrchd指向结点的频繁序列的支持计数小于
Figure BDA00035217300100000412
则更新结点中频繁序列的标注,即将ptrchd指向结点对应的频繁序列的支持计数和能耗改进标注分别置为
Figure BDA00035217300100000413
和Eγ;如果ptrchd为空,则进行如下操作:令δ=<γ[i],…,γ[len]>,并将其支持计数和能耗改进标注分别设为
Figure BDA00035217300100000414
和Eγ,构造出带能耗改进标注的频繁后缀选项序列
Figure BDA0003521730010000051
基于
Figure BDA0003521730010000052
和空的哈希表生成新结点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根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集
Figure BDA0003521730010000053
生成式(3)定义的选项-平均功效集Sop作为匹配结果;
Figure BDA0003521730010000054
若匹配不成功,则将空集
Figure BDA0003521730010000055
作为匹配结果;式(3)中chd.β[end-strt+2]表示孩子结点chd中选项序列最后一个元素对应的选项op。
进一步地,运用后缀匹配规则,并获取匹配结果Sop的具体方法为:
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按逆序从后缀树postfixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集
Figure BDA0003521730010000061
生成式(4)定义的选项-平均功效集Sop作为匹配结果;
Figure BDA0003521730010000062
若匹配不成功,则将空集
Figure BDA0003521730010000063
作为匹配结果;式(4)中chd.γ[1]表示孩子结点chd中选项序列第一个元素对应的选项。
本发明还提供了一种频繁序列挖掘帮助的LLVM编译时能耗优化系统,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现上述的方法步骤。
与现有技术相比,本发明具有以下有益效果:提供了一种频繁序列挖掘帮助的LLVM编译时能耗优化方法及系统,本方法与当前最快可获取较好质量解的Georgiou算法以及公认在足够长演化时间后可得到高质量解的GA算法在4个不同领域的7个典型案例下的实验对比显示:在基准停机时间下本方法较Georgiou和GA的解质量平均相对改进最好可达15.52%和101.81%;在达到基准解质量的收敛速度上,本方法较Georgiou和GA平均相对改进最好可达18.00%和25.25%。
附图说明
图1是本发明实施例中选项交互信息的挖掘模型和表示方法。
图2是本发明实施例中以最小支持计数为2对图1中更新后数据库的递归挖掘过程示意图。
图3是本发明实施例中插入频繁序列
Figure BDA0003521730010000064
(<1,2>,2,17%)至前缀树之前和之后的示意图。
图4是本发明实施例中插入频繁序列
Figure BDA0003521730010000065
(<1,2>,2,17%)至后缀树之前和之后的示意图。
图5是本发明实施例中插入频繁序列
Figure BDA0003521730010000066
(<2>,4,34%)至后缀树之前和之后的示意图。
图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初始化为空集
Figure BDA0003521730010000081
步骤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示例
Figure BDA0003521730010000082
在传统序列事务基础上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中出现次数(支持计数)以及每次出现时的能耗改进标注与β进行定量关联,进而形成带能耗改进标注的频繁选项序列(简记为
Figure BDA0003521730010000091
)。
每个
Figure BDA0003521730010000092
用一个三元组
Figure BDA0003521730010000093
进行表征,其中β捕获了哪些选项按先后顺序发生了交互,
Figure BDA0003521730010000094
和Eβ分别用于表示交互的发生次数和功效;
Figure BDA0003521730010000095
和Eβ分别由式(1)和式(2)计算得到:
Figure BDA0003521730010000096
Figure BDA0003521730010000097
式中,
Figure BDA0003521730010000098
X表示β为事务TE中选项序列X的子序列,而Eβ是β所参与各事务TE的能耗改进标注的累和;通过计算
Figure BDA0003521730010000099
定量刻画频繁选项序列β的平均功效;通过在优势解中借助带能耗改进标注的频繁选项序列捕获选项交互,为选项序列寻优过程提供有用的启发式信息。
(2)全面性及可高效使用性
为了在DBE中捕获任意多个选项的交互,prefixspan+算法挖掘并存储完整的包括各种不同长度的频繁选项序列。考虑到同时按正序或逆序快速定位某一特定的频繁选项序列,采用带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE分别以共享前缀序列和共享后缀序列形式同时保存挖掘出的所有的频繁选项序列
Figure BDA0003521730010000101
图1下部矩形框中示意了前缀树prefixTreeE和后缀树postfixTreeE。prefixTreeE和postfixTreeE树中每个结点对应一个频繁选项序列
Figure BDA0003521730010000102
父子结点之间弧指示了父子结点中选项序列的前缀或后缀关系。例如:图1中prefixTreeE树的第2层第3个结点与第3层第6个结点构成了父子结点关系。这两个结点分别对应了频繁选项序列
Figure BDA0003521730010000103
Figure BDA0003521730010000104
而弧上标注了单选项构成的序列α=<2>。其中,子结点中序列γ=β°α是以父结点中序列β作为前缀,连接弧上标注序列α而形成。类似地,图1中postfixTreeE树的第2层第2个结点与第3层第4个结点构成了父子结点关系。这两个结点分别对应了频繁选项序列
Figure BDA0003521730010000105
Figure BDA0003521730010000106
而弧上标注了单选项构成的序列α=<3>。其中,子结点中序列γ=β°α是以父结点中序列β作为后缀,连接弧上标注序列α而形成。
任何一个频繁选项序列
Figure BDA0003521730010000107
既可按正序从prefixTreeE树根也能按逆序从postfixTreeE树根开始沿着弧进行匹配查找而获得。例中的
Figure BDA0003521730010000108
可按正序从prefixTreeE树根开始按弧<3>→弧<2>,或者按逆序从postfixTreeE树根开始按弧<2>→弧<3>进行查找定位。为了提高在prefixTreeE树和postfixTreeE树中查找频繁选项序列
Figure BDA0003521730010000109
的效率,用两个信息域定义结点。一个域用于记录结点所表示的频繁选项序列
Figure BDA00035217300100001010
而另一个域是一张哈希表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>的支持计数
Figure BDA0003521730010000111
和能耗改进标注Eα,并生成频繁选项序列集合
Figure BDA0003521730010000112
Figure BDA0003521730010000113
步骤A3、对于每个
Figure BDA0003521730010000114
生成序列γ=β°α,用于表示以β为前缀和α为后缀,并经连接生成的频繁选项序列;将γ的支持计数
Figure BDA0003521730010000115
和能耗改进标注Eγ分别置为
Figure BDA0003521730010000116
和Eα,构造出频繁选项序列
Figure BDA0003521730010000117
以α、ptrpre
Figure BDA0003521730010000118
为输入将
Figure BDA0003521730010000119
插入至前缀树,并将返回值赋给ptrpre,以ptrpost
Figure BDA00035217300100001110
为输入将
Figure BDA00035217300100001111
插入至后缀树,得到带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE
步骤A4、构建γ的前缀投影数据库DBE|γ,其等于(DBE|β)|α
步骤A5、以ptrpre、ptrpost、γ、Supmin和DBE|γ为参数,递归调用prefixspan+算法。
图2示意了prefixspan+算法在最小支持计数Supmin=2时,对图1中更新后DBE的递归挖掘过程,为了提高图2的可读性,递归回溯过程的弧被略去。
prefixspan+算法首先将Supmin与以β为前缀的投影数据库DBE|β中的事务数目相比,若事务数小于Supmin则返回上次递归处,否则获取数据库DBE|β中频繁选项序列
Figure BDA00035217300100001112
(α的长度为1)的集合S,如prefixspan+挖掘算法步骤A2所示;然后依次对S中的每个元素
Figure BDA00035217300100001113
执行以下四个步骤,如prefixspan+挖掘算法步骤A3-A5所示:生成新的频繁选项序列
Figure BDA00035217300100001114
插入
Figure BDA00035217300100001115
至前缀树、插入
Figure BDA00035217300100001116
至后缀树、以及构建以新序列
Figure BDA00035217300100001118
为前缀的投影数据库DBE|γ并进行递归调用。下面结合图2解释prefixspan+算法的执行过程。
图2中每个结点表示以β为前缀的投影数据库DBE|β,根结点可看成空序列为前缀的投影数据库DBE|<>(简记为DBE)。prefixspan+算法从图2根结点开始挖掘,经过扫描DBE发现1,2,3和4四个频繁选项,并按式(1)和式(2)分别累计各选项在DBE中的出现次数和所参与事务的能耗改进标注,从而生成4个长度为1的频繁选项序列
Figure BDA0003521730010000121
的集合S,如图2中根结点与第二层4个结点之间弧上的标注。现以S中的第1个元素
Figure BDA0003521730010000122
(<1>,3,24%)为例给出此次递归过程的4个步骤:
①以β=<>为前缀和α=<1>为后缀连接生成新序列γ=β°α=<1>。此时γ=α,故γ与α的支持计数和能耗改进标注相同;
②调用前缀树插入算法将
Figure BDA0003521730010000123
插入前缀树。具体地,首先根据
Figure BDA0003521730010000124
生成一个新结点newNode,然后按照ptrpre(当前为根结点)指示的位置将newNode结点插入前缀树,最后修改ptrpre让其指向newNode结点以指示下一个待插入结点位置。插入后得到图3中左部的前缀树;
③调用后缀树插入算法将
Figure BDA0003521730010000125
插入后缀树。由于当前后缀树的根结点没有孩子结点,故在
Figure BDA0003521730010000126
生成一个新结点newNode后,直接将newNode结点插入根结点下。插入后得到图4中左部的后缀树;
④以γ=<1>为前缀构建数据库DBE|<1>,得到图2第二层最左边结点。根结点DBE与结点DBE|<1>之间的弧上标注了此次递归调用获取的频繁选项序列
Figure BDA0003521730010000127
由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>中的出现次数和能耗改进标注应分别相等,故
Figure BDA0003521730010000128
②调用前缀树插入算法按照当前ptrpre指示的位置将
Figure BDA0003521730010000129
插入到前缀树中。图3的左部和右部分别给出了
Figure BDA00035217300100001210
插入到前缀树之前和之后的情形。在图3右部中,深色背景指示的结点为此次插入新生成的结点,而ptrpre指向下一个待插入结点位置。
③调用后缀树插入算法将
Figure BDA0003521730010000131
插入后缀树。由于后缀树按共享序列后缀的形式进行组织,而prefixspan+是按前缀进行递归调用,因而当后缀树插入算法按频繁序列γ中元素的逆序插入时,需要进行序列后缀的匹配查找。在当前的后缀树中依次逆序插入γ的元素2和1时均未匹配成功,故分别生成两个新结点,并按先后顺序插入到指定位置。生成新结点的步骤如后缀树插入算法中步骤C5所示。各新结点均表示频繁序列γ的后缀部分,它们仅改变了频繁序列的表示形式,故其支持计数和能耗改进标注都为2和17%。图4的左部和右部分别示意了
Figure BDA0003521730010000132
插入后缀树之前和之后的情形。图4中深色背景指示的结点为此次插入过程中新生成的结点。
④以γ=<1,2>为前缀构建数据库DBE|<1,2>,得到图2第三层最左边结点。结点DBE|<1>和DBE|<1,2>之间弧上标注了此次递归调用获取的频繁选项序列
Figure BDA0003521730010000133
由于前缀投影操作具有传递性,因而DBE|<1,2>可通过以<2>为前缀在DBE|<1>上投影获得,如prefixspan+挖掘算法步骤A4。构建完成DBE|<1,2>后进入prefixspan+的下一次递归调用。
以此方式递归挖掘完成所有以<1>为前缀的频繁选项序列时的状态,对应于由图2中第四层第一个结点DBE|<1,3,2>开始向上逐级回溯。在回溯至根结点DBE后,将又从
Figure BDA0003521730010000134
(<2>,4,34%)开始递归挖掘以<2>为前缀的频繁序列。此时对应的后缀树如图5的左部所示。值得注意的是,当插入
Figure BDA0003521730010000135
时,将在后缀树中匹配到后缀选项2。这时无需生成新结点,而要依据
Figure BDA0003521730010000136
的支持计数和能耗改进标注更新匹配的结点。因后缀树以共享后缀形式组织频繁选项序列而prefixspan+却以前缀渐增方式挖掘输出频繁序列,为正确更新匹配结点的支持计数和能耗改进标注,需将匹配结点和
Figure BDA0003521730010000137
的支持计数进行比较。若后者较前者的支持计数大,则用
Figure BDA0003521730010000138
的支持计数和能耗改进标注的值更新匹配结点的对应元素;否则不修改匹配结点中任何元素。图5的左部和右部分别示意了
Figure BDA0003521730010000139
插入后缀树之前和之后的情形。图5左部中指示的结点为匹配结点,因它的支持计数小于
Figure BDA00035217300100001310
的支持计数,故需要被更新。图5右部中指示结点给出了匹配结点中更新后的值。当图2中所示的挖掘过程完成后,可获取图1中的前缀树prefixTreeE和后缀树postfixTreeE
如图10所示,前缀树插入算法具体包括以下步骤:
步骤B1、输入单选项的序列α,指向前缀树prefixTreeE待插入子结点的结点指针ptrpre,以及带能耗改进标注的频繁选项序列
Figure BDA00035217300100001311
步骤B2、基于
Figure BDA0003521730010000141
和空的哈希表生成新结点newNode,并置ptrnewNode指向结点newNode;
步骤B3、在ptrpre指向结点的哈希表中增加一个表项,该表项的键值为α对应选项,值为指针ptrnewNode
步骤B4、将指针ptrpre指向ptrnewNode
步骤B5、输出返回待插子结点的新指针ptrpre
如图11所示,后缀树插入算法具体包括以下步骤:
步骤C1、输入指向后缀树postfixTreeE根结点的指针ptrpost以及带能耗改进标注的频繁选项序列
Figure BDA0003521730010000142
步骤C2、将i赋值为序列γ的长度len,并将指针ptrpar指向ptrpost
步骤C3、当i>0,转下一步,逆序插入γ中各元素,否则结束;
步骤C4、以γ[i]为键在ptrpar指向结点的哈希表中查找,并获取指向匹配子结点的指针ptrchd
步骤C5、如果ptrchd不为空,则匹配成功,进一步判断:如果ptrchd指向结点的频繁序列的支持计数小于
Figure BDA0003521730010000143
则更新结点中频繁序列的标注,即将ptrchd指向结点对应的频繁序列的支持计数和能耗改进标注分别置为
Figure BDA0003521730010000144
和Eγ;如果ptrchd为空,则进行如下操作:令δ=<γ[i],…,γ[len]>,并将其支持计数和能耗改进标注分别设为
Figure BDA0003521730010000145
和Eγ,构造出带能耗改进标注的频繁后缀选项序列
Figure BDA0003521730010000146
基于
Figure BDA0003521730010000147
和空的哈希表生成新结点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根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集
Figure BDA0003521730010000151
生成式(3)定义的选项-平均功效集Sop作为匹配结果;
Figure BDA0003521730010000152
若匹配不成功,则将空集
Figure BDA0003521730010000153
作为匹配结果;式(3)中chd.β[end-strt+2]表示孩子结点chd中选项序列最后一个元素对应的选项op。
例中,α=<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根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集
Figure BDA0003521730010000154
生成式(4)定义的选项-平均功效集Sop作为匹配结果;
Figure BDA0003521730010000155
若匹配不成功,则将空集
Figure BDA0003521730010000156
作为匹配结果;式(4)中chd.γ[1]表示孩子结点chd中选项序列第一个元素对应的选项。
例中,α=<3,2>在图1后缀树中匹配获得孩子结点集Schd={(<1,3,2>,2,17%),(<4,3,2>,2,18%)},如图1中虚线框中指示的两个结点,匹配路径已用弧线在后缀树中标出。而根据式(4)计算的匹配结果Sop={(1,8.5%),(4,9%)}。
(3)概率选择规则
概率选择操作根据前缀匹配或后缀匹配规则的匹配结果Sop按概率选中某个选项。具体地,若
Figure BDA0003521730010000157
则按等概率从优化问题提供的n个选项中随机选择一个;若
Figure BDA0003521730010000158
则按式(5)定义的概率pj选择选项j。式(5)中j为Sop中出现的选项,而avgUtilj为选项j对应的平均功效。
Figure BDA0003521730010000161
例中后缀匹配规则的匹配结果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实施例的基本情况
Figure BDA0003521730010000171
3.2使用的统计方法
考虑到演化算法和本方法FHIA-FSM的随机性,它们在各实施例下分别独立运行20次并进行统计检验。本实施例采用Wilcoxom秩和检验对实验数据进行统计分析,并将置信水平α设置为0.05。为了进一步观测对比数据的差异程度(effect size),本实施例还使用Vargha-Delaney的
Figure BDA0003521730010000172
作为effect size的直观变量,
Figure BDA0003521730010000173
的值域为[0,1],其值越大说明差异程度越大。
3.3实验安装
(1)实验环境
表3给出实验环境的具体配置。
表3实验环境配置
Figure BDA0003521730010000181
(2)算法参数的设定
表4给出了本方法FHIA-FSM和GA算法下的参数设定,符号NA表示不包含对应参数。而Georgiou算法不含任何参数。
表4 FHIA-FSM和GA算法参数设置
Figure BDA0003521730010000182
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等级的能耗改进百分比)的统计量结果
Figure BDA0003521730010000191
表6进一步给出了本方法FHIA-FSM分别与GA和Georgiou针对基准停机时间下各案例最佳目标值(相对于-O2等级的能耗改进百分比)的秩和检验结果。表6中的第2列和第4列中的p-value值在全部7个案例下均远小于置信水平0.05,这从统计意义角度表明FHIA-FSM在基准停机时间下解质量显著优于GA和Georgiou。表6中第3列和第5列中effect size的
Figure BDA0003521730010000192
值在所有7个案例下均大于0.8,这表明FHIA-FSM较GA和Georgiou能以较大概率上获得更优的解。图6所给出的统计盒图也直观地得到一致结论。
表6本文FHIA-FSM分别与GA和Georgiou针对基准停机时间下各案例最佳目标值(相对于-O2等级的能耗改进百分比)的秩和检验结果
Figure BDA0003521730010000193
为了进一步量化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在基准停机时间下各案例解质量(目标值)的平均相对改进百分比
Figure BDA0003521730010000201
(2)问题2(收敛速度):本方法FHIA-FSM较Georgiou算法和GA算法能否以更少的计算时间达到基准解质量?通过回答这一问题,可以进一步验证本方法效率。亦即FHIA-FSM可否以更快的速度收敛得到基准质量的解。
为了避免测量噪声并进行归一化对比,以Georgiou算法达到基准解质量时的优化用时作为基准时间T0,定义计算时间改进百分比IΔt%作为度量指标,如式(6)所示。式(6)中,T为FHIA-FSM或GA在达到基准解质量所花费的计算时间。
Figure BDA0003521730010000202
表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的
Figure BDA0003521730010000211
值在所有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%的统计量结果
Figure BDA0003521730010000212
表9本文FHIA-FSM分别与GA和Georgiou针对各案例在达到基准解质量时计算时间改进百分比IΔt%的秩和检验结果
Figure BDA0003521730010000213
Figure BDA0003521730010000221
表8、表9、图7和表10的结果表明:在达到基准解质量过程中,不使用任何启发式信息的GA算法较使用启发式信息进行寻优的算法FHIA-FSM和Georgiou需要消耗更多的计算时间。这说明启发式信息对于设计空间搜索这类LLVM选项序列优化方法不仅对于提高解质量,而且对于加快收敛速度也具有重要的作用;此外,本方法FHIA-FSM使用带能耗改进标注的频繁选项序列捕获选项交互的启发式信息较Georgiou使用标准等级隐含的选项依赖关系作为启发式信息能更为有效地提高收敛速度。
表10本文FHIA-FSM较GA和Georgiou在各案例达到基准解质量时计算时间的相对改进百分比
Figure BDA0003521730010000222
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、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初始化为空集
Figure FDA0003521693000000011
步骤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>的支持计数
Figure FDA0003521693000000021
和能耗改进标注Eα,并生成频繁选项序列集合
Figure FDA0003521693000000022
Figure FDA0003521693000000023
步骤A3、对于每个
Figure FDA0003521693000000024
生成序列γ=β°α,用于表示以β为前缀和α为后缀,并经连接生成的频繁选项序列;将γ的支持计数
Figure FDA0003521693000000025
和能耗改进标注Eγ分别置为
Figure FDA0003521693000000026
和Eα,构造出频繁选项序列
Figure FDA0003521693000000027
以α、ptrpre
Figure FDA0003521693000000028
为输入将
Figure FDA0003521693000000029
插入至前缀树,并将返回值赋给ptrpre,以ptrpost
Figure FDA00035216930000000210
为输入将
Figure FDA00035216930000000211
插入至后缀树,得到带能耗改进标注的频繁选项序列前缀树prefixTreeE和后缀树postfixTreeE
步骤A4、构建γ的前缀投影数据库DBE|γ,其等于(DBE|β)|α
步骤A5、以ptrpre、ptrpost、γ、Supmin和DBE|γ为参数,递归调用prefixspan+算法。
4.根据权利要求3所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,每个
Figure FDA00035216930000000212
用一个三元组
Figure FDA00035216930000000213
进行表征,其中β捕获了哪些选项按先后顺序发生了交互,
Figure FDA00035216930000000214
和Eβ分别用于表示交互的发生次数和功效;
Figure FDA00035216930000000215
和Eβ分别由式(1)和式(2)计算得到:
Figure FDA00035216930000000216
Figure FDA00035216930000000217
式中,
Figure FDA00035216930000000218
X表示β为事务TE中选项序列X的子序列,而Eβ是β所参与各事务TE的能耗改进标注的累和;通过计算
Figure FDA00035216930000000219
定量刻画频繁选项序列β的平均功效;通过在优势解中借助带能耗改进标注的频繁选项序列捕获选项交互,为选项序列寻优过程提供有用的启发式信息。
5.根据权利要求3所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,以α、ptrpre
Figure FDA0003521693000000031
为输入将
Figure FDA0003521693000000032
插入至前缀树的具体方法为:
步骤B1、输入单选项的序列α,指向前缀树prefixTreeE待插入子结点的结点指针ptrpre,以及带能耗改进标注的频繁选项序列
Figure FDA0003521693000000033
步骤B2、基于
Figure FDA0003521693000000034
和空的哈希表生成新结点newNode,并置ptrnewNode指向结点newNode;
步骤B3、在ptrpre指向结点的哈希表中增加一个表项,该表项的键值为α对应选项,值为指针ptrnewNode
步骤B4、将指针ptrpre指向ptrnewNode
步骤B5、输出返回待插子结点的新指针ptrpre
6.根据权利要求3所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,以ptrpost
Figure FDA0003521693000000035
为输入将
Figure FDA0003521693000000036
插入至后缀树的具体方法为:
步骤C1、输入指向后缀树postfixTreeE根结点的指针ptrpost以及带能耗改进标注的频繁选项序列
Figure FDA0003521693000000037
步骤C2、将i赋值为序列γ的长度len,并将指针ptrpar指向ptrpost
步骤C3、当i>0,转下一步,否则结束;
步骤C4、以γ[i]为键在ptrpar指向结点的哈希表中查找,并获取指向匹配子结点的指针ptrchd
步骤C5、如果ptrchd不为空,则匹配成功,进一步判断:如果ptrchd指向结点的频繁序列的支持计数小于
Figure FDA0003521693000000038
则更新结点中频繁序列的标注,即将ptrchd指向结点对应的频繁序列的支持计数和能耗改进标注分别置为
Figure FDA0003521693000000039
和Eγ;如果ptrchd为空,则进行如下操作:令δ=<γ[i],…,γ[len]>,并将其支持计数和能耗改进标注分别设为
Figure FDA00035216930000000310
和Eγ,构造出带能耗改进标注的频繁后缀选项序列
Figure FDA00035216930000000311
基于
Figure FDA00035216930000000312
和空的哈希表生成新结点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并结束。
8.根据权利要求7所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,运用前缀匹配规则,并获取匹配结果Sop的具体方法为:
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按正序从前缀树prefixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集
Figure FDA0003521693000000041
Figure FDA0003521693000000042
生成式(3)定义的选项-平均功效集Sop作为匹配结果;
Figure FDA0003521693000000043
若匹配不成功,则将空集
Figure FDA0003521693000000044
作为匹配结果;式(3)中chd.β[end-strt+2]表示孩子结点chd中选项序列最后一个元素对应的选项op。
9.根据权利要求7所述的频繁序列挖掘帮助的LLVM编译时能耗优化方法,其特征在于,运用后缀匹配规则,并获取匹配结果Sop的具体方法为:
将解X=<x1,x2,…,xn>中确定的连续子序列α=<xstrt,xstrt+1,…,xend>按逆序从后缀树postfixTreeE根结点开始的路径所形成选项规则序列进行匹配,若匹配成功,则根据匹配结点所对应的孩子结点集
Figure FDA0003521693000000045
Figure FDA0003521693000000051
生成式(4)定义的选项-平均功效集Sop作为匹配结果;
Figure FDA0003521693000000052
若匹配不成功,则将空集
Figure FDA0003521693000000053
作为匹配结果;式(4)中chd.γ[1]表示孩子结点chd中选项序列第一个元素对应的选项。
10.一种频繁序列挖掘帮助的LLVM编译时能耗优化系统,其特征在于,包括存储器、处理器以及存储于存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现如权利要求1-9任一项所述的方法步骤。
CN202210183569.0A 2022-02-25 2022-02-25 频繁序列挖掘帮助的llvm编译时能耗优化方法及系统 Pending CN114564184A (zh)

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)

* Cited by examiner, † Cited by third party
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编译选项选择方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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