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

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


                 上选择   64  作为向量化长度是更优的参数配置, 但是根据表              7  和表  8, 该参数对  ARM Neon  平台来说并不是最优
                 的. 这说明采用较大的向量化长度不一定在每个平台上都能得到较好的执行性能, 还需要考虑硬件平台里                                   SIMD
                 寄存器个数和     Cache 容量的限制. 实践中发现, 在面向        AVX512  的硬件后端时,     {32,64,128} 是合适的参数项配置
                 范围. 而在面向    ARM Neon  的硬件后端时, 参数选择      {16,32,64} 可以得到理想的调优效果, 这反映了参数的可取范
                 围受硬件信息的约束        (举例而言, 不同平台有不同的指令向量长度. AVX512              的指令向量长度为       512  位, 而  ARM
                 Neon  的指令向量长度只有      128  位). 由此可见, 合理的参数配置能够提高算法选择的精确度, 同时提升代码的执行
                 性能.

                                  表 8 基于   ARM Neon  平台, 向量化长度为    64  时的最佳算法选择探究

                                           标量执行时间      Im2Col执行  Broadcast执行                 算法选择结果
                           卷积尺寸                                            实际加速比 预测加速比
                                               (ms)     时间 (ms)   时间 (ms)                      是否正确
                    (1×1536×7×7, 192×1536×1×1)  53       11.5       89.5      7.69    1.86        √
                    (1×192×7×7, 1536×192×1×1)  49.2      11.2       88.5      7.69    2.02        √
                     (1×48×30×30, 384×48×3×3)  461       19.9       192      10.00    1.28        √
                    (1×32×114×114, 96×32×3×3)  1 229     45.9       144       3.12    0.88        ×
                     (1×64×58×58, 64×64×3×3)   1 211     46.9       147       3.12    0.87        ×



                           Conv(1×64×58×58, 64×64×3×3)
                         卷积尺寸  Conv(1×192×7×7, 1536×192×1×1)
                          Conv(1×32×114×114, 96×32×3×3)
                          Conv(1×48×30×30, 384×48×3×3)
                         Conv(1×1536×7×7, 192×1536×1×1)
                                               0     200    400    600    800   1 000  1 200  1 400
                                                                    执行时间 (ms)
                                                            vs=64   vs=16   vs=1
                           图 4 ARM Neon  平台下不同向量化参数        vs 的  Broadcast 算法优化卷积的执行时间     (ms)

                 6.3   优化分析模型的最佳算法选择
                    为了验证    AutoConfig  进行算法选择的有效性, 首先基于硬件信息和动态开销求出                  Im2Col 相对于  Broadcast
                 的预测加速比. 预测加速比大于          1  表示在优化分析模型中       Im2Col 的执行性能优于     Broadcast, 此时  AutoConfig  会
                 选择  Im2Col 算法实施代码生成策略. 反之选择          Broadcast 算法实施代码生成策略. 然后在不同的硬件平台上基于
                 不同的配置参数, 分别显性指定          Im2Col 和  Broadcast 算法进行代码生成, 测量两种算法所得到优化代码各自的实
                 际执行时间, 计算出      Im2Col 相对于  Broadcast 的实际加速比, 最后在不同的卷积优化场景中            AutoConfig  的预测加
                 速比进行验证, 实验结果如表         6、表  7  和表  8  所示. 图  5  是在  AVX512  平台下, 确定最佳参数配置  vs=64  时的最佳
                 算法选择结果. 图     5  中计算得出了   Im2Col 和  Broadcast 算法的相对执行时间占比, 一个算法对应的柱形部分越短,
                 则该算法的性能与另一个算法相比越好, 此时选择该算法是最佳的策略.

                           Conv(1×64×58×58,64×64×3×3)
                        卷积尺寸  Conv(1×192×7×7, 1536×192×1×1)
                          Conv(1×32×114×114,96×32×3×3)
                           Conv(1×48×30×30,384×48×3×3)
                         Conv(1×1536×7×7,192×1536×1×1)
                                               0   10   20   30   40   50   60  70   80   90   100
                                                         不同算法优化卷积的相对执行时间占比 (%)
                                         Im2Col 算法执行时间占比     Broadcast 算法执行时间占比  AutoConfig 的算法选择
                                           图 5 不同算法优化卷积的相对执行时间占比
   101   102   103   104   105   106   107   108   109   110   111