Page 221 - 《软件学报》2026年第6期
P. 221

2540                                                       软件学报  2026  年第  37  卷第  6  期


                 分别为   34.11%  和  12.28%. 出现该现象的主要原因是     LLVM  编译器的大部分优化选项对程序性能的影响较小, 使
                 得程序性能分布较为集中, 而搜索过程中多数样本的性能位于均值左侧, 从而导致较为频繁的实际执行.

                                             45
                                                        Iter0  Iter1  Iter2  Iter3
                                             40
                                            功耗节省比例 (%)  30
                                             35
                                             25
                                             20
                                             15
                                             10
                                              5
                                              0
                                                BT-GCC BT-LLVM CG-GCC CG-LLVM
                                        图 10 典型测试用例在性能预测阶段的功耗节省比例

                  3.2.3    选项分析及筛选
                    编译选项数量的增长导致了搜索空间的指数级膨胀, 使得遍历寻找最优配置变得不切实际. 主流编译调优框
                 架采用启发式方法寻求近似最优解, 但需在优化质量和效率间权衡. 本文提出的基于                           SHAP  的选项分析及筛选方
                 法综合考虑编译选项的重要程度及依赖关系, 通过逐步减小搜索空间的方式保证搜索过程聚焦于对性能调优有显
                 著影响的选项集合. 图      11  以  GCC  编译器编译的   BT  测试用例为例, 展示了     SWTuner 在不同迭代阶段中的最优性
                 能变化情况, 并且与      BOCA  框架的调优效果进行了对比, 其中纵坐标为以-O3              优化作为基准的归一化最优执行时
                 间. 对于  SWTuner 框架, 在单次迭代内部, 程序的执行时间均呈现下降的趋势. 然而, 随着搜索时间的增加, 搜索算
                 法可能会陷入局部最优解, 导致性能的变化趋于稳定而难以找到全局最优解. 经过                          SWTuner 的  4  轮迭代调优, BT
                 测试用例的归一化最优执行时间最终稳定在               0.9 左右, 相较于前  3 轮迭代的最优性能分别提升          1.2%、2.7%  及  0.4%.

                                             1.08
                                                          SWTuner-Iter0  SWTuner-Iter1
                                             1.06         SWTuner-Iter2  SWTuner-Iter3
                                          使用 GCC 编译器的  归一化最优性能  1.02
                                             1.04
                                                                       O3-Baseline
                                                          BOCA (k=8)
                                             1.00
                                             0.98
                                             0.96
                                             0.94
                                             0.92
                                             0.90
                                                0    2 000  4 000  6  000  8 000  10 000
                                                            搜索时间 (s)
                                       图 11 BT  测试用例在不同迭代中的最优性能变化情况

                    为了降低搜索空间的维度, BOCA          框架在每轮迭代中选择重要性最高的              k 个选项进行变异, 图      11  中给出了
                 k=8  情况下最优性能的变化情况. 如图所示, BOCA           在调优初始阶段能够获得与          SWTuner 相当的收敛速度      (介于
                 Iter1  与  Iter2  之间), 但后期调优效果显著下降, 最优性能仅约为       SWTuner 第  4  轮迭代的  93.9%. BOCA  框架默认采
                 用平均不纯度减少法        (mean decrease impurity, MDI) 评估选项的重要性, 其计算高效但可能高估某些孤立的重要
                 选项. 相较于   MDI 方法, 基于   SHAP  的选项分析及筛选方法能够显式建模选项间的交互效应, 从而更加精准地识
                 别关键选项及其组合, 推动调优效果持续改进.
                    正如第   2.3  节中算法  1  所述, 为了确保选项筛选的有效性, SWTuner 运用        Shapley  值理论来量化分析编译选项
                 与程序性能之间的关系, 并从中筛选出对程序性能有显著影响的选项集合. 表                         5  统计了上述   BT  示例在各个迭代
                 阶段中重要性排名前        10  的编译选项及其对应的      Shapley  值, 并通过颜色来区分选项出现的频率: 出现           4  次的选项
                 被标记为红色, 出现      3  次的选项被标记为绿色, 而出现        2  次的选项则被标记为蓝色. 具体而言, -ffloat-store、-Ox    和
                 -fschedule-insns 这  3  个选项在整个迭代过程中始终展现出较高的         Shapley  值, 表明其对于  BT  测试用例具有显著
   216   217   218   219   220   221   222   223   224   225   226