Page 104 - 《软件学报》2024年第6期
P. 104

2680                                                       软件学报  2024  年第  35  卷第  6  期


                 块和循环顺序策略.

                 5.2   程序开销的动态测量
                    动态开销测量针对优化所在平台确定计算、访存和特殊指令开销的权重系数, 并传入优化分析模型来得到最
                 终的执行时间表达式. 为此, AutoConfig     维护了一个动态测量的程序集合, 其中的每个实例程序都体现了某一种程
                 序特性. 该集合允许用户进行删改和添加, 使得用户可以根据其优化需求来调整程序集合. AutoConfig                         提供的集合
                 能够覆盖大部分与性能有关的           MLIR  操作, 并且这些动态测量的示例程序都源自实际的测试和优化片段. 这些示
                 例程序的种类和迭代次数都是可配置的, 用户可据此定制合适的示例, 确保得到的测量值既准确又可靠, 从而避免
                 随机误差的影响.
                    本节以   Broadcast 向量化算法的开销表示为例阐述动态测量流程, 涉及的测量开销如表                   3  所示. 其中包括访存开

                 销  Cost Memory [vs] 、SIMD  计算开销  Cost FMA [vs] 和表示广播指令的特定操作开销  Cost Broadcast [vs] , 它们分别对应了优
                 化分析模型的     3  项权重系数   λ Arith  、  λ Memory  和  λ SpecIns  . 具体来说, 在  SIMD  浮点计算场景中,   λ Arith  是单条  FMA  指令
                                                          λ SpecIns  , 在对  Broadcast 向量化算法的分析中, 等价于单条广播
                 的执行时间,    λ Memory  则是单条访存指令的执行时间. 而
                                                              209
                 操作指令的执行时间, 因为该优化算法涉及的特殊指令只有广播指令. 其他优化算法中特殊指令也同理.

                                             表 3 Broadcast 向量化算法的开销表示

                     开销表示                  开销描述                               示例程序描述
                   Cost Memory [vs]  将  vs 个元素进行访存操作                    MemCopy示例程序的执行时间
                    Cost FMA [vs]  vs个数据进行融合乘加操作的开销              FMA示例程序与MemCopy示例程序执行时间的差分
                   Cost Broadcast [vs]  vs个数据进行广播操作的开销         BroadcastFMA示例程序与FMA示例程序执行时间的差分

                    为了量化这些开销, 本节使用动态测量程序集合中的特定子集在多个目标硬件平台上进行了实验. 其中访存
                 开销的测量选择内存拷贝示例程序, 其中包括使用向量方言的内存加载和存储指令. FMA                           开销的测量选择了      FMA
                 示例程序, 该程序结合了访存指令和融合乘加指令. 表示广播指令的特殊指令开销的测量选择了                                BroadcastFMA
                 的示例程序, 其中包括访存指令、广播指令和融合乘加指令. 以上示例程序均使用                           2  的  20  次方作为计算负载尺
                 寸, 计算负载迭代     10 000  次, 通过测量总的执行时间来确定         Cost Memory [vs]  、  Cost FMA [vs]  和  Cost Broadcast [vs]  的量化
                 数值.
                    表  4 是在  AVX512  平台下的实验测量结果, 从中可以看出, 访存指令开销               Cost Memory [vs] 平均为 FMA  指令开

                 销   Cost FMA [vs] 和表示广播指令的特定操作开销     Cost Broadcast [vs] 的  20  倍左右. 在同样的硬件平台下, 这里得出的开
                                             λ SpecIns  之间的比值是一致的, 因此这些数据可以为优化分析模型提供权重数
                 销比值与权重系数       λ Arith  、  λ Memory  和
                 值, 进而分析出整体算法的性能表现, 并选择合适的算法和配置进行代码生成.

                                         表 4 开销表示的测量结果 (ms/每        10 000  次迭代)

                      测量开销             vs=1       vs=16      vs=32       vs=64      vs=128      vs=256
                     Cost Memory [vs]  12 028.5   1 648      1 751.5     1 779.5    1 989.5     2 345.5
                     Cost FMA [vs]     644         70         142         83         102          52
                    Cost Broadcast [vs]  738       175                    204        303         154

                 6   实验设计、结果和分析


                    本节面向实际的深度学习计算负载场景, 在              AVX512  和  ARM Neon  两种  SIMD  平台上, 对  AutoConfig  的参数
                 配置及优化算法的选择进行探究, 并将基于分析模型的代码生成策略与                        TVM  的自动调优策略进行跨平台的性能
                 比较. 其中, 在第   6.2  节会探究向量化长度参数的选取对优化性能的影响, 指出基于不同硬件平台的特性来确定参
                 数配置的意义. 在第      6.3  节会利用硬件信息和动态开销数据来计算不同算法的预测加速比, 以验证                      AutoConfig  的
                 算法选择是否准确. 在第        6.4  节将  AutoConfig  与基于自动调优策略的     TVM  进行跨平台的代码生成性能比较.
   99   100   101   102   103   104   105   106   107   108   109