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 可解释性的来源, 其准确性由静态信息的提取和动态开销的测量共同决定. 静态
信息提取阶段收集计算负载的尺寸信息和硬件平台数据, 旨在确定可配置参数的范围, 可以看作是对配置空间的
精化和剪枝, 从而降低调优开销. 动态开销测量阶段通过在指定优化平台上测量示例程序, 以最终确定对应计算、