文章目录
- 题目:Optimizing the Convolution Operation to Accelerate Deep Neural Networks on FPGA
- 时间:2018
- 期刊:IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS
- 研究机构:Arizona State University
1 缩写 & 引用
2 abstract & introduction
这篇论文重点在于分析三种loop优化策略,根据设计不同的参数量化accelerator的指标,并实现了对应的硬件结构
循环的三种优化方法: 展开、tile、interchange
3 acceleration of convolution loop
存储分成了三层架构:片外资源、片上资源、寄存器
跟循环相关的各项变量如图
3.1 循环展开
和他本人的另一篇论文很像,循环一共分成四层,可以分开展开,分别对应不同的物理意义和硬件结构,也相对应复用不同的数据
-
展开loop1:同一个kernel的不同位置的数据一起计算,结果加起来,比如说kernel大小是4x4,每次可以算2x2 kernel的值,一共四次可以算完
-
展开loop2: 把input channel展开,都对应了(x,y)相同的位置,算完加起来
-
展开loop3:这相当于weight被复用了,同一个weight同时和多个不同位置的input feature元素相乘,得到多个部分和
-
展开loop4:展开输出channel,相当于输入复用了,同一个input feature的元素和多个不同kernel相乘,得到多个部分和
3.2 循环tiling
对于一个feature map可能比较大,就需要切割成小块,这样能放到片上缓存
3.3 循环interchange
应该内外循环交换,有两种loop order
- intratile loop order:片上缓存到PE的数据流动
- intertile loop order:片外到片上数据流动
4 analysis on design objectives of CNN accelerator
4.1 计算延时
延时就总的乘法次数除以乘法器个数
5 CNN硬件结构
- 题目:Performance Modeling for CNN Inference Accelerators on FPGA
- 时间:2019
- 期刊:TCAD
- 研究机构:亚利桑那州立大学Yufei Ma
1 abstract & introduction
类似上一篇论文,不过这篇专注于建模与设计空间探索,主要贡献包括:
- formulated design objectives和resource costs
- 用于估计吞吐、片上buffer、片外存储读写次数的性能模型、
- 对应的设计空间探索&FPGA实现
2 卷积计算方法
如下图所示,PE数量为Pox * Poy * Pof,同时设定Tkx=Nkx、Tky=Nky、Tif=Nif,这样部分和可以直接累加
so that the partial sum can be consumed inside the MAC unit without saving in the buffer
同时设定Tix=Nix,Tox=Nox
To ensure that the DRAM accesses are from continuous addresses, the entire row of the feature map is buffered
这样变量只有Toy和Tof
3 性能模型
3.1 计算延时
每一层卷积的乘法数量是:
每一层卷积的计算周期数为:
这篇论文中,每层网络的输入输出都要存回片上,所以每层都有DRAM传输的时间
Since the dual buffering pipeline is only within one layer with the current design choice
所以这里一共有三种情况:
- 只有一个tile,一次就能计算所有的结果
- 多个tile,但权重全部缓存
- 多个tile,权重不能全部缓存
其他层的情况:
3.2 片上缓存
输入特征图缓存:
权重缓存:
输出特征图缓存
- 题目:Automatic Compilation of Diverse CNNs Onto High-Performance FPGA Accelerators
- 时间:2019
- 期刊:TCAD
- 研究机构:亚利桑那州立大学Yufei Ma
1 abstract & introduction
**本篇论文的主要贡献:**基本就是在上面两项基础上的完善,包括
- 双buffer结构
- 增加concat层以支持GoogLeNet和Inception
- BN融合
- 补充了非常多的实验