CN116521176A - 一种编译优化选项优化方法、装置、智能终端及存储介质 - Google Patents
一种编译优化选项优化方法、装置、智能终端及存储介质 Download PDFInfo
- Publication number
- CN116521176A CN116521176A CN202310506765.1A CN202310506765A CN116521176A CN 116521176 A CN116521176 A CN 116521176A CN 202310506765 A CN202310506765 A CN 202310506765A CN 116521176 A CN116521176 A CN 116521176A
- Authority
- CN
- China
- Prior art keywords
- optimization
- compiling
- option
- options
- compiling optimization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 525
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012545 processing Methods 0.000 claims description 17
- 230000001172 regenerating effect Effects 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 230000008030 elimination Effects 0.000 description 6
- 238000003379 elimination reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 241000544061 Cuculus canorus Species 0.000 description 2
- 241000254158 Lampyridae Species 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000010152 pollination Effects 0.000 description 2
- 241001673102 Jaya Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013476 bayesian approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- 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
-
- 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)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种编译优化选项优化方法、装置、智能终端及存储介质,具体涉及编译优化技术领域,首先基于各个编译优化选项利用优化算法随机生成初始种群,并通过设置各个编译优化选项的置信度得到离散化的编译优化选项组合;然后利用离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据优化结果计算各个离散化的编译优化选项组合的适应度,并利用适应度获得当前最佳的编译优化选项组合和改进的编译优化选项组合;最后通过迭代优化获得目标编译优化选项组合。该方案能够确保目标编译优化选项组合是全局最优解,提高了优化算法的准确性,而且仅基于编译优化选项的置信度和优化算法的适应度进行迭代优化,实现过程简单、高效。
Description
技术领域
本发明涉及编译器优化技术领域,尤其涉及的是一种编译优化选项优化方法、装置、智能终端及存储介质。
背景技术
编译器是一种软件工具,可以将高级语言编译为计算机可以理解的汇编语言。编译器在保证编译准确性的基础上,通常从编译速度、生成代码的大小和生成的可执行文件的执行速度三个方面进行优化。为了提高可执行文件的运行速度,编译器会通过常量传播、常量折叠、无用代码消除等方法进行编译优化。编译器开发者将这些优化方法打包为对应的编译优化选项内置在编译器中,用户可以根据需要选择开启的选项。由于不同的代码需要不同的编译优化选项组合进行优化,因此需要针对不同的源代码找到不同的编译优化选项组合。但是由于编译优化选项数量大,其排列组合构成的搜索空间也很大,通过人工调优和暴力搜索方法并不能很好地在有限时间内找到目标编译优化选项组合。因此,如何减小搜索空间,是在有限时间内找到最佳编译优化选项组合的关键。
现有的编译优化选项的优化方法主要采用基于在线学习的优化方法。目前在线学习的优化方法,首先基于某种算法建立预测模型,然后在指数级别的搜索空间中以迭代更新预测模型的方式寻找较为优秀的编译标志组合,作为算法所认为的最佳编译标志组合。例如采用贝叶斯方法确定最佳编译选项因子或编译优化选项组合。该方法的核心思想是利用搜索空间中已知区域所积累的知识来指导选择剩余区域中的样本,由于剩余区域中的未知优化选项数量繁多,因此通过选择若干个包含最优选项的未知优化选项的子集作为候选优化选项组合,但是最终找到的最优的优化选项组合有可能是局部最优解,导致所找到的最优的优化选项组合不够准确。而且通过高斯衰减函数更新训练集,实现步骤繁琐复杂。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供编译优化选项优化方法、装置、智能终端及存储介质,旨在解决现有技术中存在的算法的实现步骤繁琐复杂、且准确性较低的问题。
为了实现上述目的,本发明第一方面提供一种编译优化选项优化方法,包括以下步骤:
基于各个编译优化选项,利用优化算法随机生成包括若干个编译优化选项组合的初始种群,且每个编译优化选项组合均由若干个编译优化选项排列组合而成;
设置每个所述编译优化选项的置信度,并基于所述置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合;
利用所有的所述离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据编译后的源代码的运行结果计算所述离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据所述离散化的编译优化选项组合及所述优化算法的适应度生成改进的编译优化选项组合;
利用所有的所述改进的编译优化选项组合重新生成更新后的种群,重复上述基于置信度获得离散化的编译优化选项组合,以及基于待编译的源代码的优化结果和适应度,获得当前最佳的编译优化选项组合和改进的编译优化选项组合的步骤,直至达到预设的迭代终止条件,获得每次迭代对应的所述当前最佳的编译优化选项组合,通过比较所有的所述当前最佳的编译优化选项组合,得到目标编译优化选项组合。
可选的,所述设置每个所述编译优化选项的置信度,包括:
根据各个所述编译优化选项对所述源代码在编译前后的运行性能的影响程度将各个所述编译优化选项进行排序,并根据排序结果为每个所述编译优化选项设置置信度。
可选的,所述基于所述置信度将对应的编译优化选项进行二值化处理,包括:
若所述编译优化选项的置信度大于等于设定的编译优化选项的置信度阈值,则将对应的编译优化选项的状态设置为开启状态;若所述编译优化选项的置信度小于设定的编译优化选项的置信度阈值,则将对应的编译优化选项的状态设置为关闭状态。
可选的,所述编译后的源代码的运行结果为经过转换和编译后生成的可执行文件的运行时间,根据所述运行时间确定所述离散化的编译优化选项组合相对于当前优化算法的适应度。
可选的,所述根据所述离散化的编译优化选项组合及算法的适应度生成改进的编译优化选项组合,包括:
记录各个所述可执行文件的运行时间,并选取所述运行时间小于预设的时间阈值的可执行文件对应的离散化的编译优化选项组合作为改进的编译优化选项组合。
可选的,所述利用所有的改进的编译优化选项组合重新生成更新后的种群,包括:
剔除重复的所述改进的编译优化选项组合之后,获取所有所述改进的编译优化选项组合包括的所有种类的编译优化选项;
将所述编译优化选项进行排列组合构成若干个新的编译优化选项组合,并由所述新的编译优化选项组合生成更新后的种群。
可选的,还包括:
采用不同的所述优化算法分别得到各个所述优化算法下的目标编译优化选项组合;
比较各个所述目标编译优化选项组合对所述待编译的源代码的优化结果,得到对所述源代码的优化结果最佳的优化算法。
本发明第二方面提供一种编译优化选项优化装置,主要包括:
初始种群生成模块,用于基于各个编译优化选项,利用优化算法随机生成包括若干个编译优化选项组合的初始种群,且每个编译优化选项组合均由若干个编译优化选项排列组合而成;
编译优化选项组合处理模块,用于设置每个所述编译优化选项的置信度,并基于所述置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合;
迭代优化模块,用于利用所有的所述离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据编译后的源代码的运行结果计算所述离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据所述离散化的编译优化选项组合及所述优化算法的适应度生成改进的编译优化选项组合;
并利用所有的所述改进的编译优化选项组合重新生成更新后的种群进行迭代,通过比较所有的所述当前最佳的编译优化选项组合,得到目标编译优化选项组合。
本发明第三方面提供一种智能终端,所述智能终端包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的编译优化选项优化程序,所述编译优化选项优化程序被所述处理器执行时实任意一项上述编译优化选项优化方法的步骤。
本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有编译优化选项优化程序,所述编译优化选项优化程序被处理器执行时实现任意一项上述编译优化选项优化方法的步骤。
与现有技术相比,本方案的有益效果如下:
本申请基于各个编译优化选项,利用优化算法随机初始化若干个编译优化选项组合,使得各个编译优化选项被选取到的概率相同,以确保初始种群中尽可能包括所有的编译优化选项,然后通过编译优化选项的置信度将编译优化选项组合进行离散化处理,实现对各个编译优化选项状态的高效设置,并通过适应度筛选出当前最佳的编译优化选项组合以及生成改进的编译优化选项组合进行迭代优化,最终基于适应度筛选出最优的目标编译优化选项组合。可见,本申请基于各个编译优化选项随机初始化得到的初始种群进行迭代优化,能够确保得到的目标编译优化选项组合是全局最优解,以提高优化算法的准确性;而且仅仅基于编译优化选项的置信度和优化算法的适应度,就能寻找到针对当前优化算法的适应度最优的目标编译优化选项组合,实现过程简单、高效。
附图说明
图1为本发明的编译优化选项优化方法流程图;
图2为本发明的编译优化选项优化方法流程示意图;
图3为本发明的基于不同优化算法的编译优化选项优化结果对比图;
图4为本发明的编译优化选项优化系统流程图;
图5为本发明的智能终端原理框图。
具体实施方式
本发明提供了一种编译优化选项优化方法、装置、智能终端及存储介质,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了简化利用优化算法对编译优化选项的选取和设置过程,并提高编译优化效率。本发明首先利用各个编译优化选项随机初始化生成初始种群,并通过设置各个编译优化选项的置信度,得到离散化的编译优化选项组合;然后利用所有的离散化的编译优化选项组合分别对待编译的源代码进行优化处理,并根据优化结果计算各个离散化的编译优化选项组合的适应度,通过比较适应度的高低选出当前最佳的编译优化选项组合,以及利用适应度较高的离散化的编译优化选项组合生成改进的编译优化选项组合;最后利用改进的编译优化选项组合重新生成更新后的种群进行迭代,并通过比较所有的当前最佳的编译优化选项组合,得到目标编译优化选项组合。本申请的方法基于各个编译优化选项随机初始化得到的初始种群进行迭代优化,能够确保得到的目标编译优化选项组合是全局最优解,以提高优化算法的准确性;而且仅仅基于编译优化选项的置信度和算法的适应度,就能通过迭代优化寻找到目标编译优化选项组合,实现过程简单、高效。
本实施例的编译优化选项优化方法流程图如图1所示,具体的方法流程示意图如图2所示,具体包括以下步骤:
步骤100:基于编译优化选项,利用优化算法生成包括若干个编译优化选项组合的初始种群,且每个编译优化选项组合均由若干个编译优化选项排列组合而成。
具体地,本实施例中的优化算法指的是存在启发式优化或在线学习性质,并且能够对待编译的源代码进行优化处理的算法,例如,进化算法。
为了充分探索和比较各个编译优化选项的优化性能,本实施例随机初始化编译优化选项组合,使得初始种群中包括所有的编译优化选项,以保障后续进行种群迭代优化的基础的完备性。
利用随机生成的多个编译优化选项组合构建初始种群,为了方便比较各个编译优化选项组合的优化性能以及进行后续的种群迭代优化,本实施例中的每个编译优化选项组合都包括数目相同的编译优化选项。
为了保障编译器中的各个编译优化选项等概率分布到各个编译优化选项组合内,本实施例采用随机初始化编译优化选项组合,作为其他优选实施方式,可以通过排列组合的方式初始化编译优化选项组合。
假设初始种群中包含m个编译优化选项组合,每个编译优化选项组合包含n个编译优化选项的状态,初始种群S和一个编译优化选项组合X分别表示为:
S={X1,X2,…,Xm}
X={x1,x2,…,xn},xi∈[0,1]
其中,xi表示第i个编译优化选项的置信度,越接近1说明这个选项越值得开启。
步骤200:设置每个编译优化选项的置信度,并基于置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合。
具体地,本实施例通过设置编译优化选项的置信度,来更好地判断选择开启哪些编译优化选项开启更有利于优化代码。本实施例中所设置的置信度范围为[0,1]之间的任意连续数值,而在实际操作过程中编译优化选项只有开启和关闭两种状态,因此为了将置信度和编译优化选项的状态一一对应起来,进一步将所设置的置信度进行二值化处理,也就是将[0,1]之间的小数转换为0或1。然后根据二值化结果对相应的编译优化选项进行开启或关闭状态的设置,进而获得种群的每个个体对应的离散化的编译优化选项组合。
步骤200具体可分为以下步骤:
步骤210:设置每个编译优化选项的置信度,包括:
根据各个编译优化选项对源代码在编译前后的运行性能的影响程度将各个编译优化选项进行排序,并根据排序结果为每个编译优化选项设置置信度。
例如,若某个编译优化选项对待编译的源代码在编译前后的运行时间产生的影响越大,则对应的编译优化选项越重要。进一步举例说明,当单独开启编译优化选项A时,源代码在编译后的运行时间比源代码在编译前的运行时间减少了0.3秒,而当单独开启编译优化选项B时,源代码在编译后的运行时间比源代码在编译前的运行时间减少了2秒,则说明编译优化选项B对源代码在编译前后的运行时间影响较大,那么编译优化选项B的重要性比编译优化选项A的重要性大。
容易理解的是,编译优化选项在排序中的位置越靠前,说明对待编译的源代码的影响越大,说明该编译优化选项对代码带来的优化效果也越重要,那么该编译优化选项的置信度的取值也就越大。
步骤220:基于置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合,包括:
若编译优化选项的置信度大于等于设定的编译优化选项的置信度阈值,则将对应的编译优化选项的状态设置为1,表示开启;若编译优化选项的置信度小于设定的编译优化选项的置信度阈值,则将对应的编译优化选项的状态设置为0,表示关闭。
其中,编译优化选项的置信度用来表示编译优化选项开启的概率或编译优化选项关闭的概率。编译优化选项的置信度阈值的大小可以根据编译优化选项组合的编译结果和所设定的评价指标的精度进行调整。
例如,将初始种群中的个体进行二值化处理的过程如下:
假设初始种群中包含m个编译优化选项组合,每个编译优化选项组合包含n个编译优化选项的状态,初始种群S和一个编译优化选项组合X分别表示为:
S={X1,X2,…,Xm}
X={x1,x2,…,xn},xi∈[0,1]
其中,xi表示第i个编译优化选项的置信度,越接近1说明这个选项越值得开启。
假设编译优化选项的置信度阈值为0.5,若编译优化选项的置信度xi大于等于0.5,则将对应的编译优化选项的状态设置为1,表示开启该编译优化选项;若编译优化选项的置信度xi小于0.5,则将对应的编译优化选项的状态设置为0,表示关闭该编译优化选项。第i个编译优化选项的状态可表示为:
将初始种群中的个体逐一输入到二值化函数,进行二值化处理之后,由一系列的0-1之间的连续数值构成的连续的编译优化选项组合X,会转化为由一系列的0或1构成的离散化的编译优化选项组合P,即:
P={p1,p2,…,pn},pi=0,1
本实施的二值化处理方式,能够确保重要性比较大的编译优化选项处于开启状态,使得得到的种群的每个个体对应的离散化的编译优化选项组合给代码带来比较优良的优化效果,并提升优化效率。
步骤300:利用所有的离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据编译后的源代码的运行结果计算离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据离散化的编译优化选项组合及算法的适应度生成改进的编译优化选项组合。
具体地,首先将待编译的源代码进行转换处理得到中间代码,然后利用离散化的编译优化选项组合对中间代码进行优化处理并生成对应的可执行文件,再根据生成的可执行文件的运行结果计算各个离散化的编译优化选项组合的适应度,以通过比较适应度获得当前最佳的编译优化选项组合,最后根据离散化的编译优化选项组合及算法的适应度生成改进的编译优化选项组合。
步骤300具体可分为以下步骤:
步骤310:利用所有的离散化的编译优化选项组合分别对待编译的源代码进行优化处理,包括:
将待编译的源代码转换成中间代码,利用所有的离散化的编译优化选项组合分别对中间代码进行优化处理,获得各个离散化的编译优化选项组合对应的优化后的中间代码,并将所有的优化后的中间代码分别生成对应的可执行文件(例如.exe格式的文件)。
其中,将待编译的源代码转换成中间代码,利用获得的所有的离散化的编译优化选项组合分别对中间代码进行优化处理,也就是根据离散的编译优化选项组合P中取值为1的编译优化选项对中间代码IR进行优化。
下面举例说明对中间代码IR的优化方法,编译器中的编译优化选项有很多种,例如常量传播、常量折叠、复写传播、公共子表式消除、无用代码消除、循环展开、数组范围检查消除、方法内联和逃逸分析等等。假设某一个编译优化选项组合为[0,1,1],其对应的编译优化选项是[循环展开,无用代码消除,常量折叠],则说明这个编译优化选项组合会同时使用无用代码消除和常量折叠这两种方法对中间代码IR进行优化,一方面会通过无用代码消除编译优化选项将永远不能被执行到的代码或者没有任何意义的代码清除掉,另一方面还会通过常量折叠编译优化选项将可以替换为一个变量进行计算的多个变量的计算最终替换为一个变量进行计算。
容易理解的是,当编译优化选项组合中取值为1的数目越多,说明对中间代码IR进行的优化处理项目越多,优化过程消耗的时间就会越长,代码优化效率会有所下降。而且由于某些选项之间的优化方式可能存在冲突,因此并不是开启的优化选项越多,得到的优化后的中间代码对算法的适应度就会越强。
然后,将所有的优化后的中间代码分别生成对应的可执行文件,也就是将优化后的中间代码编译为与环境指令集对应的汇编语言,利用编译得到的汇编语言生成可执行文件。
步骤320:根据编译后的源代码的运行结果计算离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据离散化的编译优化选项组合及算法的适应度生成改进的编译优化选项组合。
具体地,首先根据可执行文件的运行结果参数可以判断离散化的编译优化选项组合对中间代码的优化效果的好坏。优化效果越好,说明对应的离散化的编译优化选项组合相对于当前优化算法的适应度越强。然后对适应度比较强的离散化的编译优化选项组合中的编译优化选项的二值化取值进行调整,以进一步提高这些编译优化选项组合相对于当前优化算法的适应度,并记录对当前优化算法的适应度最优的编译优化选项组合。
步骤320具体包括以下步骤:
步骤321:根据可执行文件的运行结果参数判断离散化的编译优化选项组合相对于当前优化算法的适应度,获得当前最佳的编译优化选项组合Xbest,包括:
可执行文件的运行结果参数指的是可执行文件的运行时间,若可执行文件的运行时间越短,则对应的编译优化选项组合的适应度越强;若可执行文件的运行时间越长,则对应的编译优化选项组合的适应度越弱。并将其中适应度最强的编译优化选项组合作为当前最佳的编译优化选项组合Xbest。
步骤322:根据编译优化选项组合及算法的适应度生成改进的编译优化选项组合,包括:
记录各个可执行文件的运行时间,并将每一个可执行文件按照运行时间排序;
将可执行文件的运行时间作为算法的适应度,选取可执行文件的运行时间小于预设的运行时间阈值的离散化的编译优化选项组合作为改进的编译优化选项组合也就是通过仅保留适应度比较好的离散化编译优化选项组合,而舍弃适应度比较差的离散化编译优化选项组合,以提升离散化的编译优化选项组合的整体适应度。
例如,按照可执行文件的运行时间由小到大的顺序,将所有的离散化的编译优化选项组合进行排序,排列顺序越靠前的离散化的编译优化选项组合对代码的优化性能越好,然后选取排序在前几百或几十的离散化的编译优化选项组合,作为改进的编译优化选项组合。
本实施例中将可执行文件的运行时间作为算法的适应度,作为其他优选实施方式,可以根据算法的时间复杂度、空间复杂度、正确性、可读性和健壮性等评价指标中的一种或几种作为评价算法的适应度指标,实现对算法的适应度从不同维度进行单一或者综合评价,以提高算法运行的有效性。
步骤400:利用改进的编译优化选项组合重新生成更新后的种群,重复上述步骤200-步骤300,直至达到预设的迭代终止条件,得到目标编译优化选项组合。
具体地,将改进的编译优化选项组合中的各个编译优化选项进行比较,若存在至少两个改进的编译优化选项组合包括的各个编译优化选项均相同,认为这些改进的编译优化选项组合相同,则只保留其中任意一个改进的编译优化选项组合;
将剩余的改进的编译优化选项组合包括的所有种类的编译优化选项进行排列组合,构成若干个新的编译优化选项组合,并由新的编译优化选项组合生成更新后的种群。
然后通过生成的更新后的种群重复上述步骤200-步骤300,实现对种群的迭代优化,直至达到预设的迭代终止条件,每次迭代均得到一个当前最佳的编译优化选项组合Xbest,然后从中选出适应度最强的编译优化选项组合作为当前最佳的编译优化选项组合作为G(Xbest),最终得到目标编译优化选项组合。
本实施例通过预设的迭代次数或预设的运行时间阈值对迭代优化的次数进行限制,以有效利用优化算法的在线学习能力,通过迭代一步步缩小搜索空间实现在有限时间内找到最佳编译优化选项组合,使得待编译的源代码经过优化处理之后,运行速度更快,运行效率更高。
在一个实施例中,为了进一步确定在不同优化算法下的目标编译优化选项组合,还采用不同的优化算法分别得到各个优化算法下目标编译优化选项组合,并比较各个目标编译优化选项组合对待编译的源代码的优化结果,得到对源代码的优化结果最佳的优化算法。
该方法不仅可以通过迭代一步步缩小搜索空间,实现在有限时间内或者有限迭代次数内找到最佳编译优化选项组合,而且适用于多种优化算法,可以自由选择优化算法,以找到最适合当前源代码的优化算法。
本实施例中选用的优化算法为进化算法,作为其他优选实施方式,还可以根据实际应用情况选择其他存在启发式优化或在线学习性质的算法。本发明的方法不受计算机系统、编译器类型和开发环境对编译优化选项选择的影响,适用于多种优化算法,方便测试和比较各个优化算法在编译选项优化中的有效性,便于找到对待编译的源代码的编译优化性能良好的算法。
在基于进化算法的编译选项优化中,可以根据实际应用对进化算法中的算法进行灵活选择,并且只需将进化算法的编码方式转换为离散二值形式即可。本实施例基于蝙蝠启发算法(Bat-inspired Algorithm,BA)、布谷鸟搜索算法(Cuckoo Search,CS)、差分进化算法(Differential Evolution,DE)、分布估计算法(Estimation DistributionAlgorithm,EDA)、萤火虫算法(Firefly Algorithm,FA)、花授粉算法(Flower PollinationAlgorithm,FPA)、遗传算法(Genetic Algorithm,GA)、JAYA算法、粒子群算法(ParticleSwarm Optimization,PSO)、正弦余弦算法(Sine Cosine Algorithm,SCA),在cBench测试集测试后发现本实施例中的编译选项优化算法使得程序的运行速度平均提高9%,具体如图3所示,其中,纵坐标是指加速比,加速比表示源代码在编译器自带的一个的编译选项优化组合-O3的优化下的运行时间与本实施例的编译选项进化算法优化下的运行时间之比。
需要说明的是,除了上述的10个算法,还可以根据实际应用需要选取其他进化算法进行优化,但依然属于本实施例的编译优化选项优化方法的范畴。
本实施例的编译优化选项优化方法,首先基于各个编译优化选项随机初始化生成初始种群,并将种群中的个体逐一完成二值化作为编译优化选项组合,然后根据编译优化选项组合及算法的适应度生成改进的编译优化选项组合,并记录当前最佳的编译优化选项组合,最后通过迭代优化寻找到目标编译优化选项组合。该方法有效利用优化算法的在线学习能力,通过迭代一步步缩小搜索空间实现在有限时间内找到最佳编译优化选项组合。和现有技术中的在线学习方法相比而言,第一,本申请的方法不受计算机系统、编译器类型和开发环境对编译优化选项选择的影响,适用于多种优化算法,例如进化算法中的任意一种算法,方便测试和比较各个优化算法在编译选项优化中的有效性,便于找到最适用于编译选项优化的算法;第二,本申请基于各个编译优化选项随机初始化得到的初始种群进行迭代优化,能够确保得到的目标编译优化选项组合是全局最优解,以提高优化算法的准确性;第三,本申请的方法仅仅基于编译优化选项的置信度和算法的适应度,就能通过迭代优化寻找到目标编译优化选项组合,实现过程简单、高效。
示例性系统
如图4所示,对应于上述网约车共乘双阶段匹配方法,本发明实施例还提供一种网约车共乘双阶段匹配系统,上述网约车共乘双阶段匹配系统包括:
初始种群生成模块510,用于利用优化算法生成包括若干个编译优化选项组合的初始种群,且每个编译优化选项组合均由若干个编译优化选项排列组合而成;
编译优化选项组合处理模块520,用于设置每个编译优化选项的置信度,并基于置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合;
迭代优化模块530,用于利用所有的离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据编译后的源代码的运行结果计算离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据离散化的编译优化选项组合及算法的适应度生成改进的编译优化选项组合;
并利用所有的改进的编译优化选项组合重新生成更新后的种群进行迭代,通过比较所有的当前最佳的编译优化选项组合,得到目标编译优化选项组合。
具体的,本实施例中,上述网约车共乘双阶段匹配系统的具体功能还可以参照上述网约车共乘双阶段匹配方法中的对应描述,在此不再赘述。
基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图5所示。上述智能终端包括通过系统总线连接的处理器、存储器、网络接口以及显示屏。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内部存储器。该非易失性存储介质存储有操作系统和编译优化选项优化程序。该内部存储器为非易失性存储介质中的操作系统和基于编译优化选项优化程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该编译优化选项优化程序被处理器执行时实现上述任意一种编译优化选项优化方法的步骤。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏。
本领域技术人员可以理解,图5中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的编译优化选项优化程序,上述编译优化选项优化程序被上述处理器执行时实现本发明实施例提供的任意一种编译优化选项优化方法的步骤。
本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有编译优化选项优化程序,上述编译优化选项优化程序被处理器执行时实现本发明实施例提供的任意一种编译优化选项优化方法的步骤。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种编译优化选项优化方法,其特征在于,包括以下步骤:
基于各个编译优化选项,利用优化算法随机生成包括若干个编译优化选项组合的初始种群,且每个编译优化选项组合均由若干个编译优化选项排列组合而成;
设置每个所述编译优化选项的置信度,并基于所述置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合;
利用所有的所述离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据编译后的源代码的运行结果计算所述离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据所述离散化的编译优化选项组合及所述优化算法的适应度生成改进的编译优化选项组合;
利用所有的所述改进的编译优化选项组合重新生成更新后的种群,重复上述基于置信度获得离散化的编译优化选项组合,以及基于待编译的源代码的优化结果和适应度,获得当前最佳的编译优化选项组合和改进的编译优化选项组合的步骤,直至达到预设的迭代终止条件,获得每次迭代对应的所述当前最佳的编译优化选项组合,通过比较所有的所述当前最佳的编译优化选项组合,得到目标编译优化选项组合。
2.根据权利要求1所述的编译优化选项优化方法,其特征在于,所述设置每个所述编译优化选项的置信度,包括:
根据各个所述编译优化选项对所述源代码在编译前后的运行性能的影响程度,将各个所述编译优化选项进行排序,并根据排序结果为每个所述编译优化选项设置置信度。
3.根据权利要求2所述的编译优化选项优化方法,其特征在于,所述基于所述置信度将对应的编译优化选项进行二值化处理,包括:
若所述编译优化选项的置信度大于等于设定的编译优化选项的置信度阈值,则将对应的编译优化选项的状态设置为开启状态;
若所述编译优化选项的置信度小于设定的编译优化选项的置信度阈值,则将对应的编译优化选项的状态设置为关闭状态。
4.根据权利要求1所述的编译优化选项优化方法,其特征在于,所述编译后的源代码的运行结果为经过转换和编译后生成的可执行文件的运行时间,根据所述运行时间确定所述离散化的编译优化选项组合相对于当前优化算法的适应度。
5.根据权利要求4所述的编译优化选项优化方法,其特征在于,所述根据所述离散化的编译优化选项组合及算法的适应度生成改进的编译优化选项组合,包括:
记录各个所述可执行文件的运行时间,并选取所述运行时间小于预设的时间阈值的可执行文件对应的离散化的编译优化选项组合作为改进的编译优化选项组合。
6.根据权利要求5所述的编译优化选项优化方法,其特征在于,所述利用所有的改进的编译优化选项组合重新生成更新后的种群,包括:
剔除重复的所述改进的编译优化选项组合之后,获取所有所述改进的编译优化选项组合包括的所有种类的编译优化选项;
将所述编译优化选项进行排列组合构成若干个新的编译优化选项组合,并由所述新的编译优化选项组合生成更新后的种群。
7.根据权利要求1-6任一项所述的编译优化选项优化方法,其特征在于,还包括:
采用不同的所述优化算法分别得到各个所述优化算法下的目标编译优化选项组合;
比较各个所述目标编译优化选项组合对所述待编译的源代码的优化结果,得到对所述源代码的优化结果最佳的优化算法。
8.编译优化选项优化装置,其特征在于,主要包括:
初始种群生成模块,用于基于各个编译优化选项,利用优化算法随机生成包括若干个编译优化选项组合的初始种群,且每个编译优化选项组合均由若干个编译优化选项排列组合而成;
编译优化选项组合处理模块,用于设置每个所述编译优化选项的置信度,并基于所述置信度将对应的编译优化选项进行二值化处理,获得离散化的编译优化选项组合;
迭代优化模块,用于利用所有的所述离散化的编译优化选项组合分别对待编译的源代码进行优化处理,根据编译后的源代码的运行结果计算所述离散化的编译优化选项组合的适应度,获得当前最佳的编译优化选项组合,并根据所述离散化的编译优化选项组合及所述优化算法的适应度生成改进的编译优化选项组合;
并利用所有的所述改进的编译优化选项组合重新生成更新后的种群进行迭代,通过比较所有的所述当前最佳的编译优化选项组合,得到目标编译优化选项组合。
9.一种智能终端,其特征在于,所述智能终端包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的编译优化选项优化程序,所述编译优化选项优化程序被所述处理器执行时实现如权利要求1-7任意一项所述编译优化选项优化方法的步骤。
10.一种存储介质,其特征在于,所述计算机可读存储介质上存储有编译优化选项优化程序,所述编译优化选项优化程序被处理器执行时实现如权利要求1-7任意一项所述编译优化选项优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310506765.1A CN116521176B (zh) | 2023-05-06 | 2023-05-06 | 一种编译优化选项优化方法、装置、智能终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310506765.1A CN116521176B (zh) | 2023-05-06 | 2023-05-06 | 一种编译优化选项优化方法、装置、智能终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116521176A true CN116521176A (zh) | 2023-08-01 |
CN116521176B CN116521176B (zh) | 2023-12-29 |
Family
ID=87397317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310506765.1A Active CN116521176B (zh) | 2023-05-06 | 2023-05-06 | 一种编译优化选项优化方法、装置、智能终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521176B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116931955A (zh) * | 2023-09-18 | 2023-10-24 | 之江实验室 | 基于人工智能的编译器自动调优方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050010912A1 (en) * | 2003-07-10 | 2005-01-13 | International Business Machines Corporation | Method and apparatus for generating computer programming code selectively optimized for execution performance and not optimized for serviceability |
US20070006157A1 (en) * | 2003-10-23 | 2007-01-04 | Fujitsu Limited | Software development tool program |
US20100205586A1 (en) * | 2009-02-11 | 2010-08-12 | Mun Johnathan C | Evaluation compiler method |
CN110321116A (zh) * | 2019-06-17 | 2019-10-11 | 大连理工大学 | 一种面向编译优化中计算代价约束问题的高效优化方法 |
CN110704067A (zh) * | 2019-10-16 | 2020-01-17 | 福建师范大学 | 一种嵌入式软件编译时能耗演化优化方法 |
CN110941424A (zh) * | 2019-11-28 | 2020-03-31 | Oppo广东移动通信有限公司 | 编译参数优化方法、装置及电子设备 |
CN112035116A (zh) * | 2020-08-26 | 2020-12-04 | 大连理工大学 | 多目标编译优化序列选择的代理建模方法 |
CN113407185A (zh) * | 2021-03-10 | 2021-09-17 | 天津大学 | 基于贝叶斯优化的编译器优化选项推荐方法 |
CN115469851A (zh) * | 2022-10-20 | 2022-12-13 | 晞德软件(北京)有限公司 | 一种编译器自动调参方法 |
-
2023
- 2023-05-06 CN CN202310506765.1A patent/CN116521176B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050010912A1 (en) * | 2003-07-10 | 2005-01-13 | International Business Machines Corporation | Method and apparatus for generating computer programming code selectively optimized for execution performance and not optimized for serviceability |
US20070006157A1 (en) * | 2003-10-23 | 2007-01-04 | Fujitsu Limited | Software development tool program |
US20100205586A1 (en) * | 2009-02-11 | 2010-08-12 | Mun Johnathan C | Evaluation compiler method |
CN110321116A (zh) * | 2019-06-17 | 2019-10-11 | 大连理工大学 | 一种面向编译优化中计算代价约束问题的高效优化方法 |
CN110704067A (zh) * | 2019-10-16 | 2020-01-17 | 福建师范大学 | 一种嵌入式软件编译时能耗演化优化方法 |
CN110941424A (zh) * | 2019-11-28 | 2020-03-31 | Oppo广东移动通信有限公司 | 编译参数优化方法、装置及电子设备 |
CN112035116A (zh) * | 2020-08-26 | 2020-12-04 | 大连理工大学 | 多目标编译优化序列选择的代理建模方法 |
CN113407185A (zh) * | 2021-03-10 | 2021-09-17 | 天津大学 | 基于贝叶斯优化的编译器优化选项推荐方法 |
CN115469851A (zh) * | 2022-10-20 | 2022-12-13 | 晞德软件(北京)有限公司 | 一种编译器自动调参方法 |
Non-Patent Citations (7)
Title |
---|
ANTONIO MARTÍNEZ-ÁLVAREZ等: "Tuning compilations by multi-objective optimization: Application to Apache web server", APPLIED SOFT COMPUTING, vol. 29, pages 461 - 470 * |
KUAN LI 等: "Multi-level parallel multi-layer block reproducible summation algorithm", PARALLEL COMPUTING, vol. 115, pages 1 - 8 * |
M. HANEDA等: "Automatic selection of compiler options using non-parametric inferential statistics", 14TH INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES (PACT\'05), pages 1 - 10 * |
ROBERT MIJAKOVIĆ等: "An architecture for flexible auto-tuning: The Periscope Tuning Framework 2.0", 2016 2ND INTERNATIONAL CONFERENCE ON GREEN HIGH PERFORMANCE COMPUTING (ICGHPC), pages 1 - 9 * |
刘慧 等: "监督学习模型指导的函数级编译优化参数选择方法研究", 计算机工程与科学, vol. 40, no. 06, pages 957 - 968 * |
吴江: "面向软错误的程序可靠性优化技术研究", 中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑, no. 2, pages 031 - 1433 * |
程亚浪: "卷积神经网络的二值化及FPGA加速的研究", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 5, pages 135 - 409 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116931955A (zh) * | 2023-09-18 | 2023-10-24 | 之江实验室 | 基于人工智能的编译器自动调优方法及装置 |
CN116931955B (zh) * | 2023-09-18 | 2024-01-09 | 之江实验室 | 基于人工智能的编译器自动调优方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116521176B (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zuluaga et al. | e-pal: An active learning approach to the multi-objective optimization problem | |
Bunel et al. | Learning to superoptimize programs | |
CN109376535B (zh) | 一种基于智能化符号执行的漏洞分析方法及系统 | |
Falch et al. | Machine learning‐based auto‐tuning for enhanced performance portability of OpenCL applications | |
CN116521176B (zh) | 一种编译优化选项优化方法、装置、智能终端及存储介质 | |
Zhang et al. | DeleSmell: Code smell detection based on deep learning and latent semantic analysis | |
Thanei et al. | The xyz algorithm for fast interaction search in high-dimensional data | |
Stewart et al. | Constructing support vector machines with missing data | |
Goertzel et al. | ENIGMAWatch: proofWatch meets ENIGMA | |
Mollaysa et al. | Goal-directed generation of discrete structures with conditional generative models | |
US20120323926A1 (en) | Efficient Optimization over Uncertain Data | |
Doshi et al. | Kepler: Robust learning for parametric query optimization | |
Hasanpour et al. | Improving rule-based classification using Harmony Search | |
Prinster et al. | JAWS-x: Addressing efficiency bottlenecks of conformal prediction under standard and feedback covariate shift | |
Manthey et al. | SATPin: Axiom pinpointing for lightweight description logics through incremental SAT | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
Cummins et al. | Deep data flow analysis | |
Ganser et al. | Speeding up iterative polyhedral schedule optimization with surrogate performance models | |
US10394898B1 (en) | Methods and systems for analyzing discrete-valued datasets | |
Kokko et al. | PYLFIRE: Python implementation of likelihood-free inference by ratio estimation | |
Barillec et al. | Projected sequential Gaussian processes: A C++ tool for interpolation of large datasets with heterogeneous noise | |
AbuHassan et al. | Prioritization of model smell refactoring using a covariance matrix-based adaptive evolution algorithm | |
CN113128544A (zh) | 训练人工智能模型的方法和装置 | |
Meng et al. | Guiding Optimizations with Meliora: A Deep Walk down Memory Lane | |
Altarabichi | Evolving intelligence: Overcoming challenges for Evolutionary Deep Learning |
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 |