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

张洪滨 等: AutoConfig: 面向深度学习编译优化的自动配置机制                                            2677


                 4.2.2    Im2Col 与 Broadcast 算法的特性分析
                    深度学习模型里的卷积层通常处理的是四维张量, 这些张量会带有                        batch、channel 和  feature 等维度. 设  N
                 表示  batch,   C  表示  channel,   F  表示  feature,   H i ×W i  、   H k ×W k  和  H o ×W o  分别表示张量二维切片中的输入、卷积
                 核和输出所对应的尺寸, 下面以数据排布形式为                  NCHW_FCHW    的卷积层为例      (即输入张量的数据排布为
                 NCHW, 卷积核张量的数据排布为          FCHW, 输出张量的数据排布为        NFHW), 对 Im2Col 与 Broadcast 两种算法做优
                 化分析.
                    Im2Col 算法首先通过     Im2Col 策略, 对卷积层的输入进行数据重排, 并对卷积核进行维度变换, 然后通过矩阵
                 乘法操作得到结果矩阵张量, 最后将该张量再进行维度变换恢复成卷积层的输出. 由于维度变换直接对张量进行
                 原地操作, 不涉及浮点计算和内存访问, 因此主要关注该算法的数据重排开销和矩阵乘法操作开销. 在数据重排的
                               NCH k W k H o W o  次迭代, 每次迭代会读取输入中的一个元素, 再存储到矩阵         B  中, 该部分的访存开
                 过程中, 需要进行
                 销为   2NCH k W k H o W o  , 不涉及计算开销. 在矩阵乘法操作中, 开销等价于    N  次固定规模矩阵乘法的开销. 设每次矩
                 阵乘法的两个输入矩阵和一个输出矩阵分别为                 A、B、C, 则  A  矩阵的行数   A row = F  , B  矩阵的行数  B col = H o W o  , A
                          A col = CH k W k  . 若采用针对矩阵乘法的  Broadcast 向量算法进行计算, 则一次向量化矩阵乘法的迭代次

                 矩阵的列数
                                1                             1                                       1
                 数为   FCH o W o H k W k   , 浮点运算指令个数为   FCH o W o H k W k   , 内存访问指令个数为   FCH k W k +3FCH o W o H k W k   ,
                                vs                            vs                                      vs
                          FCH k W k  条标量广播的特殊指令. 综合     Im2Col 策略和所有矩阵乘法操作, Im2Col 算法的总浮点运算
                 共需要用到
                                       1                                                        1
                 指令个数为    NFH o W o CH k W k   , 总内存访问指令个数为   2NCH k W k H o W o  +  NFCH k W k  +   3NFH o W o CH k W k   , 总共需
                                      vs                                                        vs
                 要用到   NFCH k W k  条标量广播的特殊指令.
                                                                                                      1
                    若直接采用     Broadcast 算法, 在朴素算法的基础上对内层循环        W o  进行向量化, 则迭代次数为      NFCH o H k W k W o   .
                                                                                                      vs
                                                                                       1
                 总浮点运算指令个数等于迭代次数, 内存访问指令个数为                   NFCH o H k W k  +   3NFCH o H k W k W o   , 标量广播的特殊指
                                                                                       vs
                 令使用次数为     NFCH o H k W k  .
                    对  Im2Col 算法和  Broadcast 算法的特性分析如表     2  所示. 可以看出, 当输入宽度     W o  较大时, Broadcast 算法在
                                          H o  较大时, Im2Col 算法的优化性能更好. 这是因为                        W o  所对
                 访存上更占优势. 而当输入高度                                                 Broadcast 算法直接对
                 应的内层循环进行向量化, 而         Im2Col 算法会通过将卷积层转换成矩阵乘法操作来对               CH k W k  所对应的内层循环进
                 行向量化. 所以在同样的向量化长度下, 虽然两种优化算法所需的浮点运算指令个数相同, 但是                             Im2Col 算法需要
                 花费额外的访存开销进行数据重排, 与此同时              Broadcast 算法需要花费较多的特殊指令执行开销. 在这种情况下便
                 需要优化分析模型基于输入尺寸对算法的选择做出合理的判断.

                                            表 2 Im2Col 与 Broadcast 算法的特性分析

                                                                                 Im2Col相对Broadcast的局部优化
                      分类                Im2Col算法                 Broadcast算法
                                                                                          加速比
                                                 1                         1
                 浮点运算指令个数             NFH o W o CH k W k       NFCH o H k W k W o           1
                                                 vs                        vs
                                                                                               1
                                  2NCH k W k H o W o NFCH k W k  +  NFCH o H k W k +    F +3FW o vs
                                             +
                 内存访问指令个数                         1                        1
                                     3NFH o W o CH k W k       3NFCH o H k W k W o                1
                                                  vs                       vs         2W o + F +3FW o
                                                                                                 vs
                  特殊指令个数                 NFCH k W k              NFCH o H k W k             H o

                 5   静态信息提取与动态开销测量
                    优化分析模型是      AutoConfig  可解释性的来源, 其准确性由静态信息的提取和动态开销的测量共同决定. 静态
                 信息提取阶段收集计算负载的尺寸信息和硬件平台数据, 旨在确定可配置参数的范围, 可以看作是对配置空间的
                 精化和剪枝, 从而降低调优开销. 动态开销测量阶段通过在指定优化平台上测量示例程序, 以最终确定对应计算、
   96   97   98   99   100   101   102   103   104   105   106