昇腾AI处理机_学习笔记一:Img2col 卷积加速算法

Img2col 卷积加速算法


一、Img2col是什么?

Img2col 通过矩阵乘法实现卷积的加速运算的方法,该方法被广泛应用在CPU、GPU等通用计算芯片上。同时在一些特定域结构(Domain Specific Architecture , DSA)上,比如华为的昇腾AI处理机中,使用了Img2col为需要进行卷积运算的矩阵进行了预处理。

二、CNN中的卷积运算

CNN(Convolutional Neural Network)网络中,相对于FCNN(Fully Connected Neural Network)网络引入了权重共享的概念。大大降低了神经网络运算过程中的参数量级。

以单通道输入的第一层卷积层为例,卷积核大小为33。第一层卷积运算需要对输入层的数据使用第一层卷积核(滤波器)进行卷积运算。输入层的矩阵可以很大,每一次卷积运算都只会针对输入层中一个33的区域(感受野)进行卷积运算。运算结束后通过移动卷积核位置(滑动步长)对下一个感受野进行卷积运算。每一次卷积运算会输出一个数据。当卷积核扫描完整个矩阵,则输出一个和输入相同长宽的矩阵(数据矩阵需要对边沿进行补零)。
卷积运算过程(昇腾AI处理器 架构与编程)

卷积运算过程动态示意图
可以发现,这个过程中,每一次矩阵运算只能对一个感受野中的输入数据进行运算,要运算完整个输入矩阵,需要多次卷积运算(多线程)。根据体系结构分析,整个输入矩阵在内存中保持的位置是连续的,如果缓存块(Cache line)不够大的话,一个感受野中的9个数据会被保持在不同的Cache line中,导致数据不连续,会频繁造成缓存缺失,导致产生较大的访存开销。这会严重拖慢处理器的运算速度。

三、Img2col对卷积运算加速

对于这个问题,已经有一些解决方法,比如使用FFT对卷积运算进行加速,或者更简单一点的方法是使用Img2col对输入数据进行预处理。
x1感受野
x2感受野
将输入矩阵的每一个感受野展开为一个9元素向量。如图中的X1、X2感受野。将所有感受野拉成的向量拼接组合成一个新的矩阵XI2C。

同理将卷积核也拉成9元素向量。图中该卷积核只有两个矩阵,所以只有两个9元素向量。将两向量拼接得到矩阵WI2C。

将偏置b也拉成同样的矩阵。可通过如下图的方式,实现用矩阵乘法实现卷积运算。对比同样使用同样的处理机进行运算。以每一行和列的运算为一个线程划分。

(1)如果直接进行卷积运算,每一个线程需要读取一个感受野中的数据、两个卷积矩阵的数据和1个偏置数据b。这个过程中,感受野数据由于在内存中不连续,每一个线程都会造成缓存缺失,导致线程堵塞,性能变差。

(2)如果对Img2col对输入矩阵进行预处理,则将卷积运算变为了行列乘加的矩阵乘。以矩阵XI2C的每一行与矩阵W12C的每一列之间的向量内积运算为一个线程。每个线程需要从内存中取出XI2C的一行数据、矩阵WI2C的一列数据和矩阵bI2C的一列数据。这里的所有数据在内存空间都是连续的。所以不会造成缓存缺失。所以运算速度加快。
Img2col 示意图
还能进一步改进,偏置b矩阵和矩阵XI2C合并,省略了一次矩阵的加法运算。进一步提升运算速度。
在这里插入图片描述

图片引用1:https://blog.csdn.net/weixin_42863507/article/details/106320968?spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-11.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-11.pc_relevant_aa&utm_relevant_index=15
图片引用2:昇腾AI处理器 架构与编程 第1章 基础理论

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值