CN107885503B - 一种基于程序特征分析的迭代编译优化方法 - Google Patents

一种基于程序特征分析的迭代编译优化方法 Download PDF

Info

Publication number
CN107885503B
CN107885503B CN201711113109.6A CN201711113109A CN107885503B CN 107885503 B CN107885503 B CN 107885503B CN 201711113109 A CN201711113109 A CN 201711113109A CN 107885503 B CN107885503 B CN 107885503B
Authority
CN
China
Prior art keywords
compilation
option
options
compiling
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711113109.6A
Other languages
English (en)
Other versions
CN107885503A (zh
Inventor
全哲
乐雨泉
林轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University
Original Assignee
Hunan 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 Hunan University filed Critical Hunan University
Priority to CN201711113109.6A priority Critical patent/CN107885503B/zh
Publication of CN107885503A publication Critical patent/CN107885503A/zh
Application granted granted Critical
Publication of CN107885503B publication Critical patent/CN107885503B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

本发明公开一种基于程序特征分析的迭代编译优化方法,包括如下步骤:步骤一、对编译器中的编译选项按作用进行分类;步骤二、构建关系树形图;步骤三、对目标程序进行数据集测试,收集整理测试结果;步骤四、对测试结果进行分析,提取出目标程序的程序特征和调用关系;步骤五、根据目标程序的程序特征找出对应的编译选项类,组成一个迭代搜索空间;步骤六、在此迭代搜索空间中以类为基础进行局部最优搜索得到全局最优解;步骤七、保存,结束。本发明的方法结合了程序特征分析和局部搜索算法,大大减小了搜索空间的同时也充分考虑了各编译选项之间的影响,对比现有的方法,我们的方法能够在较短时间内找到一个适合目标程序的最优编译选项序列。

Description

一种基于程序特征分析的迭代编译优化方法
技术领域
本专利属于信息技术及计算机领域,尤其涉及一种基于程序特征分析的迭代编译优化方法。
背景技术
迭代编译是一种针对高性能体系结构程序性能优化方法。它通过对编译器各种优化选项序列的变换,生成不同版本的程序,并通过在同一平台上执行不同版本程序,从而选择具有最优性能的程序版本。由于编译器中数量众多的编译选项,各编译选项自身的参数的选取以及编译遍的实施顺序和实施次数等,产生了一个巨大的迭代空间;而这个迭代空间中各种优化组合所形成的不同程序版本将带来巨大的执行开销。为了减少迭代过程中的开销,目前通常的做法主要分为以下几种:
1.通过对迭代空间的修剪来减小迭代空间的大小。Knijnengburg提出了一种结合静态模型来降低迭代编译开销的方法;Epshteyn使用已知的定性分析模型来选择搜索结点;Franke对目标程序进行程序特征匹配来减小搜索空间。这些做法的前期数据收集时间较多,训练开销较大;且模型的精确度会直接影响搜索结果。
2.通过对搜索算法的优化来减少迭代空间的大小。Eigenmann提出了一种组合排除算法来加速对迭代空间的搜索;Copper将遗传算法引入到迭代空间的搜索;Kulkarni则发现简单的局部搜索技术在多次迭代运行后能找到优于其他算法的组合,同时还能大大降低搜索时间;Qasem提出的直接搜索算法对于迭代编译是一种有效的搜索算法。但是这些典型的优化搜索算法没有考虑各种变换之间的关系,很多时候是盲目的组合各种编译选项,并不一定能得到最优结果。
3.程序变换表示。这种方法主要包括非参数优化变换和参数优化变换;非参数优化变换的工作主要针对一些变换的实施顺序,这些变换互相影响制约,从而导致了它们不能被参数化。而有些变化如循环展开,分块等能够参数化,所以它们的搜索空间能被相对简单的描述出来;这里多面体方法是较常用的一种方法。但是这两种方法都无法包含到对方,所以只能给出对应搜索空间的搜索结果,而无法考虑到所有的优化选项。
综上所述,迭代编译的各种优化方法都会受限于自身的特点,机器学习类方法对于样本采集分类、训练需要耗费大量的时间,同时数据库的建立也会耗费大量的空间;而算法设计类方法对于编译选项的敏感度较低,对于选项之间的相互影响考虑较少,搜索空间的选取成为了很大的瓶颈。
发明内容
为解决上述问题,本发明公开了一种基于程序特征分析的迭代编译优化方法。本发明的方法结合了程序特征分析和局部搜索算法,大大减小了搜索空间的同时也充分考虑了各编译选项之间的影响,对比现有的方法,我们的方法能够在较短时间内找到一个适合目标程序的最优编译选项序列。
为实现上述目的,本发明的技术方案为:
一种基于程序特征分析的迭代编译优化方法,包括如下步骤:
步骤一、对编译器中的编译选项按作用进行分类;
步骤二、对每一个编译选项依据规定关系构建关系树形图;
步骤三、建立测试数据集对目标程序进行数据集测试,收集整理测试结果;
步骤四、对数据集测试的测试结果进行分析,提取出目标程序的程序特征和调用关系;
步骤五、根据目标程序的程序特征找出对应的编译选项类,并对编译选项类进行整理,组成一个迭代搜索空间;
步骤六、在此迭代搜索空间中以类为基础进行局部最优搜索,再对得到的局部最优解进行组合优化,从而得到全局最优解,即最优结果;
步骤七、将最优结果和对应的编译选项序列保存,结束。
进一步的改进,所述步骤一中,对编译器中的编译选项按作用进行分类步骤为:构建编译器编译选项的分类图,针对各个编译选项的优化目的和功能,把所有的编译选项分为q个类别c1,c2,...,cq,每一类中的编译选项都进行相同的优化,q表示所分类别的个数。
进一步的改进,所述步骤二中,规定关系包括以下情况:
a.如果任意两个编译选项A、B互不影响,我们称之为AB无关,记做:
Figure GDA0002718979820000041
b.如果任意两个编译选项A、B不能同时存在,我们称之为AB互斥,记做:
Figure GDA0002718979820000042
c.如果任意两个编译选项A、B之间存在依赖关系,如果B选项依赖A而存在,我们称之为依赖,记做:A→B;
d.如果任意两个编译选择A、B之间存在影响,如A会使得B的效果增强或是减弱,我们称之为影响,记做:
Figure GDA0002718979820000043
对于每一个编译选项,以上述四种关系为基础,建立一个关系树形图Gi
进一步的改进,所述步骤三包括如下步骤:
3.1)建立测试数据集,测试目标程序是否对测试数据集大小敏感,如果敏感,跳至3.2);如果不敏感,跳至3.3);
3.2)用标准数据集加上基本编译选项进行测试,至3.4);
3.3)用小于标准数据集的小数据集加上基本编译选项进行测试,至3.4);
3.4)收集整理数据。
进一步的改进,所述步骤四包括如下步骤:
对于数据集测试的测试结果进行分析,找到影响程序性能的主要程序片段及其特征;根据目标程序特征,找出相对应的编译选项类别;具体过程如下:
4.1)根据数据集测试的测试结果,提取热点函数;
4.2)提取热点函数程序结构,程序特征,以及程序中其他函数对热点函数的调用图;
4.3)针对热点函数的程序特征和被调用关系,找到对应的编译选项类c1,c2,...,ci,其中i表示对应的编译选项类的个数;
4.4)将上述所有编译选项类组成一个迭代搜索空间C={c1,c2,...,ci}。
进一步的改进,所述步骤五包括如下步骤:对步骤二中建立的编译选项关系图进行剪枝,形成一个目标程序的迭代搜索空间。具体过程如下:
5.1)对于已找出分类中C={c1,c2,...,ci}的每个编译选项
Figure GDA0002718979820000051
其中,
Figure GDA0002718979820000052
表示c1类中找出对应的编译选项的最后一个c1;m表示c1类中找出的对应编译选项个数,
Figure GDA0002718979820000053
表示ci类中找出对应的编译选项的最后一个;n表示ci类找出对应的编译选项个数:
Figure GDA0002718979820000054
其中
Figure GDA0002718979820000055
表示
Figure GDA0002718979820000056
编译选项的关系树形图),
Figure GDA0002718979820000057
表示
Figure GDA0002718979820000058
编译选项的关系树形图;
5.2)对于每个关系树形图中的树节点:
Figure GDA0002718979820000059
如果
Figure GDA00027189798200000510
则把Nk′从此关系树形图中移除,其中Nk′表示关系树形型图中的第k’个节),N表示编译选项,k’表示第k’个节点;
5.3)更新完成,得到新的关系树形图:
Figure GDA00027189798200000511
进一步的改进,所述步骤六中使用搜索算法对迭代搜索空间以类为基础进行局部最优搜索,再对得到的局部最优解进行组合优化,从而得到全局最优解,具体包括如下步骤:
6.1)对于迭代搜索空间C中的每一个小分类c1,c2,...,ci进行局部最优搜索;
6.2)初始化编译选项序列S←0;箭头←为赋值的意思;
6.3)初始化编译时间T←∞;
6.4)对于每一个小分类ci初始化结果存储空间Ri←0,用于保存指定个数编译选项序列;
6.5)对于每一个小分类ci中的编译选项{O1,O2,...,Om}进行组合,得到p个不同组合:{Com1,Com2,...,Comp},Com表示编译选项组合;
6.6)对于每一种组合Comj'∈{Com1,Com2,...,Comp},由k个编译选项组成Comj'={O1,O2,...,Ok},这里1≤k≤m,j表示组合中任意一个元素;
6.7)对于每个组合中的每一个编译选项Ok∈Comj'
6.7.1)将Ok的关系树形图中的节点对应的编译选项放入编译选项序列:
Figure GDA0002718979820000061
6.7.2)如果关系树形图中的节点关系为互斥
Figure GDA0002718979820000062
且如果
Figure GDA0002718979820000063
则将Ok从S中删除;
6.7.3)如果关系树形图中的节点关系为依赖
Figure GDA0002718979820000064
(,则继续调用
Figure GDA0002718979820000065
的关系树形图,找到所有依赖编译选项,并将Ok放入编译选项序列;同时找到所有互斥关系的编译选项,将其从编译选项序列中删除;
6.7.4)如果关系树形图中的关系为被依赖
Figure GDA0002718979820000071
或影响
Figure GDA0002718979820000072
则停止调用关系树形图;
6.7.5)当所有关系树形图都处理完后,得到一个编译选项序列Snew
6.8)使用生成的编译选项序列Snew进行测试:
6.8.1)对于编译选项序列Snew中的编译选项,如果参数可调,调整不同参数进行测试;
6.8.2)如果测试结果t<T,则将编译选项序列Snew及其对应参数存入结果存储空间:Ri←Snew,T←t;其中,T表示编译时间;
6.9)对于每一编译选项分类,找到指定个数优化序列结果;
6.10)对于每一类中的优化序列进行组合搜索:
6.10.1)
Figure GDA0002718979820000073
其中R表示编译选项序列存储空间;
6.10.2)每类中提取一个序列组合成新的序列
Figure GDA0002718979820000074
l表示从第l类中提取序列Sf l,f表示序列包含f个编译选项;g表示从第g类中提取序列Sb g,b表示序列包含b个编译选项;h表示从第h类提取序列Sr h,r表示序列包含r个编译选项;
6.10.3)在新的序列Snew中,对互斥、依赖关系编译选项进行删除处理;
6.10.4)形成新的编译选项序列;
6.10.5)对编译顺序进行调整;
6.10.6)对Snew进行数据集测试,如果t<T,则R←Snew,T←t;
6.10.7)得到最优结果Topt和最优编译选项序列Sopt
步骤七、将最优结果Topt和最优编译选项序列Sopt保存,结束。
附图说明
图1为本发明的总流程图。
实施例
实施例1
如图1所示的一种基于程序特征分析的迭代编译优化方法,图1是本发明的总流程图。
步骤1)、对编译器中的编译选项按作用进行分类;
步骤2)、对每一个编译选项依据规定的四条关系构建关系树形图;
步骤3)、对目标程序进行数据集测试,收集整理测试结果;
步骤4)、对测试结果进行分析,提取出目标程序的程序特征和调用关系;
步骤5)、根据目标程序的特征找出对应的编译选项类,并对编译选项类进行整理,组成一个迭代搜索空间;
步骤6)、在此迭代搜索空间中以类为基础进行局部最优搜索,再对得到的局部最优解进行组合优化,从而得到全局最优解;
步骤7)、将全局最优解和对应的编译选项序列保存,结束。
具体步骤如下:
第一步、构建编译器编译选项的分类图。针对各个编译选项的优化目的和功能,我们把所有的编译选项分为q个类别c1,c2,...,cq,每一类中的编译选项都针对相同的优化。
第二步、构建编译器中编译选项的关系图。这里,我们把编译选项之间的关系分为四类:
1.如果任意两个编译选项A、B互不影响,我们称之为AB无关,记做:
Figure GDA0002718979820000091
2.如果任意两个编译选项A、B不能同时存在,我们称之为AB互斥,记做:
Figure GDA0002718979820000092
3.如果任意两个编译选项A、B之间存在依赖关系,如果B选项依赖A而存在,我们称之为依赖,记做:A→B;
4.如果任意两个编译选项A、B之间存在依赖关系,如果A选项依赖B而存在,我们称之为被依赖,记做:A←B;
5.如果任意两个编译选择A、B之间存在影响,如A会使得B的效果增强或是减弱,我们称之为影响,记做:
Figure GDA0002718979820000093
对于每一个编译选项,以上述四种关系为基础,建立一个关系树形图Gi
第三步、程序特征提取:
3.1测试目标程序是否对测试数据集大小敏感,如果敏感,跳至3.2;如果不敏感,跳至3.3;
3.2用标准数据集加上基本编译选项进行测试,至3.4;
3.3用小数据集加上基本编译选项进行测试,至3.4;
3.4收集整理数据;
第四步、程序特征分析和编译选项类别的选取。对于程序特征测试结果进行分析,找到影响程序性能的主要程序片段及其特征;根据目标程序特征,找出相对应的编译选项类别。具体过程如下:
4.1根据数据集测试结果,提取热点函数;
4.2提取热点函数程序结构,程序特征,以及其他函数对热点函数的调用图;
4.3针对热点函数的程序特征和被调用关系,找到对应的编译选项类c1,c2,...,ci
4.4将上述所有分类组成一个迭代搜索空间C={c1,c2,...,ci}。
第五步、迭代搜索空间的建立。对找出的编译选项类别中的所有编译选项,对第二步中建立起来的编译选项关系图进行剪枝,形成一个目标程序的迭代搜索空间。具体过程如下:
5.1对于已找出分类中C={c1,c2,...,ci}的每个编译选项
Figure GDA0002718979820000101
有已知对应的关系树形图:
Figure GDA0002718979820000102
5.2)对于每个关系树形图中的树节点:
Figure GDA0002718979820000103
如果
Figure GDA0002718979820000104
则把Nk′从此关系树形图中移除,其中Nk表示关系树形型图中的第k’个节),N表示编译选项,k’表示第k’个节点;
5.3更新完成,得到新的关系树形图:
Figure GDA0002718979820000111
第六步、使用搜索算法进行迭代空间搜索:
6.1)对于迭代搜索空间C中的每一个小分类c1,c2,...,ci进行局部最优搜索;
6.2)初始化编译选项序列S←0;箭头←为赋值的意思;
6.3)初始化编译时间T←∞;
6.4)对于每一个小分类ci初始化结果存储空间Ri←0,用于保存指定个数编译选项序列;
6.5)对于每一个小分类ci中的编译选项{O1,O2,...,Om}进行组合,得到p个不同组合:{Com1,Com2,...,Comp},Com表示编译选项组合;
6.6)对于每一种组合Comj'∈{Com1,Com2,...,Comp},由k个编译选项组成Comj'={O1,O2,...,Ok},这里1≤k≤m,j表示组合中任意一个元素;
6.7)对于每个组合中的每一个编译选项Ok∈Comj'
6.7.1)将Ok的关系树形图中的节点对应的编译选项放入编译选项序列:
Figure GDA0002718979820000112
6.7.2)如果关系树形图中的节点关系为互斥
Figure GDA0002718979820000113
且如果
Figure GDA0002718979820000114
则将Ok从S中删除;
6.7.3)如果关系树形图中的节点关系为依赖
Figure GDA0002718979820000115
则继续调用
Figure GDA0002718979820000116
的关系树形图,找到所有依赖编译选项,并将Ok放入编译选项序列;同时找到所有互斥关系的编译选项,将其从编译选项序列中删除;
6.7.4)如果关系树形图中的关系为被依赖
Figure GDA0002718979820000121
或影响
Figure GDA0002718979820000122
则停止调用关系树形图;
6.7.5)当所有关系树形图都处理完后,得到一个编译选项序列Snew
6.8)使用生成的编译选项序列Snew进行测试:
6.8.1)对于编译选项序列Snew中的编译选项,如果参数可调,调整不同参数进行测试;
6.8.2)如果测试结果t<T,则将编译选项序列Snew及其对应参数存入结果存储空间:Ri←Snew,T←t;其中,T表示编译时间;
6.9)对于每一编译选项分类,找到指定个数优化序列结果;
6.10)对于每一类中的优化序列进行组合搜索:
6.10.1)
Figure GDA0002718979820000123
其中R表示编译选项序列存储空间;
6.10.2)每类中提取一个序列组合成新的序列
Figure GDA0002718979820000124
l表示从第l类中提取序列Sf l,f表示序列包含f个编译选项;g表示从第g类中提取序列Sb g,b表示序列包含b个编译选项;h表示从第h类提取序列Sr h,r表示序列包含r个编译选项;
6.10.3)在新的序列Snew中,对互斥、依赖关系编译选项进行删除处理;
6.10.4)形成新的编译选项序列;
6.10.5对编译顺序进行调整;
6.10.6对Snew进行数据集测试,如果t<T,则R←Snew,T←t;
6.10.7得到最优结果Topt和最优编译选项序列Sopt
将最优结果Topt和最优编译选项序列Sopt保存;
第七步、完成。
本发明对编译器编译选项做了详细的分析,对各选项之间的关系进行了一个系统的划分和归类,建立起一个编译选项关系图;并对目标程序进行动态分析,找出目标程序的程序特征,针对程序特征找到对应编译优化选项的集合;对于所有集合中的各编译选项,利用之前建立起来的编译选项关系图,找出对应的所有选项共同组成一个搜索空间。在此空间中利用搜索算法找到一个最优组合。与现有技术相比,采用本发明可达到以下技术效果:
1.第一步和第二步对编译器的所有编译选项做了一个较清晰的分类,同时为每一个编译选项构建了一个关系树形图,这些工作只需做一次;对于以后新增加的或被删减的编译选项,只需在此基础上做出修改。
2.第三步和第四步对目标程序进行了程序特征分析,这些特征信息是整个算法的基础,它能够决定整个迭代编译的空间大小。
3.第五步到第七步实现了整个搜索算法,它进行了一个局部最优搜索,得到每个子空间的最优解后,再组合成一个完整的空间进行搜索,从而得到一个最优解。
4.本发明的方法结合了程序特征分析和局部搜索算法,大大减小了搜索空间的同时也充分考虑了各编译选项之间的影响,能够在较短时间内找到一个适合目标程序的最优编译选项序列。
尽管本发明的实施方案已公开如上,但并不仅仅限于说明书和实施方案中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里所示出与描述的图例。

Claims (7)

1.一种基于程序特征分析的迭代编译优化方法,其特征在于,包括如下步骤:
步骤一、对编译器中的编译选项按作用进行分类;
步骤二、对每一个编译选项依据规定关系构建关系树形图;
步骤三、建立测试数据集对目标程序进行数据集测试,收集整理测试结果;
步骤四、对于数据集测试的测试结果进行分析,找到影响程序性能的主要程序片段及其特征;根据目标程序特征,找出相对应的编译选项类别,将所有编译选项类组成一个迭代搜索空间;
步骤五、在此迭代搜索空间中以类为基础进行局部最优搜索,再对得到的局部最优解进行组合优化,从而得到全局最优解,即最优结果;
步骤六、将最优结果和对应的编译选项序列保存,结束。
2.如权利要求1所述的基于程序特征分析的迭代编译优化方法,其特征在于,所述步骤一中,对编译器中的编译选项按作用进行分类步骤为:构建编译器编译选项的分类图,针对各个编译选项的优化目的和功能,把所有的编译选项分为q个类别c1,c2,...,cq,每一类中的编译选项都进行相同的优化,q表示所分类别的个数。
3.如权利要求1所述的基于程序特征分析的迭代编译优化方法,其特征在于,所述步骤二中,规定关系包括以下情况:
a.如果任意两个编译选项A、B互不影响,我们称之为AB无关,记做:
Figure FDA0002781738430000011
b.如果任意两个编译选项A、B不能同时存在,我们称之为AB互斥,记做:
Figure FDA0002781738430000022
c.如果任意两个编译选项A、B之间存在依赖关系,如果B选项依赖A而存在,我们称之为依赖,记做:A→B;
d.如果任意两个编译选择A、B之间存在影响,如A会使得B的效果增强或是减弱,我们称之为影响,记做:
Figure FDA0002781738430000021
对于每一个编译选项,以上述四种关系为基础,建立一个关系树形图Gi
4.如权利要求1所述的基于程序特征分析的迭代编译优化方法,其特征在于,所述步骤三包括如下步骤:
3.1)建立测试数据集,测试目标程序是否对测试数据集大小敏感,如果敏感,跳至3.2);如果不敏感,跳至3.3);
3.2)用标准数据集加上基本编译选项进行测试,至3.4);
3.3)用小于标准数据集的小数据集加上基本编译选项进行测试,至3.4);
3.4)收集整理数据。
5.如权利要求1所述的基于程序特征分析的迭代编译优化方法,其特征在于,所述步骤四包括如下步骤:
4.1)根据数据集测试的测试结果,提取热点函数;
4.2)提取热点函数程序结构,程序特征,以及程序中其他函数对热点函数的调用图;
4.3)针对热点函数的程序特征和被调用关系,找到对应的编译选项类c1,c2,...,ci,其中i表示对应的编译选项类的个数;
4.4)将上述所有编译选项类组成一个迭代搜索空间C={c1,c2,...,ci}。
6.如权利要求5所述的基于程序特征分析的迭代编译优化方法,其特征在于,所述步骤五包括如下步骤:对步骤二中建立的编译选项关系图进行剪枝,形成一个目标程序的迭代搜索空间;具体过程如下:
5.1)对于已找出分类中C={c1,c2,...,ci}的每个编译选项
Figure FDA0002781738430000031
其中,
Figure FDA0002781738430000032
表示c1类中找出对应的编译选项的最后一个c1;m表示c1类中找出的对应编译选项个数,
Figure FDA0002781738430000033
表示ci类中找出对应的编译选项的最后一个;n表示ci类找出对应的编译选项个数:
Figure FDA0002781738430000034
其中
Figure FDA0002781738430000035
表示
Figure FDA0002781738430000036
编译选项的关系树形图,
Figure FDA0002781738430000037
表示
Figure FDA0002781738430000038
编译选项的关系树形图;
5.2)对于每个关系树形图中的树节点:
Figure FDA0002781738430000039
如果
Figure FDA00027817384300000310
则把Nk’从此关系树形图中移除,其中Nk’表示关系树形型图中的第k’个节),N表示编译选项,k’表示第k’个节点;
5.3)更新完成,得到新的关系树形图:
Figure FDA00027817384300000311
7.如权利要求6所述的基于程序特征分析的迭代编译优化方法,其特征在于,所述步骤五中使用搜索算法对迭代搜索空间以类为基础进行局部最优搜索,再对得到的局部最优解进行组合优化,
从而得到全局最优解,具体包括如下步骤:
6.1)对于迭代搜索空间C中的每一个小分类c1,c2,...,ci进行局部最优搜索;
6.2)初始化编译选项序列S←0;
6.3)初始化编译时间T←∞;
6.4)对于每一个小分类ci初始化结果存储空间Ri←0,用于保存指定个数编译选项序列;
6.5)对于每一个小分类ci中的编译选项{O1,O2,...,Om}进行组合,得到p个不同组合:{Com1,Com2,...,Comp},Com表示编译选项组合;
6.6)对于每一种组合Comj'∈{Com1,Com2,...,Comp},由k个编译选项组成Comj'={O1,O2,...,Ok},这里1≤k≤m,j表示组合中任意一个元素;
6.7)对于每个组合中的每一个编译选项Ok∈Comj'
6.7.1)将Ok的关系树形图中的节点对应的编译选项放入编译选项序列:
Figure FDA0002781738430000041
6.7.2)如果关系树形图中的节点关系为互斥
Figure FDA0002781738430000042
且如果
Figure FDA0002781738430000043
则将Ok从S中删除;
6.7.3)如果关系树形图中的节点关系为依赖
Figure FDA0002781738430000044
则继续调用
Figure FDA0002781738430000045
的关系树形图,找到所有依赖编译选项,并将Ok放入编译选项序列;同时找到所有互斥关系的编译选项,将其从编译选项序列中删除;
6.7.4)如果关系树形图中的关系为被依赖
Figure FDA0002781738430000046
或影响
Figure FDA0002781738430000047
则停止调用关系树形图;
6.7.5)当所有关系树形图都处理完后,得到一个编译选项序列Snew
6.8)使用生成的编译选项序列Snew进行测试:
6.8.1)对于编译选项序列Snew中的编译选项,如果参数可调,调整不同参数进行测试;
6.8.2)如果测试结果t<T,则将编译选项序列Snew及其对应参数存入结果存储空间:Ri←Snew,T←t;其中,T表示编译时间;
6.9)对于每一编译选项分类,找到指定个数优化序列结果;
6.10)对于每一类中的优化序列进行组合搜索:
6.10.1)
Figure FDA0002781738430000051
其中R表示编译选项序列存储空间;
6.10.2)每类中提取一个序列组合成新的序列
Figure FDA0002781738430000052
l表示从第l类中提取序列Sf l,f表示序列包含f个编译选项;g表示从第g类中提取序列Sb g,b表示序列包含b个编译选项;h表示从第h类提取序列Sr h,r表示序列包含r个编译选项;
6.10.3)在新的序列Snew中,对互斥、依赖关系编译选项进行删除处理;
6.10.4)形成新的编译选项序列;
6.10.5)对编译顺序进行调整;
6.10.6)对Snew进行数据集测试,如果t<T,则R←Snew,T←t;
6.10.7)得到最优结果Topt和最优编译选项序列Sopt
CN201711113109.6A 2017-11-11 2017-11-11 一种基于程序特征分析的迭代编译优化方法 Active CN107885503B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711113109.6A CN107885503B (zh) 2017-11-11 2017-11-11 一种基于程序特征分析的迭代编译优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711113109.6A CN107885503B (zh) 2017-11-11 2017-11-11 一种基于程序特征分析的迭代编译优化方法

Publications (2)

Publication Number Publication Date
CN107885503A CN107885503A (zh) 2018-04-06
CN107885503B true CN107885503B (zh) 2021-01-08

Family

ID=61780171

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711113109.6A Active CN107885503B (zh) 2017-11-11 2017-11-11 一种基于程序特征分析的迭代编译优化方法

Country Status (1)

Country Link
CN (1) CN107885503B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669698A (zh) * 2018-11-09 2019-04-23 福州三鑫隆铸业有限公司 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备
CN109977019B (zh) * 2019-04-01 2021-04-20 大连理工大学 一种基于增量采样的编译器优化序列测试方法
CN110347583A (zh) * 2019-05-23 2019-10-18 平安科技(深圳)有限公司 一种数据分析系统会诊方法及相关装置
CN111124880B (zh) * 2019-11-04 2021-08-17 北京大学 基于历史数据的编译器测试输入生成方法和系统
CN112433706B (zh) * 2020-11-27 2023-03-14 海光信息技术股份有限公司 编译选项调优方法、装置、处理器芯片及服务器
CN116860259B (zh) * 2023-09-05 2023-12-19 之江实验室 一种模型训练和编译器自动调优的方法、装置及设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311901A (zh) * 2007-05-25 2008-11-26 松下电器产业株式会社 程序重写装置
CN103279356A (zh) * 2013-06-04 2013-09-04 百度在线网络技术(北京)有限公司 Makefile文件的自动生成方法和装置
CN103699389A (zh) * 2013-12-30 2014-04-02 北京大学 一种基于编译选项的Linux内核模块关系提取方法
CN104866369A (zh) * 2015-05-22 2015-08-26 广州华多网络科技有限公司 一种数据处理的方法以及装置
CN106126235A (zh) * 2016-06-24 2016-11-16 中国科学院信息工程研究所 一种复用代码库构建方法、复用代码快速溯源方法及系统
CN106293683A (zh) * 2015-06-12 2017-01-04 小米科技有限责任公司 一种项目的编译方法及装置
CN106406971A (zh) * 2016-09-26 2017-02-15 杭州迪普科技有限公司 一种代码文件的编译方法及装置
WO2017058541A1 (en) * 2015-09-30 2017-04-06 Apple Inc. System and method for using ubershader variants without preprocessing macros

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311901A (zh) * 2007-05-25 2008-11-26 松下电器产业株式会社 程序重写装置
CN103279356A (zh) * 2013-06-04 2013-09-04 百度在线网络技术(北京)有限公司 Makefile文件的自动生成方法和装置
CN103699389A (zh) * 2013-12-30 2014-04-02 北京大学 一种基于编译选项的Linux内核模块关系提取方法
CN104866369A (zh) * 2015-05-22 2015-08-26 广州华多网络科技有限公司 一种数据处理的方法以及装置
CN106293683A (zh) * 2015-06-12 2017-01-04 小米科技有限责任公司 一种项目的编译方法及装置
WO2017058541A1 (en) * 2015-09-30 2017-04-06 Apple Inc. System and method for using ubershader variants without preprocessing macros
CN106126235A (zh) * 2016-06-24 2016-11-16 中国科学院信息工程研究所 一种复用代码库构建方法、复用代码快速溯源方法及系统
CN106406971A (zh) * 2016-09-26 2017-02-15 杭州迪普科技有限公司 一种代码文件的编译方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Design and evaluation of a parallel neighbor algorithm for the disjunctively constrained knapsack problem;Quan, Z. etl.;《CONCURRENCY AND COMPUTATION-PRACTICE & EXPERIENCE》;20160512;第29卷(第20期);第1-10页 *
基于QEMU的动态函数调用跟踪;向勇 等;《计算机研究与发展》;20170731;第1569-1576页 *

Also Published As

Publication number Publication date
CN107885503A (zh) 2018-04-06

Similar Documents

Publication Publication Date Title
CN107885503B (zh) 一种基于程序特征分析的迭代编译优化方法
JP6605573B2 (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
WO2016062044A1 (zh) 一种模型参数训练方法、装置及系统
CN110110858B (zh) 一种基于强化学习的自动化机器学习方法
CN111104120B (zh) 神经网络编译方法、系统及相应异构计算平台
CN111882040A (zh) 基于通道数量搜索的卷积神经网络压缩方法
CN107273294B (zh) 一种基于神经网络语言模型的重复代码检测方法
US9823911B2 (en) Method and apparatus for compiling code based on a dependency tree
CN115563610B (zh) 入侵检测模型的训练方法、识别方法和装置
CN111325264A (zh) 一种基于熵的多标签数据分类方法
TW202036584A (zh) 一種基因變異識別方法、裝置和儲存介質
Xie et al. Graphiler: Optimizing graph neural networks with message passing data flow graph
CN111767216B (zh) 一种可缓解类重叠问题的跨版本深度缺陷预测方法
CN114416105B (zh) 一种量子操作的编译方法、系统、存储介质和电子设备
CN112199416A (zh) 数据规则生成方法及装置
CN106599122B (zh) 一种基于垂直分解的并行频繁闭序列挖掘方法
CN113468044B (zh) 一种基于改进的灰色预测演化算法的测试用例生成方法
CN107430506B (zh) 发现向量内的重复值的多个实例的方法和装置及到排序的应用
US9619362B2 (en) Event sequence construction of event-driven software by combinational computations
KR100538451B1 (ko) 분산 컴퓨팅 환경에서의 유전자 및 단백질 유사서열 검색시스템 및 그 방법
CN106796615B (zh) 使用自下而上方法的并行处理
Sinaei et al. Run-time mapping algorithm for dynamic workloads using association rule mining
US10776548B1 (en) Parallel Monte Carlo sampling for predicting tail performance of integrated circuits
WO2023087759A1 (zh) 一种深度学习模型的测试方法和装置
Vahidi et al. Parallel Longest Common SubSequence Analysis In Chapel

Legal Events

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