基于二维脉动阵列的矩阵乘法

发布于:2022-12-18 ⋅ 阅读:(425) ⋅ 点赞:(0)

脉动阵列,其核心概念是让数据在运算单元的阵列中进行流动,减少访存的次数,并且使得结构更加规整,布线更加统一,提高频率。

二维脉动阵列

二维脉动阵列即如下图片所示,阵列了N*M的二维PE单元,单元间有连线用于数据流动,如下是将数据每次向下向右传递。下图中右侧为一个PE计算单元,完成 的一个函数计算,并继续向外传递数据。

在这里插入图片描述

二维脉动阵列实现矩阵乘法

矩阵乘法

例子 X ∗ W = Y X * W=Y XW=Y

[ X 11 X 12 X 13 X 21 X 22 X 23 X 31 X 32 X 33 X 41 X 42 X 43 ] ∗ [ Y 11 Y 12 Y 13 Y 21 Y 22 Y 23 Y 31 Y 32 Y 33 ] = [ U 11 U 12 U 13 U 21 U 22 U 23 U 31 U 32 U 33 U 41 U 42 U 43 ] \left[\begin{array}{llll} X_{11} & X_{12} & X_{13} \\ X_{21} & X_{22} & X_{23} \\ X_{31} & X_{32} & X_{33} \\ X_{41} & X_{42} & X_{43} \end{array}\right] *\left[\begin{array}{llll} Y_{11} & Y_{12} & Y_{13} \\ Y_{21} & Y_{22} & Y_{23} \\ Y_{31} & Y_{32} & Y_{33} \end{array}\right]=\left[\begin{array}{llll} U_{11} & U_{12} & U_{13} \\ U_{21} & U_{22} & U_{23} \\ U_{31} & U_{32} & U_{33} \\ U_{41} & U_{42} & U_{43} \end{array}\right] X11X21X31X41X12X22X32X42X13X23X33X43Y11Y21Y31Y12Y22Y32Y13Y23Y33=U11U21U31U41U12U22U32U42U13U23U33U43

定义PE计算单元

定义PE单元的连线与计算如下:从上输入Y,从左输入X,然后做累加运算保存到寄存器,向右输出X,向下输出Y

在这里插入图片描述

二维脉动阵列矩阵乘运算步骤

将X Y矩阵从二维脉动阵列的左侧和上方输入,然后不断的将每个阵列内部的接受到的数据向下向左继续传递。

\1. 将数据按照如下格式排列好准备向右向下输入,PE阵列单元初始化为0初始值

0 0 Y33
0 Y32 Y23
Y31 Y22 Y13
Y21 Y12 0
Y11 0 0
0 0 0 X13 X12 X11 U11 U12 U13
0 0 X23 X22 X21 0 U21 U22 U23
0 X33 X32 X31 0 0 U31 U32 U33
X43 X42 X41 0 0 0 U41 U42 U43

\2. 周期1,向右向下移动数据输入到PE阵列单元的输入侧

0 0 Y33
0 Y32 Y23
Y31 Y22 Y13
Y21 Y12 0
0 0 0 X13 X12 U11 = X11*Y11 U12 U13
0 0 X23 X22 X21 U21 U22 U23
0 X33 X32 X31 0 U31 U32 U33
X43 X42 X41 0 0 U41 U42 U43

\3. 周期2,向右向下移动数据继续输入数据到PE阵列单元的输入侧,PE阵列中向下想右传输寄存的上一周期输入的数据

0 0 Y33
0 Y32 Y23
Y31 Y22 Y13
0 0 0 X13 U11 = X11Y11 + X12Y21 U12 = X11*Y12 U13
0 0 X23 X22 U21 = X21*Y11 U22 U23
0 X33 X32 X31 U31 U32 U33
X43 X42 X41 0 U41 U42 U43

\4. 周期3,向右向下移动数据

0 0 Y33
0 Y32 Y23
0 0 0 U11 = X11Y11 + X12Y21 + X13*Y31 U12 = X11Y12+X12Y22 U13 = X11*Y13
0 0 X23 U21 = X21*Y11 + X22 * Y21 U22 = X21*Y12 U23
0 X33 X32 U31 = X31 * Y11 U32 U33
X43 X42 X41 U41 U42 U43

如此一直向下向右移动X,Y数据,直到X43和Y33都已经到达了U43计算单元完成了最后的累加计算,输出整个PE阵列的值即可, 对应的即结果矩阵的每一个值。

OTHER

如上可以观察到我们的X,Y矩阵都是流动进入PE阵列,我们还可以做如下一些改变实现二维脉动的其他计算:

• PE阵列的单元事先有初始值,非0,然后流动数据进入

• 固定一个数据如X,只流动Y进入

• PE计算单元做更复杂的计算

• 流出数据x,y是处理过后的,非流入原始值

脉动阵列的特点:

• 每个PE只与其邻近的PE进行通信,PE之间的通信具有局部性,而且通信是规则的

• 每一个PE都是相同的,但个别也可以不同

• 通过时钟激励统一处理

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到