[发明专利]矩阵乘法器有效
申请号: | 201711499179.X | 申请日: | 2017-12-29 |
公开(公告)号: | CN109992743B | 公开(公告)日: | 2020-06-16 |
发明(设计)人: | 刘虎;廖恒;屠嘉晋;袁宏辉;林灏勋;朱凡 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 矩阵 乘法器 | ||
本发明实施例公开了一种矩阵转乘法器,涉及数据计算技术领域,旨在对两个矩阵进行分块计算。该矩阵乘法器包括:第一存储器、第二存储器、运算电路和控制器,其中,运算电路与第一存储器和第二存储器可以通过总线进行数据通信,控制器用于依据预设的程序或者指令控制第一矩阵和第二矩阵进行分块,并控制运算电路根据控制器的分块结果对第一存储器和第二存储器中的对应分块进行乘法运算。该矩阵乘法器可以用于对两个矩阵进行相乘运算。
技术领域
本发明涉及计算技术领域,尤其涉及一种矩阵乘法器。
背景技术
目前,要计算两个矩阵A和B的乘积,可以通过以下两种方式中的任意一种方式进行计算:
方式一、通过向量处理器进行计算。
假设C=A*B,向量处理器可同时计算的元素个数为M个,参见图1,向量处理器会将矩阵A的第i行向量(包括元素Ai1、Ai2、…、Ai(M-1)、AiM)加载到源寄存器Reg0中,再将矩阵B的第j列向量(包括元素Bj1、Bj2、…、Bj(M-1)、BjM)加载到寄存器Reg1中,可以实现Reg0与Reg1各对应元素之间的乘法,最后通过加法树来完成累加操作,计算出矩阵C的第i行第j列的数据Cij,进行多次计算则可以得到矩阵C。
方式二、为了进一步提高计算速度,可以通过二维的计算阵列来完成矩阵的乘法运算。
例如,二维的计算阵列可以为N*N的脉动阵列。在方式一中,完成两个N*N的矩阵乘法运算,需要N^3次乘法操作,由于向量处理器每个时钟周期可以计算M个元素之间的乘法,因此完成一次乘法运算所需时长为N^3/M个时钟周期。在方式二中,完成两个N*N的矩阵乘法运算,需要N^3次乘法操作,由于脉动阵列有N^2个运算单元,那么完成一次矩阵运算所需时长为N^3/N^2=N个时钟周期。方式一和方式二完成N*N的矩阵乘法运算耗费的时间都很长,并且都有计算尺寸相对固定,不灵活的问题。
发明内容
本发明实施例所要解决的技术问题在于,提供一种矩阵乘法器及相关设备解决了矩阵乘法中,计算不灵活、效率低的问题。
第一方面,本发明实施例提供了一种矩阵乘法器,可包括:
第一存储器,用于存储第一矩阵,所述第一矩阵为M*K矩阵;
第二存储器,用于存储第二矩阵,所述第二矩阵为K*N矩阵;
与所述第一存储器和所述第二存储器连接的运算电路,所述运算电路包括X行*Y列运算单元,每个运算单元包括向量乘法电路和加法电路,所述矩阵乘法电路用于接收所述第一存储器发送的行向量数据和第二存储器发送的列向量数据,并将所述两路向量相乘;所述加法电路用于对所述两路向量相乘的结果相加,以及对属于同一个运算单元的计算结果进行累加得到每个运算单元的运算结果;
与所述运算电路连接的控制器,所述控制器用于执行以下动作:
将所述第一矩阵以规模为X*L的子块为单位进行分块,得到S×R个相同大小的子块,其中,将所述S×R个子块的第s行第r列的子块记为Asr,s=(1、2、3、……S),r=(1、2、3、……R);
将所述第二矩阵以规模为L*Y的子块为单位进行分块,得到R×T个相同大小的子块,其中,将所述R×T个子块中的第r行第t列记为Brt,r=(1、2、3、……R),t=(1、2、3、……T);
所述控制器还用于执行以下动作:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711499179.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种信号处理方法及装置
- 下一篇:一种基于自适应近邻的矩阵补全方法