基于频繁模式挖掘的 GCC 编译时能耗演化优化算法
1.摘要
18年发在软件学报上的一篇论文。演化算法通过搜寻 GCC 编译器最优编译选项集对可执行代码的能耗进行改进,以达到编译时优化嵌入式软件能耗的目的.但这类算法未考虑多个编译选项之间可能存在相互影响,导致了其解质量不高且收敛速度慢的问题.针对这一不足,本文设计了一种基于频繁模式挖掘的文化基因算法 MA-FP,在演化过程中利用频繁模式挖掘得到出现频度高且对能耗有显著改进效果的一组编译选项,并以此作为启发式信息设计了“增添”和“删减”两种变异算子来提高解质量并加快 MA-FP 算法的收敛速度.通过与 Tree-EDA 算法在 5 个不同领域的 8 个典型案例下进行对比实验,结果表明:本文的 MA-FP 算法不仅能更有效降低软件能耗(平均降低 2.5%,最高降低 21.1%),而且还能在获得不劣于 Tree-EDA 能耗优化效果的前提下更快地收敛(平均加快 34.5%,最高加快 83.3%).
2.相关介绍和背景
能耗是嵌入式软件的关键质量属性. 特别是在电量受限的执行环境中,降低嵌入式软件的能耗具有更为重要的价值和意义.与嵌入式软件源代码级的能耗优化相比,编译时能耗优化无需改动源代码,同时可保证功能语义一致性. 作为一款开源编译器,GCC已广泛应用于嵌入式软件源代码的编译. GCC 提供常用的几种优化等级,利用每种优化等级所预设的一组编译选项对软件源代码进行编译,可实现可执行代码的优化.然 而 GCC 的优化等级对于特定的软件源代码、执行平台和特定优化目标,往往难以获得最佳的优化效果.此 外,GCC 编译选项数目众多,选择空间十分庞大.例如:GCC4.9.2 提供了 188 个编译选项,其选择空间高达 2 188 2^{188}