首页> 中国专利> 一种矩阵计算器及基于该矩阵计算器的全连接层计算方法

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

摘要

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

著录项

  • 公开/公告号CN112612447A

    专利类型发明专利

  • 公开/公告日2021-04-06

    原文格式PDF

  • 申请/专利权人 安徽芯纪元科技有限公司;

    申请/专利号CN202011638796.5

  • 发明设计人 林广栋;黄光红;张笑;顾大晔;

    申请日2020-12-31

  • 分类号G06F7/498(20060101);G06F7/509(20060101);G06F17/16(20060101);

  • 代理机构34147 合肥律众知识产权代理有限公司;

  • 代理人邓盛花

  • 地址 230000 安徽省合肥市高新区习友路3366号博微产业园系统协同中心7楼

  • 入库时间 2023-06-19 10:29:05

说明书

技术领域

本发明涉及集成电路技术领域,尤其是一种矩阵计算器及基于该矩阵计算器的全连接层计算方法。

背景技术

矩阵乘法是线性代数中的最基本操作,在图像处理、人工神经网络、深度学习等领域,都得到普遍应用。尤其在深度学习领域,大部分运算都转换为矩阵乘法运算。对于卷积层,将卷积核展开,参与卷积运算的输入层也展开,卷积运算可转换为普通的矩阵运算。

矩阵运算需要大量重复的乘累加计算,需要读入大量数据,并将大量计算结果写出。传统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运算至少需要

全连接层是深度学习模型中最常见的层之一,例如基于深度学习的图像识别模型中,最后一层基本都是全连接层,全连接层的输出个数与待识别的物体种类数量相等(若待分类物体包含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个数据,每个周期内,矩阵计算器中的每个乘法累加器对行方向与列方向送入的数据进行乘法运算,然后加法树对同行乘法器的计算结果进行全加,并与行累加寄存器中的上一次累加结果进行求和,并将求和结果更新至行累加寄存器;最多经过

进一步的,若M为H的整数倍,N为W的整数倍,则每轮计算过程为,

向矩阵计算器的H行乘法器对应送入H行左矩阵数据,每行W个乘法器依次送入左矩阵对应行的第

向矩阵计算器的H行乘法器对应送入1列右矩阵数据,每行W个乘法器依次送入右矩阵第1列第

每个周期向每个乘法器送入1个数据,每轮每个乘法器接收

本发明提出的矩阵计算器能够高效实现矩阵乘法,尤其是结果矩阵有一个维度比较小的情况,例如在结果矩阵仅有一行或一列的情况下,本发明可以高效利用硬件乘法器阵列,达到提高计算效率的作用,在深度学习模型的全连接层计算中,当转化为矩阵计算后,即为结果矩阵只有一行或一列的情况。

附图说明

图1为现有矩阵计算器结构;

图2为本发明矩阵计算器结构;

图3为乘累加单元的内部电路示意图;

图4为左矩阵分块示意图;

图5为一行乘法器的输入数据示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

实施例1

以4行8列矩阵计算器为例,包括4行8列乘累加单元MAC,乘累加单元MAC包括乘法器MUL和累加器ADD,在每行乘累加单元上设置一加法树和一行累加寄存器,如图2所示,该加法树用于计算该行乘累加单元当前计算结果的和,并将当前和累加到行累加寄存器。

矩阵计算器设置有第一控制电路,用于控制每行的加法树和行累加寄存器在结果矩阵仅有一行或一列时工作;矩阵计算器设置有第二控制电路,用于禁用乘累加单元中的累加器。乘累加单元MAC的内部结构图如图3所示,模块①代表来自行方向上的输入,模块②代表来自列方向上的输入,模块③代表乘法器,模块④代表送往行加法树的输出,模块⑤代表加法器,模块⑥代表乘累加寄存器,存储一个乘累加单元的乘累加结果。当第一控制电路和第二控制电路都有效时,模块⑤⑥不工作,模块①②③④工作;当第一控制电路和第二控制电路都无效时,模块④不工作,模块①②③⑤⑥工作。

下面论述图2所示矩阵计算器计算一个M行N列矩阵与一个N行1列矩阵的乘积的操作步骤。本发明主要讨论M>H、N>W的情况,由于本实施例中H=4、W=8,不失一般性地,本实施例设定M=12、N=32,即通过4行8列乘累加单元计算一个12行32列左矩阵与一个32行1列右矩阵的乘积。

首先,通过第一控制电路控制所有行的加法树和行累加寄存器工作,通过第二控制电路禁用所有乘累加单元中的累加器。

左矩阵有12行,而矩阵计算器仅有4行乘累加单元,为此将左矩阵以4行为单位分成3块,如图4所示;然后每轮向矩阵计算器送入4行数据,每行32个数据分配在同行的8个乘累加单元上,每个乘累加单元分配4个数据,每个周期送入1个数据,4个周期送完;经过3轮12行数据可全部处理完毕。

与此同时,每轮向矩阵计算器的每一行送入右矩阵的1列32个数据,32个数据分配在同行的8个乘累加单元上,同样的,每个乘累加单元分配4个数据,每个周期送入1个数据,4个周期送完。

每个周期,矩阵计算器中的每个乘累加单元对行方向(左矩阵)和列方向(右矩阵)送入的数据进行乘法运算,然后加法树对同行乘累加单元的计算结果进行全加,并与行累加寄存器中的上一次累加结果进行求和,并将求和结果更新至行累加寄存器,参照图5。

第1轮4个周期之后,第1行行累加寄存器中存储结果即为左矩阵第1行与右矩阵第1列相乘结果,也就是结果矩阵第1行的结果;第2行行累加寄存器中存储结果即为左矩阵第2行与右矩阵第1列相乘结果,也就是结果矩阵第2行的结果;第3行行累加寄存器中存储结果即为左矩阵第3行与右矩阵第1列相乘结果,也就是结果矩阵第3行的结果;第4行行累加寄存器中存储结果即为左矩阵第4行与右矩阵第1列相乘结果,也就是结果矩阵第4行的结果。

第2轮4个周期之后,第1行行累加寄存器中存储结果即为左矩阵第5行与右矩阵第1列相乘结果,也就是结果矩阵第5行的结果;第2行行累加寄存器中存储结果即为左矩阵第6行与右矩阵第1列相乘结果,也就是结果矩阵第6行的结果;第3行行累加寄存器中存储结果即为左矩阵第7行与右矩阵第1列相乘结果,也就是结果矩阵第7行的结果;第4行行累加寄存器中存储结果即为左矩阵第8行与右矩阵第1列相乘结果,也就是结果矩阵第8行的结果。第3轮亦然,不再赘述。

本实施例中,M为H的整数倍,N为W的整数倍,容易想到,即使并非倍数关系,也不影响本发明在全连接层计算上的应用,例如,若左矩阵为10行,那么第3轮仅输入两行数据即可;若左矩阵为30列,那么每行最后一个乘累加单元仅在4个周期中的前2个周期输入数据即可。

若左矩阵有M行,则需要将左矩阵进行矩阵分块,每轮送入矩阵计算器H行,每个周期分别将H行的W个数据送入矩阵计算器H行乘累加单元的对应行中,每轮需要

显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号