【脉动阵列】

1.优点

    对于普通并行,数据同时到达,如果最大化共享,即16个PE的输入图像数据是同一份,那么很明显,必须在数据进入乘法器之前,同时将数据复制多份,分发给16个PE,或者说,同一份数据,需要同时驱动给16个PE。这会导致布局布线能力并且考验晶体管的驱动能力,导致频率降低。而脉动阵列一个乘法器只需要驱动相邻的乘法器,延迟大幅度降低, 频率可以达到很高。

   普通并行一个PE中的16个mul是同时计算的,那么,卷积的filter的尺寸大小,会强烈影响计算效率。
假设一个卷积需要的乘法计算次数为N,
如果N<16,那么一个PE可以一次就算出结果,但是会有16-N个mul资源浪费。可见N越小,越浪费。
如果N=16,那么最好了,PE不仅能够一次算出结果,还没有mul浪费。
如果N>16,那么不好意思,一次只能算16个乘法,剩下的N-16,留着下次再算,或者调用其他PE去计算。但是这样就会增加不同PE间的连接关系,控制逻辑非常复杂,造成设计难度增大。
所以,DianNao和NVDLA的扁平化结构,对filter的尺寸是非常敏感的。

而对于脉动阵列,它不受filter尺寸的大小的限制,不会有资源的浪费。

2.运算

   

这是一般矩阵的计算过程,对于卷积计算,需要把卷积矩阵转化为普通矩阵

X=[
1   2
3  4]
h= [
5   6
7  8]
其中,X是卷积核。

1 X的每一行生成一个小矩阵
第一行[1 2],
首先插入1,得[1 0],补的0的数量等于H的列数-1。这里,h的列数是2,故补2-1=1个0。
再右移一位插入2,得出第二行,得[10
2   1]
再右移一位得出第三行,得
[
1 0
2 1
0 2]。把这个等于H0。
第二行[3 4],同理得
H1=[
3 0
4 3
0 4]。
观察这个过程,明显是将上一行右移再插入新的值到第一个列从而得出下一行。
我们可以假设第0行是[0
 0],最后一行是[0 0]。
[
0 0
3 0
4 3
0 4
0 0
]就可以看到规律。

2 算出Toeplitz矩阵
A= [
H0  O
H1 H0
O  H1],其中O是一个由若干个0组成的小矩阵。
这个例子中,
A=
[
1 0 0 0
2 1 0 0
0 2 0 0
3 0 1 0
4 3 2 1
0 4 0 2
0 0 3 0
0 0 4 3
0 0 0 4
]

3 将h变为列向量,按照行的顺序来,得
[
5
6
7
8
]

4 将Toeplitz矩阵和列向量相乘,得
[
5
16
12
22
60
40
21
52
32
]
整理为矩阵得,
[
5 16 12
22 60 40
21 52 32
]。

下面来验证一下,
首先将卷积核旋转180度,得
[
4 3
2 1
]
从左上开始,滑动算点积,得
5*1= 5,
5*2+ 6*1 = 16,
6*2= 12,
5*3+7*1=22,
5*4+6*3+7*2+8*1=60,
。。。。。。
正确!!!

 

 

 

 

 

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值