CN109669698A - 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备 - Google Patents

基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备 Download PDF

Info

Publication number
CN109669698A
CN109669698A CN201811329077.8A CN201811329077A CN109669698A CN 109669698 A CN109669698 A CN 109669698A CN 201811329077 A CN201811329077 A CN 201811329077A CN 109669698 A CN109669698 A CN 109669698A
Authority
CN
China
Prior art keywords
compiling
option
individual
compiling option
frequent
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
CN201811329077.8A
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.)
Foochow San Xinlongzhu Industry Co Ltd
Fujian Normal University
Original Assignee
Foochow San Xinlongzhu Industry Co Ltd
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 Foochow San Xinlongzhu Industry Co Ltd, Fujian Normal University filed Critical Foochow San Xinlongzhu Industry Co Ltd
Priority to CN201811329077.8A priority Critical patent/CN109669698A/zh
Publication of CN109669698A publication Critical patent/CN109669698A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及信息处理技术领域,特别涉及一种基于频繁模式挖掘的能耗优化方法。所述一种基于频繁模式挖掘的能耗优化方法,包括步骤:S1:生成初始随机种群P(t);S2:计算P(t)中每个个体的适应度值;S3:若t达到指定代数,否则转S4;S4:记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中;S5:生成临时种群Pc(t),并通过对所述事务表进行频繁模式挖掘获得频繁编译选项模式集;S6:基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t);S7:基于轮盘赌策略在种群Pm(t)和种群P(t)中选择并生成下一代种群P(t+1)。通过该方式,充分考虑到了不同的编译选项之间可能存在的相互影响,使得可以提高解质量和加快收敛速度。

Description

基于频繁模式挖掘的GCC编译时能耗演化优化方法及存储 设备
技术领域
本发明涉及信息处理技术领域,特别涉及一种基于频繁模式挖掘的GCC编译时能耗演化优化方法及存储设备。
背景技术
能耗是嵌入式软件的关键质量属性。特别是在电量受限的执行环境中,降低嵌入式软件的能耗具有更为重要的价值和意义。与嵌入式软件源代码级的能耗优化相比,编译时能耗优化无需改动源代码,同时可保证功能语义一致性。作为一款开源编译器,GCC已广泛应用于嵌入式软件源代码的编译。GCC提供常用的几种优化等级,利用每种优化等级所预设的一组编译选项对软件源代码进行编译,可实现可执行代码的优化。然而GCC的优化等级对于特定的软件源代码、执行平台和特定优化目标,往往难以获得最佳的优化效果。
此外,GCC编译选项数目众多,选择空间十分庞大。例如:GCC4.9.2提供了188个编译选项,其选择空间高达2188。依靠程序员人工选择编译选项不仅十分困难,而且也难以保证优化质量。更为重要的是,GCC优化等级多集中于执行时间和目标代码大小的优化,未针对能耗优化的场景。与此同时,Pallister的研究表明使用GCC的优化等级对嵌入式软件进行编译时,甚至出现能耗增加的情况。近年来,用于能耗优化的GCC编译选项的选择问题已经成为了一个研究热点。
利用演化算法可以在庞大的搜索空间,获取接近最优的GCC编译器编译选项集。运用这些编译选项集对源代码进行编译可显著降低可执行代码的能耗,从而达到编译时优化嵌入式软件能耗的目的。但这类算法未考虑多个编译选项之间可能存在相互影响,导致了其解质量不高且收敛速度慢的问题。目前尚缺乏有效的技术手段解决该问题。
发明内容
为此,提供一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,用于解决现有GCC编译时能耗演化优化方法因未考虑多个编译选项之间可能存在相互影响,而导致质量不高且收敛速度慢的问题。具体技术方案如下:
一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,包括步骤:S1:令迭代次数t=1,生成初始随机种群P(t);S2:计算P(t)中每个个体的适应度值,所述个体适应度值为较GCC编译器-O0等级的能耗改进百分比;S3:若t达到指定代数,输出P(t)中适应度值最大的个体并转S10,否则转S4;S4:记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中;S5:对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集;S6:进行单点交叉操作,生成临时种群Pc(t);S7:基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t),所述变异操作包括:增添或删减;S8:基于轮盘赌策略在种群Pm(t)和种群P(t)中选择并生成下一代种群P(t+1);S9:令t=t+1,并转S2;S10:结束。
进一步的,所述预先设计好的事务表的每一行是三元组的有序列表,所述三元组的第一个数、第二个数和第三个数分别为:编译选项的编号、编译选项出现的次数和编译选项对应的能耗改进标注值。
进一步的,所述“对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集”,还包括步骤:构造初始的带能耗改进标注的频繁模式树;去除所述事务表各行中出现次数小于设定的最小支持计数的编译选项,并按出现次数对事务表各行中的编译选项进行降序排序,生成排序后的频繁编译选项事务表;将所述排序后的频繁编译选项事务表各行中的频繁编译选项依次插入至所述带能耗改进标注的频繁模式树中;在插入过程中,对频繁编译选项出现次数进行加1的同时,还对能耗改进百分比做累加处理;对所述带能耗改进标注的频繁模式树进行挖掘,得到频繁编译选项模式集,其中每个频繁编译选项均带有能耗改进标注。
进一步的,所述“基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t)”,还包括步骤:将临时种群Pm(t)置空,并对于Pc(t)中的每个个体X执行如下操作:4a:随机生成整数0或1;4b:若生成的整数为1转步骤4c,否则转步骤4d;4c:基于频繁编译选项模式集,对个体X进行增添操作生成新个体X',转4e;4d:基于频繁编译选项模式集,对个体X进行删减操作生成新个体X';4e:将新生成个体X'放入种群Pm(t)中。
进一步的,所述“基于频繁编译选项模式集,对个体X进行增添操作生成新个体X'”,还包括步骤:获取个体X中已选用的编译选项集和未选用的编译选项集;从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;结合所述频繁编译选项模式集与所述编译选项编号集合,并依据所述未选用的编译选项集计算得到待添加的编译选项及其被添加的概率;将所述待添加的编译选项依概率加入至所述已选用的编译选项集中,进而生成新个体X'。
进一步的,所述“基于频繁编译选项模式集,对个体X进行删减操作生成新个体X'”,还包括步骤:获取个体X中已选用的编译选项集和未选用的编译选项集;从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;基于所述频繁编译选项模式集计算得到从所述编译选项编号集合中待移除的编译选项及被移除的概率;从所述已选用的编译选项集中依概率移除所述待移除的编译选项,进而生成新个体X'。
为解决上述技术问题,还提供了一种存储设备,具体技术方案如下:
一种存储设备,其中存储有指令集,所述指令集用于执行:S1:令迭代次数t=1,生成初始随机种群P(t);S2:计算P(t)中每个个体的适应度值,所述个体适应度值为较GCC编译器-O0等级的能耗改进百分比;S3:若t达到指定代数,输出P(t)中适应度值最大的个体并转S10,否则转S4;S4:记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中;S5:对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集;S6:进行单点交叉操作,生成临时种群Pc(t);S7:基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t),所述变异操作包括:增添或删减;S8:基于轮盘赌策略在种群Pm(t)和种群P(t)中选择并生成下一代种群P(t+1);S9:令t=t+1,并转S2;S10:结束。
进一步的,所述预先设计好的事务表的每一行是三元组的有序列表,所述三元组的第一个数、第二个数和第三个数分别为:编译选项的编号、编译选项出现的次数和编译选项对应的能耗改进标注值。
进一步的,所述指令集还用于执行:所述“基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t)”,还包括步骤:将临时种群Pm(t)置空,并对于Pc(t)中的每个个体X执行如下操作:4a:随机生成整数0或1;4b:若生成的整数为1转步骤4c,否则转步骤4d;4c:基于频繁编译选项模式集,对个体X进行增添操作生成新个体X',转4e;4d:基于频繁编译选项模式集,对个体X进行删减操作生成新个体X';4e:将新生成个体X'放入种群Pm(t)中。
进一步的,所述“基于频繁编译选项模式集,对个体X进行增添操作生成新个体X'”,还包括步骤:获取个体X中已选用的编译选项集和未选用的编译选项集;从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;结合所述频繁编译选项模式集与所述编译选项编号集合,并依据所述未选用的编译选项集计算得到待添加的编译选项及其被添加的概率;将所述待添加的编译选项依概率加入至所述已选用的编译选项集中,进而生成新个体X'。
进一步的,所述指令集还用于执行:所述“基于频繁编译选项模式集,对个体X进行删减操作生成新个体X'”,还包括步骤:获取个体X中已选用的编译选项集和未选用的编译选项集;从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;基于所述频繁编译选项模式集计算得到从所述编译选项编号集合中待移除的编译选项及被移除的概率;从所述已选用的编译选项集中依概率移除所述待移除的编译选项,进而生成新个体X'。
本发明的有益效果是:通过在演化过程中构建并更新有能耗改进效果的事务表,进一步挖掘获取出现频度高且对能耗改进幅度大的编译选项模式集,并基于该编译选项模式集进行启发式增添或删减的变异操作,可充分考虑到不同的编译选项之间存在的相互影响,进而可以提高解质量和加快收敛速度。
附图说明
图1为具体实施方式所述一种基于频繁模式挖掘的GCC编译时能耗演化优化方法的流程图;
图2为具体实施方式所述能耗计算示意图;
图3为具体实施方式所述对事务表进行频繁模式挖掘获得频繁编译选项模式集的流程图;
图4为具体实施方式所述基于表1例子事务表生成的FPE树;
图5为具体实施方式所述例子的初始FPE树;
图6为具体实施方式所述插入表4事务表第1行得到的FPE树;
图7为具体实施方式所述插入表4事务表第1和2行得到的FPE树;
图8为具体实施方式所述例子中16号频繁编译选项的条件FPE树;
图9为具体实施方式所述在8个案例下能耗改进百分比(IΔeng%)的统计盒图;
图10为具体实施方式所述在8个案例下收敛速度指标IΔi%(GA-FP达到不劣于Tree-EDA最优解对应最小迭代次数的相对减少百分比)的统计盒图;
图11为具体实施方式所述一种存储设备的示意图。
附图标记说明:
110、存储设备。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1至图10,在本实施方式中,一种基于频繁模式挖掘的GCC编译时能耗演化优化方法可应用在一种存储设备上,所述存储设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等。
首先对本实施方式中的一些名词概念做以下说明:
GCC:(GNU Compiler Collection,GNU编译器套件),是用于GNU操作系统的编程语言编译器。GCC提供了100多种编译优化选项用于编译时间、目标文件长度和执行时间的优化。GCC提供-O0、-O1、-O2、-O3和-Os五个优化等级,除-O0等级外,每个优化等级均包括一组预设的编译选项。其中,-O0等级不做任何优化,是默认的编译选项。GCC没有直接提供对能耗进行优化的等级。但通过组合其提供编译优化选项,可对能耗进行优化。
定义1(优化空间Ω)若对GCC编译器支持的编译选项从1至l进行编号,则优化空间Ω可定义为式(1)所示的元序偶集。在式(1)中,xi=0或1分别表示选用或不选用编译选项i。
Ω={X|X=<x1,x2,…,xi…,xl>∧xi∈{0,1}} (1)
定义2(选用和未选用的编译选项集)对于优化空间Ω中一个元素X,其所定义的选用和未选用的编译选项集分别用SS(X)和SU(X)表示。它们分别由式(2)和式(3)定义。
SS(X)={i|xi∈X∧xi=1} (2)
SU(X)={i|xi∈X∧xi=0} (3)
定义3(能耗评估)能耗评估函数EvE(Sftexe)用于计算一个嵌入式软件可执行代码Sftexe在某一特定输入下,从开始运行至结束所消耗的电能。EvE(Sftexe)的定义如式(4)所示。
在式(4)中,Tj和Tj+1分别表示Sftexe在特定输入下,执行过程中的第j和j+1功率测量的采样点;T0和Tn分别为Sftexe执行的开始时刻和结束时刻;Pj和Pj+1分别表示第j和j+1采样点测得的瞬时功率。如图2所示,通过累加相邻两个采样时刻点和对应近似功率所形成的梯形的面积,可计算Sftexe执行过程中实际能耗的近似值。基于STM32F4开发板,在本实施方式中,研发了一套能耗评估系统,实现了EvE(Sftexe)函数的功能。
定义4(编译和链接)定义函数cmpLnko(Sftsrc)和函数cmpLnk(Sftsrc,X)分别表示运用GCC编译器缺省的-O0等级(不选用任何编译选项)、SS(X)选用的编译选项集,对一个嵌入式软件源代码Sftsrc进行编译和链接后所得到的可执行代码。
定义5(目标函数)定义函数f(Sftsrc,X)用于计算相对于-O0等级,使用SS(X)编译选项集获得Sftsrc对应的可执行代码运行时能耗所降低的百分比。f(Sftsrc,X)的定义如式(5)所示:
定义6(优化问题)用于嵌入式软件能耗优化的编译选项选择问题可描述为:搜索满足式(6)的最优解X*。
在本实施方式中,一种基于频繁模式挖掘的GCC编译时能耗演化优化方法的具体实施如下:
步骤S101:令迭代次数t=1,生成初始随机种群P(t)。步骤S102:计算P(t)中每个个体的适应度值,所述个体适应度值为较GCC编译器-O0等级的能耗改进百分比。步骤S103:判断t是否达到指定代数,如不是转S104,否则转S110。步骤S104:记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中。步骤S105:对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集。步骤S106:进行单点交叉操作,生成临时种群Pc(t)。步骤S107:基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t),所述变异操作包括:增添或删减。步骤S108:基于轮盘赌策略在种群Pm(t)和种群P(t)中选择并生成下一代种群P(t+1)。步骤S109:令t=t+1,并转S102。步骤S110:输出最优解,并结束。
具体如下:
令迭代次数t=1,生成大小为N的随机种群P(t)={X1,X2,…,Xk,…,XN},其中
计算P(t)中每个个体的适应度值,所述个体适应度值为较GCC编译器-O0等级的能耗改进百分比,其中个体的适应度值计算过程如下:
1)根据个体X的编码确定所选用的编译选项集;2)用该编译选项集对源代码编译链接后可获得可执行代码exeCode1;3)测量可执行代码exeCode1从开始运行至结束所消耗的能耗为E;4)运用GGC编译器-O0等级对源代码编译链接后可获得可执行代码exeCode2;5)测量可执行代码exeCode2从开始运行至结束所消耗的能耗为E0;6)个体X的适应度值=(E0-E)/E0。
计算好P(t)中每个个体的适应度值后,判断迭代次数t是否达到了指定代数,在本实施方式中,指定代数为100,种群大小N为50,最小支持计数为5(种群大小的10%),在其它实施方式中,亦可以根据实际情况设定为其它大小。
若迭代次数t未达到指定代数,则记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中。
在本实施方式中,所述预先设计好的事务表的每一行是三元组的有序列表,所述三元组的第一个数、第二个数和第三个数分别为:编译选项的编号、编译选项出现的次数和编译选项对应的能耗改进标注值。
为了更好地解释实施例,以13个编译选项作为例子。实际应用中将涉及GCC编译器的更多个编译选项,但其原理和方法与所举的例子是相同的。例子中的初始事务表如下表1所示:
表1带能耗改进标注的编译选项事务TE
步骤S105对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集,请参阅图3,具体步骤如下:
步骤S301:构造初始的带能耗改进标注的频繁模式树。步骤S302:去除所述事务表各行中出现次数小于设定的最小支持计数的编译选项,并按出现次数对事务表各行中的编译选项进行降序排序,生成排序后的频繁编译选项事务表。步骤S303:将所述排序后的频繁编译选项事务表各行中的频繁编译选项依次插入至所述带能耗改进标注的频繁模式树中。步骤S304:在插入过程中,对频繁编译选项出现次数进行加1的同时,还对能耗改进百分比做累加处理。步骤S305:对所述带能耗改进标注的频繁模式树进行挖掘,得到频繁编译选项模式集,其中每个频繁编译选项均带有能耗改进标注。
结合例子阐述以上步骤,具体如下:
首先给出一些与频繁编译选项相关的定义,带能耗改进标注的频繁模式树(简记为FPE树)的数据结构后,再阐述FPE树的构造算法和基于FPE树的挖掘算法。
定义7(编译选项的支持计数)i号编译选项的支持计数cnt(i)由式(7)和(8)定义。式(7)中,表示事务表TTE第j条事务中第k个元素的编译选项编号。而式(8)中,m和|TE j|分别表示事务表TTE的事务总数和第j条事务中元素的个数。
从定义7和定义8不难看出:cnt(i)是i号编译选项在整个事务表TTE中出现的次数。例如:在表1的例子事务表TTE中,cnt(1)=3。
定义8(频繁编译选项)称i号编译选项是一个频繁编译选项,当且仅当cnt(i)大于或等于预设的最小支持计数Cmin
定义9(编译选项集的支持计数)若ScmpOptNm是编译选项编号的集合,则ScmpOptNm对应的编译选项集的支持计数用cntS(ScmpOptNm)进行表示。cntS(ScmpOptNm)由式(9)和(10)定义。式(9)中,表示投影出事务表TTE第j条事务中所有的编译选项编号。
从定义9和定义10不难看出:cntS(ScmpOptNm)是ScmpOptNm的各个编译选项在事务表TTE的各条事务中同时出现的次数。例如:在表1的例子事务表TTE中,6号和3号组成的编译选项集的支持计数cntS({6,3})=3。
定义10(频繁编译选项模式)若ScmpOptNm和Cmin分别是编译选项编号的集合和预设的最小支持计数,则ScmpOptNm对应的编译选项集是频繁编译选项模式,当且仅当cntS(ScmpOptNm)≥Cmin
基于带能耗改进标注的频繁模式树FPE,挖掘频繁编译选项模式集,下面介绍FPE树的数据结构。FPE树也是由前缀项树PT和项头表HL所构成,但FPE树融入了能耗标注,如图4所示。
前缀项树PT包含一个根结点root和若干棵项前缀子树。PT树的每个结点用cmpOptNm、count、engAno、parNode和nextNode五个域描述。它们分别表示编译选项编号、译选项出现次数、耗改进标注、向父结点的指针和指向下一个具有相同编译选项编号的结点的指针。在图4椭圆形表示的结点中,逗号分隔的三个数值分别是cmpOptNm、count、engAno的值,而根结点root中的这个三数值为空null。图4中实线和虚线弧间接定义了每个结点的parNode和nextNode的值。没有虚线弧的结点,其nextNode值为空null。与传统FP树不同之处在于FPE树的结点引入了能耗改进标注的描述。
项头表HL的每个表项用cmpOptNm和hdLnk两个属性进行描述。这两个属性分别表示编译选项编号和结点链(虚线弧构成的链)的头指针。通过结点链可将同一个编译选项链接起来。例如:图4中HL项头表最后一行的头指针hdLnk将前缀树PT中所有出现的16号编译选项结点(灰色背景指示)链接起来。
基于FPE树的数据结构,表2所示的FPE-Create算法和表3所示的Insert_tree算法给出了FPE树的构造过程。具体如下:
Insert_tree算法在将i号频繁编译选项插入到FPE树时,既要考虑其出现在哪些事务中,又要体现所参于事务的能耗改进幅度。依据根结点有无相同编译选项的孩子结点,分为两种情况:若没有匹配的孩子结点,则新增结点,并将新增结点的count域和engAno域分别置为1和i号编译选项关联的能耗改进标注;否则,将匹配孩子结点的count域和engAno域分别累加1和i号编译选项关联的能耗改进标注。下面以表1的事务表TTE和最小支持计数Cmin=3为例,简要解释FPE树的构造过程。
表2 FPE-Create算法
表3 Insert_tree算法
(1)构造初始的FPE
基于表1的带有能耗改进效果的事务表TTE,并利用FPE-Create算法的第1步先得到频繁编译选项序列SeqFCOpt=<(1,3),(2,3),(3,4),(6,4),(13,3),(16,3)>。在SeqFCOpt中,每个二元组的第1个和2个元素分别是编译选项的编号和支持计数。由于SeqFCOpt存放的是各个频繁编译选项,SeqFCOpt中各个二元组的支持计数应大于等于最小支持计数Cmin=3。对SeqFCOpt按照支持计数降序排列后,,SeqFCOpt=<(6,4),(3,4),(1,3),(2,3),(13,3),(16,3)>。
FPE-Create算法的第2步根据SeqFCOpt中各频繁编译选项的顺序<6,3,1,2,13,16>构造出项头表HL,并经第3步生成仅包含根结点root的一棵FPE树,如图5所示。
(2)生成排序后的频繁编译选项事务表TTE
FPE-Create算法的第4步扫描事务表TTE按最小支持计数Cmin=3筛选出频繁编译选项,并按SeqFCOpt中频繁编译选项的顺序进行排序,生成排序后的频繁编译选项事务表TTFE,如表4所示:
表4基于事务表TTE进行筛选和排序后的频繁编译选项事务表TTFE
(3)将频繁编译选项事务表TTFE各事务中的频繁编译选项插入到FPE
利用FPE-Create算法的第5至第8步并以表5频繁编译选项事务表TTFE的每条事务为单位,通过调用Insert_tree算法将各事务中的每个频繁编译选项依次插入到FPE树中。
Insert_tree算法在将i号频繁编译选项插入到FPE树时,既要考虑其出现次数,又要体现所参于事务的能耗改进幅度。依据根结点有无相同编译选项编号的孩子结点,分为两种情况:若没有匹配的孩子结点,则新增结点,并将新增结点的出现次数属性count和能耗标注属性engAno的值分别置为1和i号编译选项所关联的能耗改进标注值;否则,将匹配的孩子结点的count属性和engAno属性分别累加1和累加i号编译选项所关联的能耗改进标注值。下面以插入表4频繁编译选项事务表TTFE的前2行事务为例进行解释和说明。
1、插入表4事务表TTFE第1行事务中的各频繁编译选项
在图5初始FPE树的基础上,将表4事务表TTFE中的第1行事务中各频繁编译选项依次插入到FPE树中。由于Insert_tree算法每次递归插入时,根结点root没有匹配的孩子结点,故依次生成5个新结点,建立FPE树的第1个分支,如图6所示。
2、插入表4事务表TTFE第2行事务中各频繁编译选项
在图6的FPE树基础上,将表4事务表TTFE第2行事务的各频繁编译选项依次插入到FPE树时,由于插入第1个频繁编译选项(其编号、支持计数和能耗改进标注分别为6、1和10%)时,root结点有一个匹配的孩子结点(如图6灰色背景的结点,其支持计数和能耗改进标注分别为1和12%),需要将这个孩子结点的计数和能耗改进标注分别与表4第2行事务中6号编译选项的支持计数和能耗改进标注进行累加(见Insert_tree算法的第3步和第4步)并更新为count=2和engAno=22%。
类似地,插入表4第2行的第2和第3个频繁编译选项。而当插入第4个频繁编译选项(其编号、支持计数和能耗改进标注分别为2、1和10%)时,此时的根结点(1,2,22%)下没有匹配的孩子结点,根据Insert_tree算法的第6至第17步,在根结点(1,2,22%)下新建一个孩子结点并将表4第2行事务中2号编译选项的支持计数和能耗改进标注赋值给该孩子结点的对应属性,从而得到FPE树的第2个分支。同理将第5个频繁编译选项插入到FPE树得到图7所示的FPE树。
同理再依次插入表4第3、第4和第5行事务中的各编译选项可输出表1事务表TTE所对应的FPE树,如图4所示。
具体挖掘算法如下:首先介绍与FPE树挖掘相关的概念:
定义11(前缀路径)若node是FPE树的一个非根结点,则node的前缀路径定义为从根root到node之间的一条路径。它对应一个结点序列并简记为path|node,又称node是前缀路径path|node的后缀结点。
例如:图4项头表HL最后一个表项头指针指向的结点node所对应的前缀路径path|node为:path1=<(6,4,41%),(3,3,30%),(1,3,30%),(13,2,20%)>。
定义12(条件前缀路径)若node的前缀路径为path|node,则node的条件前缀路径定义为:将path|node上各结点的支持计数修改为node的支持计数并记作cndPath|node。
node的支持计数小于等于其前缀路径上每个结点的支持计数。支持计数的修改反映了node指示的编译选项与path|node中各结点的指示编译选项共同出现的次数。与支持计数不同,能耗改进标注用于刻画频繁编译选项所参与各事务的能耗改进效果,故未进行修改。
例如:设图4项头表HL最后一个表项的头指针指向的结点为node,其支持计数和所对应的前缀路径分是2和path1=<(6,4,41%),(3,3,30%),(1,3,30%),(13,2,20%)>。则通过修改支持计数后得到node的条件前缀路径cndPath|node为:
cndPath1=<(6,2,41%),(3,2,30%),(1,2,30%),(13,2,20%)>。
定义13(频繁编译选项关联的FPE树结点集)若i号编译选项是频繁编译选项,则i关联的FPE树结点集nodes(i)由式(11)定义。式(11)中的row,head(node)分别表示项头表HL的行下标和获取node所在结点链的头指针。
nodes(i)={node|i=HL[row].cmpOptNm∧head(node)=HL[row].hdLnk}
(11)
由式(11)可以看出:i号频繁编译选项关联的FPE树结点集是一个结点链上各结点构成的集合,且该结点链上各结点的编译选项编号为i。例如:图4中16号频繁编译选项关联的FPE树结点集中包含了2个灰色背景指示的结点。
定义14(频繁编译选项的条件前缀路径集)若i号编译选项是频繁编译选项,则i对应的条件前缀路径集cndPaths|i由式(12)定义。
cndPaths|i={(cndPath|node)|node∈nodes(i)}
(12)
例如:图4中16号频繁编译选项关联2个灰色背景指示的结点。左边结点的条件前缀路径是cndPath1=<(6,2,41%),(3,2,30%),(1,2,30%),(13,2,20%)>,而右边结点的条件前缀路径cndPath2=<(3,1,10%),(2,1,10%)>。因而,图4中16号频繁编译选项的条件前缀路径集为:
cndPaths|16={<(6,2,41%),(3,2,30%),(1,2,30%),(13,2,20%)>,<(3,1,10%),(2,1,10%)>}
定义15(频繁编译选项的条件事务表)若i号频繁编译选项的条件前缀路径集为cndPaths|i,则以c中每条路径为一条事务,将构成一个以i为后缀的频繁编译选项事务表TTFE|i。并称其为频繁编译选项i的条件事务表。
例如,图4中16号频繁编译选项的条件前缀路径集是cndPaths|16,则以16为后缀的频繁编译选项事务表TTFE|16如表5所示。
表5例子中16号频繁编译选项所对应的条件事务表
定义16(条件FPE树)若TTFE|i是频繁编译选项i的条件事务表,则以TTFE|i为输入所构建的FPE树定义为频繁编译选项i的条件FPE树,并简记为FPE|i。
例如:表5是16号频繁编译选项的条件事务表,在最小支持计数Cmin=3下运用FPE-Create算法和Insert_tree算法可构建条件FPE树,如图8所示。
定义17(带能耗改进标注的频繁编译选项模式)设fpcmpOpt是带能耗改进标注的编译选项集合{cmpOptInfo|cmpOptInfo=(cmpOptNm,engAno)}。其中,cmpOptNm和engAno分别表示编译选项编号和能耗改进标注。若投影fpcmpOpt中每个元素的cmpOptNm而获得的编译选项集是满足定义10的频繁编译选项模式,则称fpcmpOpt是一个带能耗改进标注的频繁编译选项模式。当|fpcmpOpt|=k称fpcmpOpt为带能耗标注的k频繁编译选项模式,并简记为
(2)算法流程
表6给出了带能耗改进标注的频繁编译选项模式的挖掘算法FPE-growth描述。当以FPE-Create算法构造的FPE树和空null作为参数调用FPE-growth,可输出频繁编译选项模式集表。其包含了所有的k频繁编译选项模式集。对图4的FPE树运用FPE-growth算法可输出表7所示的频繁编译选项模式集表。
表6 FPE-growth算法
7例子的带能耗改进标注的频繁编译选项模式集表
挖掘获得频繁编译选项模式集后,基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t),所述变异操作包括:增添或删减。具体如下:将临时种群Pm(t)置空,并对于Pc(t)中的每个个体X执行如下操作:4a:随机生成整数0或1;4b:若生成的整数为1转步骤4c,否则转步骤4d;4c:基于频繁编译选项模式集,对个体X进行增添操作生成新个体X',转4e;4d:基于频繁编译选项模式集,对个体X进行删减操作生成新个体X';4e:将新生成个体X’放入种群Pm(t)中。
其中,具体所述“基于频繁编译选项模式集,对个体X进行增添操作生成新个体X'”,还包括步骤:获取个体X中已选用的编译选项集和未选用的编译选项集;从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;结合所述频繁编译选项模式集与所述编译选项编号集合,并依据所述未选用的编译选项集计算得到待添加的编译选项及其被添加的概率;将所述待添加的编译选项依概率加入至所述已选用的编译选项集中,进而生成新个体X'。
具体所述“基于频繁编译选项模式集,对个体X进行删减操作生成新个体X'”,还包括步骤:获取个体X中已选用的编译选项集和未选用的编译选项集;从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;基于所述频繁编译选项模式集计算得到从所述编译选项编号集合中待移除的编译选项及被移除的概率;从所述已选用的编译选项集中依概率移除所述待移除的编译选项,进而生成新个体X'。
以上具体举例如下:首先介绍与变异操作相关的一些定义:
定义18(频繁编译选项模式的加1匹配)若SS(X)和SU(X)分别是个体X指示的已选用和未选用的编译选项编号集,并且从SS(X)中随机选取k个元素(1≤k≤|SS(X)|)构成编译选项编号集合为ScmpOptNm,则ScmpOptNm的频繁编译选项模式的加1匹配由式(13)定义。式(13)中,是挖掘出的所有k+1频繁编译选项模式构成的集合,而ΠcmpOptNm(fpcmpOpt)表示从频繁编译选项模式fpcmpOpt中投影出各编译选项编号所构成的集合。
例如:个体X={0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1},则SS(X)={3,5,9,10,11,13,14,16},SU(X)={1,2,4,6,7,8,12,15}。挖掘获得的带能耗改进标注的频繁编译选项模式集如表7所示。设从SS(X)中随机选取2个元素构成的编译选项编号集合为ScmpOptNm={3,13},从表7的频繁编译选项模式集中对应的4行可分别投影出4个编译选项编号集:{13,6,3}、{13,6,1}、{13,3,1}、{1,3,6}。仅第1和第3个集合包含ScmpOptNm={3,13},并且这两个集合与ScmpOptNm的差集都被SU(X)包含,故fpMatch+({3,13})={{(13,30%),(6,82%),(3,60%)},{(13,30%),(3,60%),(1,60%)}}。
定义19(频繁编译选项的加1匹配)若ScmpOptNm是从个体X的已选用编译选项编号集中随机抽取大小为k的子集,ScmpOptNm的频繁编译选项模式加1匹配为fpMatch+(ScmpOptNm),并且fpMatch+(ScmpOptNm)不空,则ScmpOptNm的频繁编译选项加1匹配fCOptMatch+(ScmpOptNm)由式(14)定义。式(14)中,fCOpt.cmpOptNm表示频繁编译选项fCOpt的编译选项编号。
fCOptMatch+(ScmpOptNm)={fCOpt|(fpcmpOpt∈fpMatch+(ScmpOptNm))^(fCOpt.cmpOptNm∈(∏cmpOptNm(fpcmpOpt)-ScmpOptNm))}
(14)
例如:在上例的fpMatch+({3,13})中,两个频繁编译选项模式可分别投影出2个编译选项编号集{13,6,3}、{13,3,1}。这两个集合与ScmpOptNm={3,13}的差集分别为:{6}、{1}。根据差集,可从fpMatch+({3,13})中获取fCOptMatch+({3,13})={(6,82%),(1,60%)}
定义20(频繁编译选项模式的减1匹配)若个体X的已选用和未选用的编译选项编号集分别为SS(X)和SU(X),并且从SS(X)中随机选取k个元素(1<k≤|SS(X)|)构成编译选项编号集为ScmpOptNm,则ScmpOptNm的频繁编译选项模式减1匹配fpMatch(ScmpOptNm)由式(15)定义。式(15)中,是挖掘出的所有k-1频繁编译选项模式构成的集合,而ΠcmpOptNm(fpcmpOpt)表示从频繁编译选项模式fpcmpOpt中投影出各编译选项编号所构成的集合。
例如:个体X={0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1},则SS(X)={3,5,9,10,11,13,14,16},SU(X)={1,2,4,6,7,8,12,15}。
挖掘获得的带能耗改进标注的频繁编译选项模式集如表7所示。设从SS(X)中随机选取2个元素构成的编译选项编号集合为ScmpOptNm={3,16},从表7的频繁编译选项模式集包含6个元素:{(16,30%)}、{(13,30%)}、{(2,31%)}、{(1,30%)}、{(3,40%)}和{(6,41%)}。仅第1和第5个元素的编译选项编号被包含于ScmpOptNm={3,16},故fpMatch-({3,16})={{(16,30%)},{(3,40%)}}。
其中表8给出了按增添操作的具体流程。当个体X没有选用任何编译选项,则采取随机单点变异方式将X的一位由0变1;否则实施启发式增添编译选项。下面沿用定义18和定义19中使用的例子解释增添操作过程中的启发式变异。
设个体X={0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1},则SS(X)={3,5,9,10,11,13,14,16},SU(X)={1,2,4,6,7,8,12,15}。挖掘获得的带能耗改进标注的频繁编译选项模式集如表7所示。假定表8第5步从SS(X)中随机选取k=2个元素组成待变异的编译选项编号集合为ScmpOptNm={3,13}。根据定义19可得fCOptMatch+({3,13})={(6,82%),(1,60%)},其过程分析见定义19的例子说明。故表9第6步得到频繁编译选项集SfCOpt={(6,82%),(1,60%)}。由表8第10步知因而,分别以0.58和0.42概率选择6号和1号编译选项。假设选中6号编译选项,则通过表9第13步将X下标为6的码值替换成1,得到了新个体:
X'={0,0,1,0,1,1,0,0,1,1,1,0,1,1,0,1}。
表8“增添”操作的流程
其中表9给出了按删减操作的具体过程。若个体X没有选用任何编译选项,则不做删减操作。当个体X仅选用1个编译选项,则删减这个编译选项。除此两种情况外,实施启发式删减编译选项。沿用定义20所举的例子说明删减操作过程的启发式变异。
假定个体X={0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1},则SS(X)={3,5,9,10,11,13,14,16},SU(X)={1,2,4,6,7,8,12,15}。挖掘获得的带能耗改进标注的频繁编译选项模式集如表7所示。设表9第6步从SS(X)中随机选取k=2个元素构成的编译选项编号集合为ScmpOptNm={3,16}。根据定义20可得fpMatch-({3,16})={{(16,30%)},{(3,40%)}},其过程分析见定义20下的例子说明。因而,表10第7步得到SfCOpt={{(16,30%)},{(3,40%)}}。由表9第11步知:故分别以0.57和0.43概率选择16号和3号编译选项。假设选中16号编译选项进行移除,而保留潜在能耗效果改进更好的3号编译选项。通过表9第15步将X下标为16的码值替换成0,得到了新个体X'={0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,0}。
表9“删减”操作的流程
Tree-EDA是目前以能耗为优化目标并可获取较优编译选项组合的一种算法,在本实施方式中,本发明技术方案的算法(简称为GA-FP算法)和Tree-EDA算法被分别独立运行20次,进行统计检验。其中为了公平起见,本发明的技术方案尽可能采用和Tree-EDA相同的参数设定,表10给出了参数设定,表10中的符号NA表示本发明GA-FP算法和Tree-EDA不包含对应的参数。
表10参数设定
表11给出了8个案例下-O0等级和-O3最优等级以及本发明GA-FP算法和Tree-EDA算法20次运行最优解对应的能耗情况。从表11可以看出:对于每个案例,本发明技术方案和Tree-EDA在平均情况和最好情况下都能获取较-O3等级更优的编译选项集;本发明GA-FP算法在最坏情况下对于全部案例也能得到优于-O3等级的编译选项集,而Tree-EDA在2D FIR和Float_Matrix两个案例却得到劣于-O3等级的结果。
表11 8个案例下-O0和-O3最优等级以及本发明技术方案和Tree-EDA算法20次运行最优解对应的能耗(单位:焦耳)
上述所提及的8个案例如下表12所示:
表12实验案例的应用领域和代码量
表13进一步给出了本发明GA-FP算法和Tree-EDA在8个案例下能耗改进百分比(IΔeng%)的秩和检验结果。表13中第2列p-value值均小于置信水平0.05。这表明在8个案例下本发明的技术方案的IΔeng%指标在统计意义上显著优于Tree-EDA。从表13中第3列的effect size值可以看出本发明GA-FP算法在Crc32、和Dijstra两个案例下以概率1优于Tree-EDA,在2D FIR、Blowfish、Cubic、FDCT、Float_Matrix和Int_Matrix六个案例下以较大概率在解质量上优于Tree-EDA。图9所给出的统计盒图也从直观上得到一致结论。从表14的统计量结果可知:8个案例下的IΔeng%指标平均值为2.5%,最大IΔeng%指标值可达21.1%。
表13 GA-FP较Tree-EDA在8个案例下能耗改进百分比(IΔeng%)的秩和检验结果
表14 GA-FP较Tree-EDA在8个案例下能耗改进百分比(IΔeng%)的统计量结果
表15给出了在8个案例下收敛速度指标IΔi%(GA-FP达到不劣于Tree-EDA最优解对应最小迭代次数的相对减少百分比)的秩和检验结果。表15中第2列p-value值均小于置信水平0.05,表明在8个案例下GA-FP的IΔi%指标在统计意义上显著优于Tree-EDA。表15中第3列的effect size值均大于等于0.8,说明GA-FP算法较Tree-EDA算法在大概率上具有更快的收敛速度。表16可看出:8个案例下的IΔi%指标平均值为34.5%,最大达到了83.3%。图10所给出的统计盒图也直观地得到一致结论。
表15在8个案例下收敛速度指标IΔi%(GA-FP达到不劣于Tree-EDA最优解对应最小迭代次数的相对减少百分比)的秩和检验结果
表16在8个案例下收敛速度指标IΔi%(GA-FP达到不劣于Tree-EDA最优解对应最小迭代次数的相对减少百分比)的统计量结果
通过在演化过程中构建并更新有能耗改进效果的事务表,进一步挖掘获取出现频度高且对能耗改进幅度大的编译选项模式集,并基于该编译选项模式集进行启发式增添或删减的变异操作,可充分考虑到不同的编译选项之间存在的相互影响,进而可以提高解质量和加快收敛速度。
请参阅图11,在本实施方式中,所述存储设备110用于执行上述所提到的任意步骤。
通过存储设备110上的存储指令执行以下步骤:通过在演化过程中构建并更新有能耗改进效果的事务表,进一步挖掘获取出现频度高且对能耗改进幅度大的编译选项模式集,并基于该编译选项模式集进行启发式增添或删减的变异操作,可充分考虑到不同的编译选项之间存在的相互影响,进而可以提高解质量和加快收敛速度。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

Claims (11)

1.一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,其特征在于,包括步骤:
S1:令迭代次数t=1,生成初始随机种群P(t);
S2:计算P(t)中每个个体的适应度值,所述个体适应度值为较GCC编译器-O0等级的能耗改进百分比;
S3:若t达到指定代数,输出P(t)中适应度值最大的个体并转S10,否则转S4;
S4:记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中;
S5:对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集;
S6:进行单点交叉操作,生成临时种群Pc(t);
S7:基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t),所述变异操作包括:增添或删减;
S8:基于轮盘赌策略在种群Pm(t)和种群P(t)中选择并生成下一代种群P(t+1);
S9:令t=t+1,并转S2;
S10:结束。
2.根据权利要求1所述的一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,其特征在于,
所述预先设计好的事务表的每一行是三元组的有序列表,所述三元组的第一个数、第二个数和第三个数分别为:编译选项的编号、编译选项出现的次数和编译选项对应的能耗改进标注值。
3.根据权利要求1所述的一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,其特征在于,
所述“对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集”,还包括步骤:
构造初始的带能耗改进标注的频繁模式树;
去除所述事务表各行中出现次数小于设定的最小支持计数的编译选项,并按出现次数对事务表各行中的编译选项进行降序排序,生成排序后的频繁编译选项事务表;
将所述排序后的频繁编译选项事务表各行中的频繁编译选项依次插入至所述带能耗改进标注的频繁模式树中;
在插入过程中,对频繁编译选项出现次数进行加1的同时,还对能耗改进百分比做累加处理;
对所述带能耗改进标注的频繁模式树进行挖掘,得到频繁编译选项模式集,其中每个频繁编译选项均带有能耗改进标注。
4.根据权利要求1所述的一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,其特征在于,
所述“基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t)”,还包括步骤:
将临时种群Pm(t)置空,并对于Pc(t)中的每个个体X执行如下操作:
4a:随机生成整数0或1;
4b:若生成的整数为1转步骤4c,否则转步骤4d;
4c:基于频繁编译选项模式集,对个体X进行增添操作生成新个体X',转4e;
4d:基于频繁编译选项模式集,对个体X进行删减操作生成新个体X';
4e:将新生成个体X'放入种群Pm(t)中。
5.根据权利要求4所述的一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,其特征在于,
所述“基于频繁编译选项模式集,对个体X进行增添操作生成新个体X'”,还包括步骤:
获取个体X中已选用的编译选项集和未选用的编译选项集;
从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;
结合所述频繁编译选项模式集与所述编译选项编号集合,并依据所述未选用的编译选项集计算得到待添加的编译选项及其被添加的概率;
将所述待添加的编译选项依概率加入至所述已选用的编译选项集中,进而生成新个体X'。
6.根据权利要求4所述的一种基于频繁模式挖掘的GCC编译时能耗演化优化方法,其特征在于,
所述“基于频繁编译选项模式集,对个体X进行删减操作生成新个体X'”,还包括步骤:
获取个体X中已选用的编译选项集和未选用的编译选项集;
从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;
基于所述频繁编译选项模式集计算得到从所述编译选项编号集合中待移除的编译选项及被移除的概率;
从所述已选用的编译选项集中依概率移除所述待移除的编译选项,进而生成新个体X'。
7.一种存储设备,其中存储有指令集,其特征在于,所述指令集用于执行:
S1:令迭代次数t=1,生成初始随机种群P(t);
S2:计算P(t)中每个个体的适应度值,所述个体适应度值为较GCC编译器-O0等级的能耗改进百分比;
S3:若t达到指定代数,输出P(t)中适应度值最大的个体并转S10,否则转S4;
S4:记录P(t)中有能耗改进效果的个体的信息,并将其作为一条事务存放至预先设计好的事务表中;
S5:对所述事务表进行频繁模式挖掘,获得频繁编译选项模式集;
S6:进行单点交叉操作,生成临时种群Pc(t);
S7:基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t),所述变异操作包括:增添或删减;
S8:基于轮盘赌策略在种群Pm(t)和种群P(t)中选择并生成下一代种群P(t+1);
S9:令t=t+1,并转S2;
S10:结束。
8.根据权利要求7所述的一种存储设备,其特征在于,
所述预先设计好的事务表的每一行是三元组的有序列表,所述三元组的第一个数、第二个数和第三个数分别为:编译选项的编号、编译选项出现的次数和编译选项对应的能耗改进标注值。
9.根据权利要求7所述的一种存储设备,其特征在于,所述指令集还用于执行:
所述“基于所述频繁编译选项模式集对Pc(t)进行变异操作,生成临时种群Pm(t)”,还包括步骤:
将临时种群Pm(t)置空,并对于Pc(t)中的每个个体X执行如下操作:
4a:随机生成整数0或1;
4b:若生成的整数为1转步骤4c,否则转步骤4d;
4c:基于频繁编译选项模式集,对个体X进行增添操作生成新个体X',转4e;
4d:基于频繁编译选项模式集,对个体X进行删减操作生成新个体X';
4e:将新生成个体X'放入种群Pm(t)中。
10.根据权利要求9所述的一种存储设备,其特征在于,
所述“基于频繁编译选项模式集,对个体X进行增添操作生成新个体X'”,还包括步骤:
获取个体X中已选用的编译选项集和未选用的编译选项集;
从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;
结合所述频繁编译选项模式集与所述编译选项编号集合,并依据所述未选用的编译选项集计算得到待添加的编译选项及其被添加的概率;
将所述待添加的编译选项依概率加入至所述已选用的编译选项集中,进而生成新个体X'。
11.根据权利要求9所述的一种存储设备,其特征在于,所述指令集还用于执行:
所述“基于频繁编译选项模式集,对个体X进行删减操作生成新个体X'”,还包括步骤:
获取个体X中已选用的编译选项集和未选用的编译选项集;
从所述已选用的编译选项集中随机选取随机个元素构成编译选项编号集合;
基于所述频繁编译选项模式集计算得到从所述编译选项编号集合中待移除的编译选项及被移除的概率;
从所述已选用的编译选项集中依概率移除所述待移除的编译选项,进而生成新个体X'。
CN201811329077.8A 2018-11-09 2018-11-09 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备 Pending CN109669698A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811329077.8A CN109669698A (zh) 2018-11-09 2018-11-09 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811329077.8A CN109669698A (zh) 2018-11-09 2018-11-09 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备

Publications (1)

Publication Number Publication Date
CN109669698A true CN109669698A (zh) 2019-04-23

Family

ID=66142061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811329077.8A Pending CN109669698A (zh) 2018-11-09 2018-11-09 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备

Country Status (1)

Country Link
CN (1) CN109669698A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704067A (zh) * 2019-10-16 2020-01-17 福建师范大学 一种嵌入式软件编译时能耗演化优化方法
CN110928550A (zh) * 2019-11-19 2020-03-27 上海工程技术大学 基于关键词Trie树消除GCC抽象语法树冗余的方法
CN113900662A (zh) * 2021-11-19 2022-01-07 福建师范大学 一种llvm编译选项选择方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103648116A (zh) * 2013-11-13 2014-03-19 上海交通大学 基于程序分析的低功耗无线传感器网络优化方法
CN104268278A (zh) * 2014-10-16 2015-01-07 福建师范大学 一种基于规则的软件体系结构层性能演化优化方法
US20170131986A1 (en) * 2003-10-29 2017-05-11 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
CN107003837A (zh) * 2014-12-17 2017-08-01 英特尔公司 用于推测性编译器优化的轻量级受限事务存储器
CN107885503A (zh) * 2017-11-11 2018-04-06 湖南大学 一种基于程序特征分析的迭代编译优化方法
US20180189086A1 (en) * 2015-06-29 2018-07-05 Commissariat A L'energie Atomique Et Aux Energies Al Ternatives Method for executing a computer program with a parameterised function

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170131986A1 (en) * 2003-10-29 2017-05-11 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
CN103648116A (zh) * 2013-11-13 2014-03-19 上海交通大学 基于程序分析的低功耗无线传感器网络优化方法
CN104268278A (zh) * 2014-10-16 2015-01-07 福建师范大学 一种基于规则的软件体系结构层性能演化优化方法
CN107003837A (zh) * 2014-12-17 2017-08-01 英特尔公司 用于推测性编译器优化的轻量级受限事务存储器
US20180189086A1 (en) * 2015-06-29 2018-07-05 Commissariat A L'energie Atomique Et Aux Energies Al Ternatives Method for executing a computer program with a parameterised function
CN107885503A (zh) * 2017-11-11 2018-04-06 湖南大学 一种基于程序特征分析的迭代编译优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姜虎 等: "基于ARM平台的wMA软件解码器能耗优化", 《计算机工程与设计》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704067A (zh) * 2019-10-16 2020-01-17 福建师范大学 一种嵌入式软件编译时能耗演化优化方法
CN110704067B (zh) * 2019-10-16 2022-09-20 福建师范大学 一种嵌入式软件编译时能耗演化优化方法
CN110928550A (zh) * 2019-11-19 2020-03-27 上海工程技术大学 基于关键词Trie树消除GCC抽象语法树冗余的方法
CN110928550B (zh) * 2019-11-19 2023-11-24 上海工程技术大学 基于关键词Trie树消除GCC抽象语法树冗余的方法
CN113900662A (zh) * 2021-11-19 2022-01-07 福建师范大学 一种llvm编译选项选择方法
CN113900662B (zh) * 2021-11-19 2024-07-09 福建师范大学 一种llvm编译选项选择方法

Similar Documents

Publication Publication Date Title
Huddleston et al. A new data structure for representing sorted lists
CN109669698A (zh) 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备
CN103810224B (zh) 信息持久化和查询方法及装置
CN104662513A (zh) 自动改进程序编译中的并行处理的方法及其系统
CN107247588B (zh) 一种基于约束频度的规则引擎优化方法
CN101203859A (zh) 程序难破解化装置和难破解化方法
Thorhauer et al. On the locality of standard search operators in grammatical evolution
CN103092992B (zh) 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法
Bhuvanesh et al. Application of optimization algorithms to generation expansion planning problem
Guerine et al. A hybrid data mining heuristic to solve the point‐feature cartographic label placement problem
KR101443285B1 (ko) 유용성 높은 패턴의 마이닝 방법
Sun et al. Reinforcement learning based tabu search for the minimum load coloring problem
Chen et al. Improved local search for the minimum weight dominating set problem in massive graphs by using a deep optimization mechanism
Moraglio et al. Evolving recursive programs using non-recursive scaffolding
CN110704067B (zh) 一种嵌入式软件编译时能耗演化优化方法
Oguz et al. Incremental itemset mining based on matrix apriori algorithm
Correia et al. Compressed data structures for bi-objective {0, 1}-knapsack problems
CN110222055A (zh) 一种动态图下多边更新的单轮核值维护方法
Huang Pruning game tree by rollouts
CN110083603B (zh) 一种基于邻接表实现节点路径的查询方法及系统
Charles et al. Mixed oxide LWR assembly design optimization using differential evolution algorithms
CN106383863A (zh) 一种同构子图查询优化方法
Niehaus et al. Reducing the number of fitness evaluations in graph genetic programming using a canonical graph indexed database
Kutzelnigg A further analysis of cuckoo hashing with a stash and random graphs of excess r
Djordjevic et al. Performance analysis of the partial use of a local optimization operator on the genetic algorithm for the Travelling Salesman Problem

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190423

WD01 Invention patent application deemed withdrawn after publication