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

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


                 少, 各测试用例的归一化最优执行时间均保持在较为稳定的水平, 并且大多数测试用例经过迭代后均获得了性能
                 提升. 与仅使用-O3    优化相比, 加速比最高达到了         1.25 (在使用  LLVM  编译器处理   CG  测试用例的第     3  轮迭代中),
                 这进一步证明了基于        SHAP  的选项分析及筛选算法的稳定性和有效性. 同时, 不同编译器的调优效果表现出较为
                 明显的差异: GCC    编译器在不同迭代间显示出较大的性能波动, 而                LLVM  编译器则表现得更加稳定. 这种现象可
                 能是由于编译器的设计理念和技术实现不同所导致的. 具体来说, GCC                     可能采用了更多依赖于特定上下文的优化
                 技术, 导致在不同迭代中的性能结果差异较大; 而               LLVM  可能使用了更为独立且通用的优化方法, 因此在迭代间
                 维持了更高的性能一致性. 特别地, CG          测试用例使用      LLVM  编译器的调优效果      (20.63%) 显著优于   GCC  编译器
                 (8.05%). 通过分析选项筛选过程能够发现, -ffast-math 选项在       LLVM  编译器的多轮迭代中始终保持较高的             Shapley
                 值. 对于  swLLVM  编译器, -ffast-math  是一个需要显式启用的集合选项, 其通过放宽严格的             IEEE-754  浮点运算规
                 则限制, 允许编译器进行一系列激进的优化, 包括循环展开、指令重排、乘加融合等. 而在当前的                              swGCC  编译器
                 实现中, -O3  基准优化级别已启用了部分浮点运算优化, 因此受-ffast-math            选项的影响较小.


                         250                                    120
                                    Iter0  Iter1  Iter2  Iter3              Iter0  Iter1  Iter2  Iter3
                         200                                    100
                                                                 80
                        选项数量  150                              选项数量  60
                         100

                          50                                     40
                                                                 20
                          0                                       0
                             BT  CG  EP  FT  IS  LU  MG  SP          BT  CG  EP  FT  IS  LU  MG  SP
                                      (a) GCC 编译选项                           (b) LLVM 编译选项

                                  图 14 NPB  测试集在调优过程的不同迭代阶段应用的编译选项数量



                            表 6 NPB  测试集调优过程中不同迭代阶段的最优归一化执行时间                    (以-O3  为基准)

                   测试               GCC归一化最优执行时间                           LLVM归一化最优执行时间
                   用例        Iter0    Iter1     Iter2     Iter3     Iter0     Iter1     Iter2     Iter3
                    BT      0.913 6  0.927 6   0.905 8   0.902 4   0.963 2   0.960 6   0.959 2   0.959 9
                    CG      0.919 5  0.943 8   0.968 5   0.937 8   0.794 6   0.794 1   0.793 7   0.793 8
                    EP      0.956 9  0.959 9   0.960 2   0.959 5   0.985 6   0.985 6   0.985 2   0.985 2
                    FT      0.921 6  0.988 3   0.929 9   0.902 2   0.906 3   0.906 6   0.905 8   0.906 3
                    IS      0.812 3  0.812 4   0.813 9   0.811 8   0.991 0   0.991 0   0.990 4   0.990 6
                    LU      0.967 6  0.948 3   0.926 4   0.930 2   0.986 4   0.985 9   0.985 9   0.983 4
                    MG      0.954 0  0.959 6   0.967 9   0.965 8   0.914 2   0.913 7   0.914 6   0.913 5
                    SP      0.969 2  0.957 7   0.962 6   0.963 5   0.987 4   0.985 2   0.987 9   0.988 0

                  4   结束语

                    本文设计并实现了一款名为           SWTuner 的新型编译调优框架, 该框架整合了分布式元搜索策略与先进的机器
                 学习技术, 旨在解决传统编译调优方法在处理复杂优化选项组合时所面临的局限性. SWTuner 通过引入                                AUC-
                 Bandit 分布式元搜索策略, 有效地降低了编译和运行过程的时间开销, 从而提高了搜索效率. 此外, SWTuner 利用
                 随机森林模型对编译选项与程序性能之间的关系进行了建模, 并将其应用于元搜索过程中, 从而减少了实际执行
                 的功耗开销. 通过引入       Shapley  值及其交互值来评估编译选项的重要程度及相关性, SWTuner 能够在确保调优效
                 果的同时, 显著降低搜索空间的维度. 实验结果表明, 在神威新一代超级计算机上对                         NPB  基准测试用例进行的调
                 优中, 相比于其他主流调优方法或工具, SWTuner 在提升搜索效率的同时显著降低了功耗开销. 通过分析和筛选对
                 程序性能影响显著的选项, SWTuner 还能够进一步地指导应用算法及编译优化的改进.
   218   219   220   221   222   223   224   225   226   227   228