一种矩阵块间提前切换的脉动阵列优化方法及装置制造方法及图纸

技术编号:35780583 阅读:9 留言:0更新日期:2022-12-01 14:25
本发明专利技术公开了一种矩阵块间提前切换的脉动阵列优化方法及装置,本发明专利技术包括根据脉动阵列的规模,将输入矩阵A、输入矩阵B和结果矩阵C进行分块,初始化分块编号i为0;采用两个寄存器来依次加载矩阵B的连续分块,使得在输入矩阵B的第i个分块B

【技术实现步骤摘要】
一种矩阵块间提前切换的脉动阵列优化方法及装置


[0001]本专利技术涉及脉动阵列,具体涉及一种矩阵块间提前切换的脉动阵列优化方法及装置。

技术介绍

[0002]最近十多年里,深度学习驱动人工智能经历了一场学术和工业复兴,深度神经网络(DNN)极大地推进了计算机视觉、图像处理、语音识别等应用的发展,并交叉融合在众多应用和学科领域中。其中,递归神经网络(RNN)、长期短期记忆(LSTM)和卷积神经网络(CNN)占据了95%的数据中心需求,而这3种类型的神经网络通常都是转化为通用矩阵乘(GEMM)进行运算。在所有提出的DNN加速器体系结构中,脉动阵列(SA,Systolic Array)因为其操作数的移动仅出现在相邻两个PE(Processing Element)之间,使得其结构规整、控制简单并且可以提供极高的计算密度(高吞吐和低面积),从而在工业界(例如Google TPU ASIC、Xilinx FPGA overlays xDNN)和学术界被广泛采用。
[0003]在脉动阵列执行矩阵乘运算时,片上缓冲通常不足以存放完整的输入矩阵,因此需要在片下对其分块。脉动阵列大都会采用片上双缓冲的结构,使得下一组片下矩阵分块的数据准备延时隐藏在当前组矩阵分块的计算过程中,从而使得脉动阵列的数据准备没有气泡。而对于加载到片上缓冲的矩阵,还需要根据脉动阵列的PE行/列数对其自动分块,并且在运行过程中频繁的进行片上块间矩阵的切换。
[0004]传统的脉动阵列单拍输入的数据量通常为2O(O为脉动阵列的PE行/列数),输出的数据量通常为O。数据进入脉动阵列之后按照一定的方向流动直到流出,因此在填满SA和清空SA的过程中会出现一定的流水线启动和排空开销(且与MAC延时正相关)。对于支持训练的脉动阵列加速器,为了保证精度往往会采用支持浮点乘加运算的MAC单元,其计算延迟通常在4到6拍,脉动阵列流水线的启动和排空开销较大。并且现有的脉动阵列总是在完成了当前片上分块矩阵的计算后才切换至下一块片上分块矩阵,在运行过程中会频繁的出现大量PE空闲,PE利用率低下。因此,对于支持浮点运算的高性能脉动阵列,如何隐藏脉动阵列的启动和排空开销显得尤为重要。
[0005]脉动阵列是一种由O行、O列PE组成的二维阵列,相邻的PE之间相互连接用于数据传递,如图1中灰色阴影所示。其中,每个PE中又包含一个寄存器用于存放静态矩阵,和一个计算延时为R的MAC单元,用于乘加运算。因为其纯数据流的精简控制、极高的计算密度和数据复用等被广泛的用于GEMM相关运算。
[0006]在执行通用矩阵乘运算Y=AB+C时,需要首先确定静态矩阵A、B或者C,并将其提前加载到脉动阵列中,剩下的两个矩阵作为动态矩阵分别从左至右和从上至下流入脉动阵列,并在PE的行和列之间每拍向右和每R拍向下流动。因此,根据静态矩阵选择的不同,共有三种数据流结构:IS(Input Stationary,A为静态矩阵)、WS(Weight Stationary,B为静态矩阵)和OS(Output Stationary,C为静态矩阵)。并且脉动阵列的性能和能效由数据流结构、脉动阵列的参数(例如PE数量、MAC延时)和输入矩阵规模共同决定。对于MAC延时大于1
的脉动阵列,OS的设计复杂且效率不高,本文不予讨论;WS因为对B矩阵的高效复用而被现代处理器广泛采用,因此本文将以WS为例进行分析,但其结论对IS同样适用。
[0007]在执行矩阵乘运算时,由于片上存储资源有限,需要提前在片下对输入矩阵进行分块(为了和片上分块区分,我们称片下的这种分块为片下分块),然后将分块矩阵搬移到片上参与运算,如图1所示。其中,原始矩阵A(A

offchip)由M行K列进行分块,原始矩阵B(B

offchip)由K行N列进行分块,原始矩阵C(C

offchip)由M行N列进行分块。A

onchip、B

onchip、C

onchip表示第一组搬移到片上缓冲参与运算的片下分块矩阵,后文分别用A、B、C表示。对于搬移到片上缓冲中的片下分块矩阵A、B、C,还需要根据脉动阵列SA的规模(O
×
O)进行片上自动分块(后文简称分块)。其中,A、C、Y的分块规模为M
×
O,B的分块规模为O
×
O。特别的,当K不为O的整数倍时,B矩阵最后一行分块的行(也即A矩阵最后一列分块的列)为小于O;当N不为O的整数倍时,B矩阵最后一个列分块的列(也即C矩阵最后一列分块的列)为小于O。
[0008]以A
i
、B
i
、C
i
分别表示A、B、C矩阵第i次参与计算的分块,M
i
×
K
i
、K
i
×
N
i
、M
i
×
N
i
分别表示分块矩阵A
i
、B
i
、C
i
的规模,Y
i
的中间结果更新至C
i
中,C
i
的最后一次计算结果即为Y
i
的最终结果,运算过程如下式所示:
[0009][0010]脉动阵列SA是一种典型的以数据流驱动的结构,在数据填满脉动阵列SA中的处理单元PE时,处理单元PE利用率达到最高,但由于输入/输出带宽的限制,输入矩阵在流入脉动阵列SA和结果矩阵在流出脉动阵列SA时,会出现大量的处理单元PE空闲,导致处理单元PE利用率降低。同时,由式(1)可知,在计算片上分块Y=AB+C的过程中,会频繁的进行块间矩阵的切换,从而出现大量的脉动阵列SA填充和排空开销,造成PE资源浪费。

技术实现思路

[0011]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种矩阵块间提前切换的脉动阵列优化方法及装置,本专利技术能够减少脉动阵列进行通用矩阵乘运算时的数据等待时间,提升脉动阵列的处理性,增加的面积开销几乎可以忽略,具有很好的可扩展性。
[0012]为了解决上述技术问题,本专利技术采用的技术方案为:
[0013]一种矩阵块间提前切换的脉动阵列优化方法,包括:
[0014]S101,根据脉动阵列的规模,将输入矩阵A、输入矩阵B和结果矩阵C进行分块;
[0015]S102,采用两个寄存器来依次加载矩阵B的连续分块,使得在输入矩阵B的任意第i个分块B
i
全部使用完成、开始使用输入矩阵B的第i+1个分块B
i+1
时提前将输入矩阵B的第i+2个分块B
i+2
加载到两个寄存器中;且在使用输入矩阵B的第i个分块B
i
时,将输入矩阵A和结果矩阵C中对应的分块流入脉动阵列以参与通用矩阵乘运算。
[0016]可选地,步骤S102中采用两个寄存器来依次加载矩阵B的连续分块包本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种矩阵块间提前切换的脉动阵列优化方法,其特征在于,包括:S101,根据脉动阵列的规模,将输入矩阵A、输入矩阵B和结果矩阵C进行分块;S102,采用两个寄存器来依次加载矩阵B的连续分块,使得在输入矩阵B的任意第i个分块B
i
全部使用完成、开始使用输入矩阵B的第i+1个分块B
i+1
时提前将输入矩阵B的第i+2个分块B
i+2
加载到两个寄存器中;且在使用输入矩阵B的第i个分块B
i
时,将输入矩阵A和结果矩阵C中对应的分块流入脉动阵列以参与通用矩阵乘运算。2.根据权利要求1所述的矩阵块间提前切换的脉动阵列优化方法,其特征在于,步骤S102中采用两个寄存器来依次加载矩阵B的连续分块包括:S201,初始化分块编号i为0;S202,判断分块编号i对2进行模运算的结果为0是否成立,若成立则将输入矩阵B的第i个分块B
i
加载到寄存器B

reg0,否则跳转S206;S203,判断输入矩阵B的第i个分块B
i
是否全部使用完成,若尚未全部使用完成,则跳转S203继续判断;否则,计算输入矩阵B的第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
,跳转S204;S204,判断输入矩阵B的第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
是否等于0,若不等于0,则将输入矩阵B的第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
自减,跳转S204继续判断;否则,跳转S205;S205,将分块编号i的值加2;若分块编号i小于输入矩阵B的分块数量,则跳转S202;否则结束并退出;S206,将输入矩阵B的第i个分块B
i
加载到寄存器B

reg1;S207,判断输入矩阵B的第i个分块B
i
是否全部使用完成,若尚未全部使用完成,则跳转S207继续判断;否则,计算输入矩阵B的第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
,跳转S208;S208,判断输入矩阵B的第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
是否等于0,若不等于0,则将输入矩阵B的第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
自减,跳转S208继续判断;否则,跳转S209;S209,将分块编号i的值加2;若分块编号i小于输入矩阵B的分块数量,则跳转S202;否则结束并退出。3.根据权利要求2所述的矩阵块间提前切换的脉动阵列优化方法,其特征在于,所述第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
的计算函数表达式为:或者所述第i+2个分块B
i+2
的开始加载时刻T
B(i+2)
的计算函数表达式为:T
B(i+2)
=[R
×
(K
i

1)+N
i
]

K
i
,其中,T
B(i+2)
为第i+2个分块B
i+2
的开始加载时刻,R为通用矩阵乘计算部件的延时,N
i
为第i个分块B
i
的列数。4.根据权利要求1所述的矩阵块间提前切换的脉动阵列优化方法,其特征在于,步骤S102中参与通用矩阵乘运算的函数表达...

【专利技术属性】
技术研发人员:文梅鞠鑫曹亚松冯静杨建超汤珉琎杨韧禹汪志沈俊忠康宇晗方亚豪黄浩岚李宇航
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1