文献阅读 | Eyeriss

作者:

Yu-Hsin Chen; Vivienne Sze

机构:

MIT

Conf/Jour:

ISCA

时间:

2016

目录

Summary

Basis

加速器概貌

卷积中的复用机会

现有数据流分类

提出的RS dataflow


Summary

提出了一种新颖的数据流,称为行固定(RS,它可以最大程度地减少空间体系结构上数据移动的能耗。这是通过在高维卷积中利用卷积核和特征图像素(即**)的重用,并最大限度地减少部分和累加的数据移动来实现的。

Basis

加速器概貌

文献阅读 | Eyeriss

 

主要包括4级存储:DRAM;global buffer;PE间通信用的缓存fifo;PE内部的寄存器堆。

Typically,global buffer大小在100-300kB左右;RF大概在1kB以下。

卷积中的复用机会

文献阅读 | Eyeriss

 

  • 卷积复用convolutional reuse:weight可以被复用E*E次。Ifmap可以被复用R*R次。(由卷积操作带来的复用机会)
  • Filter reuse:一个filter可以被复用N次,batch size;
  • Ifmap reuse:ifmap可以被复用M次。

现有数据流分类

1. weight stationary

权重分散在不同的PE里面,可以被复用E*E次*N batch次。R*R个PE,ifmap broadcast到每个PE,部分和是通过这些PE的结果进行累加得到。不同卷积核的R*R个权重要么可以多用PE进行排列,要么放在一组PE上按时间不同使用。

2. output stationary

ofmap中的一个pixel固定在一个PE中,存在PE中的RF里面用于累加,从而减小了psum累加的开销。

可以分为:多个输出channel(MOC) or 1个输出channel(SOC);多个输出pixel(MOP)和SOP。常见组合包括有:

  • SOC+MOP: 主要被用于卷积层。每次关注一张输出特征图。这里利用了convolutional reuse。
  • MOC+MOP: 进一步利用了convolutional reuse和ifmap reuse;
  • MOC+SOP: 主要被用于FC层,利用了ifmap reuse。

3. No Local Reuse dataflow(NLR)

不在PE中RF层面挖掘数据复用;利用的是inter-PE 的ifmap和psum通信中的复用机会。

NLR把PE分为不同的组,同组PE读取相同的ifmap,用的同一channel in 的不同channel out 的权重。不同组PE读取不同channel in 的ifmap。Psum是在不同PE group间累加的。

提出的RS dataflow

以上数据流目标是:最大化某种reuse或减少psum累加开销,但是并没有同时考虑这2个因素。RS dataflow把高维的卷积差分成1d 卷积:每个primitive包括1行权重和一行input,每primitive被映射到1个PE。因此在PE的RF上增加了convolutional reuse和ifmap reuse。

文献阅读 | Eyeriss

 

  • Step 1: logical mapping

1个1D primitive映射到一个logical PE,由于在逻辑PE阵列中计算2D卷积的PE之间存在很大的空间局部性locality,因此我们将它们组合在一起作为逻辑PE set, 如下图。

文献阅读 | Eyeriss

 

Ps:此时ifmap中的元素被复用3次,PE1,2 负责的是ifmap向下移动一行的计算;PE2,1负责的是第二行weight的计算,一列上的pe的psum累加可以得到output。

Logic PE set有多少个呢?根据卷积核size R,ofmap的高度E决定的,共需要N*M*C个logic PE set。(一个set是负责一个平面的2d卷积)

  • Step 2: physical mapping

除了PE set内部的复用之外,PE set间还存在复用机会:相同filter可以被N set复用,相同的ifmap可以被M set复用,C个set 的psum可以累加起来。

因此采用folding操作,把相同位置上的不同set的PE进行折叠,利用到了ifmap的复用和psum累加的复用。

第一阶段folding: 在三个维度(即N,M和C)中的每一个维度上折叠和空间映射的逻辑PE的确切数量分别由RF大小和物理PE阵列大小确定。 然后,通过使用第VI-C节中的框架评估结果来确定最佳折叠成为优化问题。

第二阶段folding: global buffer用于进一步挖掘复用,这一阶段生成的最优折叠方案由global buffer决定。