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 不同算法优化卷积的相对执行时间占比