一种矩阵计算器及基于该矩阵计算器的全连接层计算方法技术

技术编号:27974554 阅读:19 留言:0更新日期:2021-04-06 14:08
本发明专利技术提出一种矩阵计算器及基于该矩阵计算器的全连接层计算方法,矩阵计算器包括H行W列乘累加单元,乘累加单元包括乘法器和累加器,在每行乘累加单元上设置一加法树和一行累加寄存器,该加法树用于计算该行乘累加单元当前计算结果的和,并将当前和累加到行累加寄存器;矩阵计算器设置有第一控制电路,用于控制每行的加法树和行累加寄存器在结果矩阵仅有一行或一列时工作;矩阵计算器设置有第二控制电路,用于禁用乘累加单元中的累加器。本发明专利技术提出的矩阵计算器能够高效实现矩阵乘法,尤其是结果矩阵有一个维度比较小的情况,例如在结果矩阵仅有一行或一列的情况下,本发明专利技术可以高效利用硬件乘法器阵列,达到提高计算效率的作用。

【技术实现步骤摘要】
一种矩阵计算器及基于该矩阵计算器的全连接层计算方法
本专利技术涉及集成电路
,尤其是一种矩阵计算器及基于该矩阵计算器的全连接层计算方法。
技术介绍
矩阵乘法是线性代数中的最基本操作,在图像处理、人工神经网络、深度学习等领域,都得到普遍应用。尤其在深度学习领域,大部分运算都转换为矩阵乘法运算。对于卷积层,将卷积核展开,参与卷积运算的输入层也展开,卷积运算可转换为普通的矩阵运算。矩阵运算需要大量重复的乘累加计算,需要读入大量数据,并将大量计算结果写出。传统CPU一个周期通常只能进行一次乘法计算,不适合矩阵乘法这种计算密集型算法。针对矩阵运算,人们设计出各种硬件加速电路,常用方法是使用乘累加单元阵列进行计算,图1为一种常见的乘累加阵列排列方式,其中一个MAC代表一个乘累加器件。图1所示矩阵计算器可进行D=A*B+C类型的计算,矩阵计算器的每行输入左矩阵A对应行数据,每列输入右矩阵B对应列数据。每个计算周期,每行输入一个新数据,新数据广播到该行的所有乘累加单元;同时,每列输入一个新数据,新数据广播到该列的所有乘累加单元,每个乘累加单元对其行方向和列方向上收到的数据进行乘法计算,并累加到本地乘累加结果寄存器。当左矩阵A的所有行数据全部输入矩阵计算器时,右矩阵B的所有列数据也应全部输入矩阵计算器,即左矩阵A每行的数据个数应等于右矩阵B每列的数据个数。此时,每个乘累加单元存储着结果矩阵的一个结果。当然,若矩阵A的行数大于矩阵计算器的行数和/或矩阵B的列数大于矩阵计算器的列数,则需对矩阵A和/或B进行分块计算,再分多次将结果计算出来。例如,若矩阵A的行数为M,列数为N,矩阵B的行数为N,列数为K,矩阵计算器的行数为H,列数为W,则完成一次A*B运算至少需要个周期,当M、K比较小,而N比较大时,该矩阵计算器的加速性能不理想。全连接层是深度学习模型中最常见的层之一,例如基于深度学习的图像识别模型中,最后一层基本都是全连接层,全连接层的输出个数与待识别的物体种类数量相等(若待分类物体包含10类,则全连接层应有10个输出),通过softmax函数计算后,代表图像为某一类图像的概率。全连接层同样可以转换为矩阵计算,若深度学习模型的最后一层包含N个元素,倒数第二层包含M个元素,则全连接层的计算相当于计算一个N行M列矩阵与一个M行1列矩阵的乘积,或一个1行M列矩阵与一个M行N列矩阵的乘积。对于这种矩阵计算,图1所示矩阵计算器只能利用阵列中的一列或一行,而全连接层转换为矩阵计算后,必然有一个矩阵只有一行或一列,这就使得图1所示矩阵计算器用于全连接层计算的效率不高,若矩阵计算器包含H行W列乘累加单元,则利用率至多为1/H或1/W。对于全连接层,结果矩阵只是一个向量,无论结果矩阵是行向量还是列向量,M或K必然有一个为1,即该矩阵计算器实际起到作用的乘法器只有1行或1列,因此,图1所示传统矩阵计算器不适合深度学习模型中全连接层的计算。
技术实现思路
针对现有矩阵计算器存在的不足之处,本专利技术提出一种矩阵计算器及基于该矩阵计算器的全连接层计算方法,提高其计算效率。一种矩阵计算器,包括H行W列乘累加单元,乘累加单元包括乘法器和累加器,乘累加单元用于接收行方向和列方向上输入的数据,进行乘法计算,并通过内部累加寄存器进行累加计算;在每行乘累加单元上设置一加法树和一行累加寄存器,该加法树用于计算该行乘累加单元当前计算结果的和,并将当前和累加到行累加寄存器;矩阵计算器设置有第一控制电路,用于控制每行的加法树和行累加寄存器在结果矩阵仅有一行或一列时工作;矩阵计算器设置有第二控制电路,用于禁用乘累加单元中的累加器。进一步的,通过H行W列乘累加单元计算一个M行N列矩阵与一个N行1列矩阵的乘积,其中M>H、N>W,包括以下步骤:步骤1,通过第一控制电路控制所有行的加法树和行累加寄存器工作,通过第二控制电路禁用所有乘累加单元中的累加器;步骤2,将左矩阵以H行为单位进行分块,每轮计算一个分块子矩阵与右矩阵的乘法结果,最多轮,完成整个矩阵乘法运算,每轮计算过程为:步骤2.1,每轮向矩阵计算器送入H行左矩阵数据,每行数据从行方向送入对应行的乘累加单元中,每行N个数据分配在同行的W个乘累加单元上,每个乘累加单元最多分配个数据;步骤2.2,与步骤2.1相对应的,每轮向矩阵计算器的每一行从列方向送入右矩阵的1列N个数据,N个数据分配在同行的W个乘累加单元上,每个乘累加单元最多分配个数据;步骤2.3,每轮的每个周期,乘法累加器的行方向与列方向上均仅送入1个数据,每个周期内,矩阵计算器中的每个乘法累加器对行方向与列方向送入的数据进行乘法运算,然后加法树对同行乘法器的计算结果进行全加,并与行累加寄存器中的上一次累加结果进行求和,并将求和结果更新至行累加寄存器;最多经过个周期,得到一个分块子矩阵与右矩阵的乘法结果,乘法结果为一个H行1列的矩阵。进一步的,若M为H的整数倍,N为W的整数倍,则每轮计算过程为,向矩阵计算器的H行乘法器对应送入H行左矩阵数据,每行W个乘法器依次送入左矩阵对应行的第个数据、第个数据、第个数据、……、个数据;向矩阵计算器的H行乘法器对应送入1列右矩阵数据,每行W个乘法器依次送入右矩阵第1列第个数据、第个数据、第个数据、……、第个数据;每个周期向每个乘法器送入1个数据,每轮每个乘法器接收个数据需个周期;每个周期,每个乘法器对行方向和列方向送入的数据进行乘法运算,然后加法树对同行乘法器的计算结果进行全加,并与行累加寄存器中的上一次累加结果进行求和,并将求和结果更新至行累加寄存器,经过周期,每个行累加寄存器中存储的累加值即为左矩阵其中一行与右矩阵第1列相乘的结果。本专利技术提出的矩阵计算器能够高效实现矩阵乘法,尤其是结果矩阵有一个维度比较小的情况,例如在结果矩阵仅有一行或一列的情况下,本专利技术可以高效利用硬件乘法器阵列,达到提高计算效率的作用,在深度学习模型的全连接层计算中,当转化为矩阵计算后,即为结果矩阵只有一行或一列的情况。附图说明图1为现有矩阵计算器结构;图2为本专利技术矩阵计算器结构;图3为乘累加单元的内部电路示意图;图4为左矩阵分块示意图;图5为一行乘法器的输入数据示意图。具体实施方式下面结合附图和具体实施方式对本专利技术作进一步详细的说明。本专利技术的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本专利技术限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本专利技术的原理和实际应用,并且使本领域的普通技术人员能够理解本专利技术从而设计适于特定用途的带有各种修改的各种实施例。实施例1以4行8列矩阵计算器为例,包括4行8列乘累加单元MAC,乘累加单元MAC包括乘法器MUL和累加器ADD,在每行乘累加单元上设置一加法树和一行累加寄存器,如图2所示,该加法树用于计算该行乘累加单元当前计算结果的和,并将当前和累加到行累本文档来自技高网
...

【技术保护点】
1.一种矩阵计算器,包括H行W列乘累加单元,乘累加单元包括乘法器和累加器,其特征在于,在每行乘累加单元上设置一加法树和一行累加寄存器,该加法树用于计算该行乘累加单元当前计算结果的和,并将当前和累加到行累加寄存器;/n矩阵计算器设置有第一控制电路,用于控制每行的加法树和行累加寄存器在结果矩阵仅有一行或一列时工作;矩阵计算器设置有第二控制电路,用于禁用乘累加单元中的累加器。/n

【技术特征摘要】
1.一种矩阵计算器,包括H行W列乘累加单元,乘累加单元包括乘法器和累加器,其特征在于,在每行乘累加单元上设置一加法树和一行累加寄存器,该加法树用于计算该行乘累加单元当前计算结果的和,并将当前和累加到行累加寄存器;
矩阵计算器设置有第一控制电路,用于控制每行的加法树和行累加寄存器在结果矩阵仅有一行或一列时工作;矩阵计算器设置有第二控制电路,用于禁用乘累加单元中的累加器。


2.基于权利要求1所述的矩阵计算器的全连接层计算方法,其特征在于,通过H行W列乘累加单元计算一个M行N列矩阵与一个N行1列矩阵的乘积,其中M>H、N>W,包括以下步骤:
步骤1,通过第一控制电路控制所有行的加法树和行累加寄存器工作,通过第二控制电路禁用所有乘累加单元中的累加器;
步骤2,将左矩阵以H行为单位进行分块,每轮计算一个分块子矩阵与右矩阵的乘法结果,最多轮,完成整个矩阵乘法运算,每轮计算过程为:
步骤2.1,每轮向矩阵计算器送入H行左矩阵数据,每行数据从行方向送入对应行的乘累加单元中,每行N个数据分配在同行的W个乘累加单元上,每个乘累加单元最多分配个数据;
步骤2.2,与步骤2.1相对应的,每轮向矩阵计算器的每一行从列方向送入右矩阵的1列N个数据,N个数据分配在同行的W个乘累加单元上,每个乘累...

【专利技术属性】
技术研发人员:林广栋黄光红张笑顾大晔
申请(专利权)人:安徽芯纪元科技有限公司
类型:发明
国别省市:安徽;34

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

1