CN114647818A - 矩阵运算结果的确定方法及装置、存储介质、电子装置 - Google Patents

矩阵运算结果的确定方法及装置、存储介质、电子装置 Download PDF

Info

Publication number
CN114647818A
CN114647818A CN202011534141.3A CN202011534141A CN114647818A CN 114647818 A CN114647818 A CN 114647818A CN 202011534141 A CN202011534141 A CN 202011534141A CN 114647818 A CN114647818 A CN 114647818A
Authority
CN
China
Prior art keywords
matrix
sub
matrices
result
matrixes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011534141.3A
Other languages
English (en)
Inventor
舒映晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN202011534141.3A priority Critical patent/CN114647818A/zh
Publication of CN114647818A publication Critical patent/CN114647818A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供了一种矩阵运算结果的确定方法及装置、存储介质、电子装置,其中,上述方法包括:获取待进行矩阵运算的第一矩阵和第二矩阵;将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。采用上述技术方案,解决相关技术中在大矩阵相乘时,每一次运算的运算量大的问题。

Description

矩阵运算结果的确定方法及装置、存储介质、电子装置
技术领域
本发明涉及通信领域,具体而言,涉及一种矩阵运算结果的确定方法及装置、存储介质、电子装置。
背景技术
在通讯系统或者其他数据系统中,通常存在需要对大量数据做矩阵乘法运算的需求。如图7所示:一个1024*16384的矩阵与另一个16384*1024的矩阵相乘,要完成这样两个矩阵的乘法运算,需要做1024*1024(100万)次16384个数据的乘法求和运算,这个运算量非常巨大。现有的矩阵运算,通常的做法是按照矩阵乘法规则的方式,对矩阵每行每列依次计算。现有技术的问题是速度慢,占用系统资源,加载时间长,迭代速度慢。同时,随着使用场景的变化,数据量变得更加的复杂,低效的运算能力也可能成为产品应用的瓶颈。
针对相关技术中,在大矩阵相乘时,在大矩阵相乘时,每一次运算的运算量大的的问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种矩阵运算结果的确定方法及装置、存储介质、电子装置,以解决相关技术中在大矩阵相乘时,在大矩阵相乘时,每一次运算的运算量大的的问题。
根据本发明的一个实施例,提供了一种矩阵运算结果的确定方法,包括:获取待进行矩阵运算的第一矩阵和第二矩阵;将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
可选的,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,包括:确定所述第一矩阵的第一行数以及第一列数;将所述第一矩阵拆分成预设数量的所述至少两个第一子矩阵,其中,所述至少两个第一子矩阵的行数和列数均相同,且所述预设数量通过第一值与第二值的乘积得到,所述第一值通过将第一行数与所述第一子矩阵的行数相除得到,所述第二值通过将第一列数与所述第一子矩阵的列数相除得到。
可选的,将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵,包括:确定所述第二矩阵的第二行数以及第二列数;将所述第二矩阵拆分成所述预设数量的所述至少两个第二子矩阵,其中,所述至少两个第二子矩阵的行数和列数均相同,且所述预设数量通过第三值与第四值的乘积得到,所述第三值通过将第二行数与所述第二子矩阵的行数相除得到,所述第四值通过将第二列数与所述第一子矩阵的列数相除得到,所述第一值与所述第四值相同,所述第二值与所述第三值相同,所述第一行数与所述第二列数相同,所述第二行数与所述第一列数相同。
可选的,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,包括:处理步骤:将所述至少两个第一子矩阵中的位于同一列的第一子矩阵,与所述至少两个第二子矩阵中与所述同一列对应的位于同一行的第二子矩阵进行矩阵相乘,得到结果阵表;循环执行所述处理步骤,直至所述至少两个第一子矩阵以及所述至少两个第二子矩阵矩阵运算结束,得到所述至少两个结果阵表。
可选的,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,包括:对于所述至少两个第一子矩阵中的任一第一子矩阵,将所述任一第一子矩阵再次按照所述预设规则拆分成至少两个第一目标子矩阵,得到所述至少两个第一子矩阵对应的多个第一目标子矩阵;对于所述至少两个第二子矩阵中的任一第二子矩阵,将所述任一第二子矩阵再次按照所述预设规则拆分成至少两个第二目标子矩阵,得到所述至少两个第二子矩阵对应的多个第二目标子矩阵;对所述多个第一目标子矩阵以及所述多个第二目标子矩阵进行矩阵运算,得到所述至少两个结果阵表。
可选的,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表之前,所述方法还包括:将所述至少两个第一子矩阵以及所述至少两个第二子矩阵的矩阵运算分成至少两个运算过程,其中,所述至少两个运算过程分别用于实现不同的第一子矩阵和第二子矩阵的矩阵运算,且所述两个运算过程对应有不同的运算顺序。
根据本发明的另一个实施例,还提供了一种矩阵运算结果的确定系统,包括:处理器,用于获取待进行矩阵运算的第一矩阵和第二矩阵,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;硬件加速装置,用于获取所述至少两个第一子矩阵,以及所述至少两个第二子矩阵,并对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,并对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
可选的,所述系统还包括:外部存储器,用于保存所述至少两个结果阵表。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行以上任一项中所述的方法。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行以上任一项中所述的方法。
通过本发明,获取待进行矩阵运算的第一矩阵和第二矩阵;将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。也就是说,将所述第一矩阵与所述第二矩阵的相乘按照预设规则分别拆分成至少两个第一子矩阵与至少两个第二子矩阵的相乘,得到至少两个结果阵表,对所述至少两个结果阵表求和得到最终矩阵运算结果。采用上述技术方案,解决相关技术中在大矩阵相乘时,在大矩阵相乘时,每一次运算的运算量大的的问题,进而提升大矩阵相乘的运算速度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种矩阵运算结果的确定方法的计算机终端的硬件结构框图;
图2是根据本发明实施例的一种矩阵运算结果的确定方法的流程图;
图3是根据本发明实施例的一种矩阵运算的拆分计算的示意图;
图4是根据本发明实施例的一种矩阵运算结果的确定系统的结果框图(一);
图5是根据本发明实施例的一种矩阵运算结果的确定系统的结果框图(二);
图6是根据本发明实施例的一种矩阵运算结果的确定系统的计算过程的流程图;
图7是根据相关技术的两个矩阵运算的示意图;
图8是根据本发明实施例的另一种矩阵运算的拆分计算的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在计算机终端,或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种矩阵运算结果的确定方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器(Microprocessor Unit,简称是MPU)或可编程逻辑器件(Programmable logic device,简称是PLD))和用于存储数据的存储器104,在一个示例性实施例中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的矩阵运算结果的确定方法的对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种矩阵运算结果的确定方法,应用于上述计算机终端,图2是根据本发明实施例的一种矩阵运算结果的确定方法的流程图,该流程包括如下步骤:
步骤S202:获取待进行矩阵运算的第一矩阵和第二矩阵;
步骤S204:将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;
步骤S206:对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;
步骤S208:对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
通过本发明,获取待进行矩阵运算的第一矩阵和第二矩阵;将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。也就是说,将所述第一矩阵与所述第二矩阵的相乘按照预设规则分别拆分成至少两个第一子矩阵与至少两个第二子矩阵的相乘,得到至少两个结果阵表,对所述至少两个结果阵表求和得到最终矩阵运算结果。采用上述技术方案,解决相关技术中在大矩阵相乘时,在大矩阵相乘时,每一次运算的运算量大的的问题,进而提升大矩阵相乘的运算速度。
在步骤S204中,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,包括:确定所述第一矩阵的第一行数以及第一列数;将所述第一矩阵拆分成预设数量的所述至少两个第一子矩阵,其中,所述至少两个第一子矩阵的行数和列数均相同,且所述预设数量通过第一值与第二值的乘积得到,所述第一值通过将第一行数与所述第一子矩阵的行数相除得到,所述第二值通过将第一列数与所述第一子矩阵的列数相除得到。
需要说明的是,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,其中预设规则是矩阵切割技术,用于将大矩阵切割为多个小矩阵,其中切割与拆分同一个含义。将所述第一矩阵拆分成预设数量的所述至少两个第一子矩阵是将所述第一矩阵按照矩阵切割技术拆分为预设数量的第一子矩阵。其中预设数量是大于或等于二的,其中预设数量是由第一行数与所述第一子矩阵的行数,第一列数与所述第一子矩阵的列数确定。
举例说明:现有两个大矩阵相乘,第一矩阵是A*B的矩阵,本发明将A*B的矩阵被拆分为X乘以Z个N*M的小矩阵,其中X=A/N,Z=B/M。需要说明的是,A与B就是所述第一矩阵的第一行数与第一列数,N与M就是所述第一子矩阵的行数与所述第一子矩阵的列数。X代表第一值,Z代表第二值,X与Z的乘积的值就是预设数量,也就是第一子矩阵的数目,其中预设数量一定是大于等于二的,不然矩阵的拆分就没有意义。又比如所述第一矩阵是一个1024*16384的矩阵,要将1024*16384的矩阵拆分为256*1024的小矩阵,最终1024*16384的矩阵可拆分为4*16=64个256*1024的小矩阵。这样,大矩阵就可以拆分为小矩阵。需要说明的是,如果将第一矩阵拆分后的每一列看为一个整体,每列有4个第一子矩阵,那么1024*16384的矩阵拆分为256*1024的小矩阵可以看为是将所述第一矩阵拆分为16个列。
在步骤S204中,将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵,包括:确定所述第二矩阵的第二行数以及第二列数;将所述第二矩阵拆分成所述预设数量的所述至少两个第二子矩阵,其中,所述至少两个第二子矩阵的行数和列数均相同,且所述预设数量通过第三值与第四值的乘积得到,所述第三值通过将第二行数与所述第二子矩阵的行数相除得到,所述第四值通过将第二列数与所述第一子矩阵的列数相除得到,所述第一值与所述第四值相同,所述第二值与所述第三值相同,所述第一行数与所述第二列数相同,所述第二行数与所述第一列数相同。
需要说明的是,将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵是将所述第二矩阵按照矩阵切割技术拆分为预设数量的第二子矩阵。其中预设数量是由第二行数与所述第二子矩阵的行数,第二列数与所述第二子矩阵的列数确定。
举例说明:现有两个大矩阵相乘,第二矩阵是B*C的矩阵,本发明将B*C的矩阵被拆分为W乘以Y个M*L的小矩阵,其中W=B/M,Y=C/L,W=Z,Y=X。需要说明的是,B与C就是所述第二矩阵的第二行数与第二列数,M与L就是所述第二子矩阵的行数与所述第二子矩阵的列数。W代表第三值,Y代表第四值,W与Y的乘积的值就是预设数量,也就是第二子矩阵的数目,其中预设数量一定是大于等于二的,不然矩阵的拆分就没有意义。又比如所述第二矩阵是一个16384*256的矩阵,要将16384*256的矩阵拆分为1024*64的小矩阵,最终16384*256的矩阵可拆分为16*4=64个1024*64的小矩阵。这样,大矩阵就可以拆分为小矩阵。需要说明的是,如果将第二矩阵拆分后的每一行看为一个整体,每行有4个第二子矩阵,那么16384*256的矩阵拆分为1024*64的小矩阵可以看为是将所述第二矩阵拆分为16行。
需要说明的是,在一个可选实施例中,两个矩阵相乘,第一矩阵的列数与第二矩阵的行数不相等。在该实施例下,两个矩阵相乘运算之前需要将其中一个矩阵对应行或者列补零,使得第一矩阵的列数与第二矩阵的行数相等,进而进行两个矩阵的相乘运算。举例说明:第一矩阵是2*2的矩阵,第二矩阵是3*3的矩阵,那么第一矩阵与第二矩阵相乘之前就需要给第一矩阵补充第三列,其中第一矩阵的第三列对应元素为0,这样第一矩阵的列数就与第二矩阵的行数相等。
需要说明的是,所述第一值与所述第四值相同,所述第二值与所述第三值相同,X代表第一值,Z代表第二值,X=A/N,Z=B/M,W代表第三值,Y代表第四值,W=B/M,Y=C/L,W=Z,Y=X。其中Z=B/M,W=B/M,很明显W=Z;因为第一矩阵与第二矩阵的拆分的预设数量是一样的,所以有X*Z=W*Y,又因为X=A/N,Y=C/L,Y=X,那么需要满足A/N=C/L。所以可以得出将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵,需要满足A/N=C/L。举例说明:两个矩阵相乘,将1024*16384的第一矩阵拆分为4*16=64个256*1024的第一矩阵,将16384*256的第二矩阵拆分为16*4=64个1024*64的第二子矩阵,其中A=1024,N=256,C=256,L=64,可见A/N=C/L=4。
需要说明的是,第一矩阵与第二矩阵的乘积是第一矩阵的每一列与第二矩阵的对应每一行相乘,第一矩阵的每一列与第二矩阵的对应每一行有分别存在第一子矩阵与第二子矩阵,要使得第一矩阵的每一列与第二矩阵的对应每一行相乘,那么第一矩阵的每一列与第二矩阵的对应每一行有分别存在的第一子矩阵与第二子矩阵的数量一样。如果第一矩阵的每一列与第二矩阵的对应每一行有分别存在的第一子矩阵与第二子矩阵的数量不一样,那么对应位置补零,使得第一矩阵的每一列与第二矩阵的对应每一行有分别存在的第一子矩阵与第二子矩阵的数量一样。又因为第一矩阵的列数与第二矩阵的行数一样。那么第一矩阵与第二矩阵的拆分的预设数量一定是一样的,所以X*Z=W*Y成立,A/N=C/L也一定成立。所以本发明矩阵拆分中,必须要满足A/N=C/L。本发明最重要的发明点就在于两个相乘矩阵按照预设规则拆分需要满足A/N=C/L条件,A/N=C/L的条件是本发明根据矩阵相乘定理推导出的新公式,在本发明之前,没有任何人或者组织机构提出或公开。
在步骤S206中,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,包括:处理步骤:将所述至少两个第一子矩阵中的位于同一列的第一子矩阵,与所述至少两个第二子矩阵中与所述同一列对应的位于同一行的第二子矩阵进行矩阵相乘,得到结果阵表;循环执行所述处理步骤,直至所述至少两个第一子矩阵以及所述至少两个第二子矩阵矩阵运算结束,得到所述至少两个结果阵表。
需要说明的是,将所述至少两个第一子矩阵中的位于同一列的第一子矩阵,与所述至少两个第二子矩阵中与所述同一列对应的位于同一行的第二子矩阵进行矩阵相乘,就是将第一矩阵的每一列与第二矩阵的对应每一行相乘,第一矩阵的每一列与第二矩阵的对应每一行的对应小矩阵相乘。需要说明的是,结果阵表是第一矩阵的其中一列与第二矩阵的对应一行乘积的结果,结果阵表实际上是一个矩阵,其中第一矩阵有多少列就会得到多少张结果阵表。循环执行所述处理步骤,直至所述至少两个第一子矩阵以及所述至少两个第二子矩阵矩阵运算结束而停止,得到所述至少两个结果阵表。其中循环执行所述处理步骤的次数是由第一矩阵的列数决定,循环执行所述处理步骤直至第一矩阵的最后一列与第二矩阵的最后一行运算结束而停止。
举例说明:将1024*16384的第一矩阵拆分为4*16=64个256*1024的小矩阵,将第一矩阵拆分后的每一列看为一个整体,那么所述第一矩阵拆分为16个列;将16384*256的第二矩阵拆分为16*4=64个1024*64的小矩阵,将第二矩阵拆分后的每一行看为一个整体,那么所述第二矩阵拆分为16行。需要说明的是,两个矩阵相乘,根据矩阵相乘的定理可以得出第一矩阵的列数必定与第二矩阵的行数相等,第一子矩阵的列数必定与第二子矩阵的行数相等。第一矩阵有16个列,每列有4个第一子矩阵,第二矩阵有16行,每行有4个第二子矩阵,第一矩阵的列数与第二矩阵的行数相等,第一矩阵的每一列的第一子矩阵数目与第二矩阵的每一行的第二子矩阵数目,可以使用矩阵乘法运算,第一矩阵的每一列与第二矩阵的对应每一行相乘,第一矩阵的每一列与第二矩阵的对应每一行的对应子矩阵相乘,其中,子矩阵包括第一目标子矩阵与第二子矩阵。第一矩阵的每一列与第二矩阵的对应每一行相乘结果得到对应的结果阵表,这样就可以得到许多结果阵表,因为结果阵表实际上是一个矩阵,所以将最后得到的结果列表使用矩阵加法运算就可以得到最终的结果矩阵。通过上述技术手段就可以将两个相乘的大矩阵拆分为多个小矩阵去相乘,从而减少每一次的运算量的问题,进而提升大矩阵相乘的运算速度。
在一个可选实施例中,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,包括:对于所述至少两个第一子矩阵中的任一第一子矩阵,将所述任一第一子矩阵再次按照所述预设规则拆分成至少两个第一目标子矩阵,得到所述至少两个第一子矩阵对应的多个第一目标子矩阵;对于所述至少两个第二子矩阵中的任一第二子矩阵,将所述任一第二子矩阵再次按照所述预设规则拆分成至少两个第二目标子矩阵,得到所述至少两个第二子矩阵对应的多个第二目标子矩阵;对所述多个第一目标子矩阵以及所述多个第二目标子矩阵进行矩阵运算,得到所述至少两个结果阵表。
需要说明的是,在某些情况下,大矩阵一次拆分的的小矩阵比较大,或者使用者运算资源少,不足以计算一次拆分后的小矩阵,那么就需要矩阵的二次拆分。对于所述至少两个第一子矩阵中的任一第一子矩阵,将所述任一第一子矩阵再次按照所述预设规则拆分成至少两个第一目标子矩阵,得到所述至少两个第一子矩阵对应的多个第一目标子矩阵,就是将每一个第一子矩阵按照所述预设规则拆分成多个第一目标子矩阵。举例说明:现有两个大矩阵相乘,第一矩阵是A*B的矩阵,本发明将A*B的矩阵被第一次拆分为X乘以Z个N*M的小矩阵,将N*M的小矩阵第二次拆分为p*q的微矩阵。图8是根据本发明实施例的另一种矩阵运算的拆分计算的示意图,将N*M的小矩阵第二次拆分为p*q的微矩阵如图8所示,第二次矩阵拆分规则与第一次矩阵拆分规则一样,在此不再详细说明。比如所述第一矩阵是一个1024*16384的矩阵,要将1024*16384的矩阵拆分为256*1024的小矩阵,最终1024*16384的矩阵可拆分为4*16=64个256*1024的第一子矩阵。在得到4*16=64个256*1024的第一子矩阵之后,对256*1024的第一子矩阵进行第二次拆分。将256*1024的第一子矩阵拆分为4*4=16个64*256的第一目标子矩阵。
需要说明的是,对于所述至少两个第二子矩阵中的任一第二子矩阵,将所述任一第二子矩阵再次按照所述预设规则拆分成至少两个第二目标子矩阵,得到所述至少两个第二子矩阵对应的多个第二目标子矩阵,就是将每一个第二子矩阵按照所述预设规则拆分成多个第二目标子矩阵。举例说明:现有两个大矩阵相乘,第二矩阵是B*C的矩阵,本发明将B*C的矩阵被第一次拆分为W乘以Y个M*L的小矩阵,将M*L的小矩阵第二次拆分为q*r的微矩阵。比如所述第二矩阵是一个16384*256的矩阵,要将16384*256的矩阵拆分为1024*64的小矩阵,最终16384*256的矩阵可拆分为16*4=64个1024*64的第二子矩阵。在得到16*4=64个1024*64的第二子矩阵之后,对1024*64的的第二子矩阵进行第二次拆分。将1024*64的第二子矩阵拆分为4*4=16个256*16的第二目标子矩阵。
需要说明的是,对所述多个第一目标子矩阵以及所述多个第二目标子矩阵进行矩阵运算,得到所述至少两个结果阵表,第一目标子矩阵的每一列与第二目标子矩阵的对应一行的乘积结果得到结果阵表是循环执行的,直至所述多个第一目标子矩阵与所述多个第二目标子矩阵的矩阵运算结束而停止,得到多个结果阵表。其中循环执行的次数是由第一目标子矩阵与的列数决定,循环操作直至第一目标子矩阵与的最后一列与第二目标子矩阵与的最后一行运算结束而停止。
将256*1024的第一子矩阵拆分为4*4=16个64*256的第一目标子矩阵,其中将第一子矩阵拆分后的每一列看为一个整体,那么所述第一子矩阵分为4个列;1024*64的第二子矩阵拆分为4*4=16个256*16的第二目标子矩阵,将第二矩阵拆分后的每一行看为一个整体,那么所述第二子矩阵拆分为4行。第一子矩阵有4列,每列有4个第一目标子矩阵,第二子矩阵有4行,每行有4个第二目标子矩阵,第一子矩阵的列数与第二子矩阵的行数相等,第一子矩阵的每一列的第一目标子矩阵数目与第二子矩阵的每一行的第二目标子矩阵数目相等,可以使用矩阵乘法运算,第一子矩阵的每一列与第二子矩阵的对应每一行相乘,第一子矩阵的每一列与第二子矩阵的对应每一行的对应目标子矩阵相乘。其中,目标子矩阵包括第一目标子矩阵与第二目标子矩阵。第一子矩阵的每一列与第二子矩阵的对应每一行相乘结果得到对应的结果阵表,这样就可以得到许多结果阵表,因为结果阵表实际上是一个矩阵,所以将最后得到的结果列表使用矩阵加法运算就可以得到最终的结果矩阵。
通过上述技术手段,可以进一步缩减运算资源,我们只需要提供p*q微型矩阵的运算资源和缓存资源。通常,运算资源和缓存资源对于芯片来说意味着面积和成本。当然作为代价,需要付出一定的带宽资源。设计者可以在运算资源和带宽之间做平衡。
在一个可选实施例中,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表之前,所述方法还包括:将所述至少两个第一子矩阵以及所述至少两个第二子矩阵的矩阵运算分成至少两个运算过程,其中,所述至少两个运算过程分别用于实现不同的第一子矩阵和第二子矩阵的矩阵运算,且所述两个运算过程对应有不同的运算顺序。
需要说明的是,多个第一子矩阵与多个第二子矩阵的矩阵运算实际上是第一矩阵其中一列与第二矩阵对应一行的计算,将所述至少两个第一子矩阵以及所述至少两个第二子矩阵的矩阵运算分成至少两个运算过程,其中分成至少两个运算过程是指第一矩阵其中一列与第二矩阵对应一行的计算分成第一矩阵其中一列的多段与第二矩阵对应一行的对应多段计算。如图3,第一矩阵的第一列是一个第一子矩阵,第一矩阵的第一列对应的是第二矩阵的第一行的第二子矩阵。第一矩阵的第一列与第二矩阵的第一行的乘积就可以分成第一矩阵的第一列的一段与第二矩阵的第一行的对应一段的乘积。其中第一矩阵中的一段可以是一个第一子矩阵、两个第一子矩阵或者多个第一子矩阵。可见上述运算过程调整了矩阵运算的顺序。由线性代数矩阵运算规则可知,矩阵相乘,是通过第一矩阵的一列和第二矩阵的一行按位置相乘后相加得到新的矩阵数据。本发明将每个点的计算拆分成了多个中间阵的运算。这样就不再拘泥于必须把左阵首行的数据完全计算完,才能进行下一行的运算。这样做的好处是,以A阵为例,可以首先进行A阵的运算,当A阵的结果阵计算结束后,A阵的数据不再需要,相应的存储空间可以被释放出来。
在本实施例中提供了一种矩阵运算结果的确定系统,图4是根据本发明实施例的一种矩阵运算结果的确定系统的结构框图(一),如图4所示:
处理器40,用于获取待进行矩阵运算的第一矩阵和第二矩阵,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;
硬件加速装置42,用于获取所述至少两个第一子矩阵,以及所述至少两个第二子矩阵,并对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,并对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
通过本发明,处理器,用于获取待进行矩阵运算的第一矩阵和第二矩阵,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;硬件加速装置,用于获取所述至少两个第一子矩阵,以及所述至少两个第二子矩阵,并对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,并对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。采用上述技术方案,解决相关技术中在大矩阵相乘时,在大矩阵相乘时,每一次运算的运算量大的的问题,进而提升大矩阵相乘的运算速度。
图5是根据本发明实施例的一种矩阵运算结果的确定系统的结构框图(二),如图5所示:
所述系统还包括:外部存储器44,用于保存所述至少两个结果阵表,保存第一矩阵与第二矩阵、暂时用不到的小矩阵以及最终结果;
二级缓存装置46,用于存储当前用于计算的数据,介于外部存储器和硬件加速装置中间,起到数据媒介,加速数据访问的作用。
图6是根据本发明实施例的一种矩阵运算结果的确定系统的计算过程的流程图,如图6所示:
S602:Software(相当于上述实施例中的处理器40)依次生成N*M的小矩阵,Software将生成的小矩阵写入L2D(相当于上述实施例中的二级缓存装置46);
S604:L2D将每两个待相乘的小矩阵准备好之后,通知ACC(相当于上述实施例中的硬件加速装置42)可以开始计算;
S606:Software读出L2D中的ACC完成的小矩阵相乘结果,依次写入DDR中,上述步骤多次重复以完成第一矩阵其中一列与第二矩阵对应一行的小矩阵乘法,在DDR中形成一张结果阵表;
S608:新列与新行小矩阵乘法结果生成之后,Software从DDR中读出前一张表相应位置的结果阵表,两者累加后写回DDR,重复以上,直至所有列与所有行相乘的结果阵表累加完之后,DDR中即得到最终的结果阵;
需要说明的是,ACC工作流程:ACC接到软件的通知之后,ACC读出L2D中两个小矩阵,ACC进行两个小矩阵的相乘运算,ACC得到两个小矩阵的相乘的结果之后,ACC将小矩阵乘法结果写回L2D,ACC通知软件小矩阵结果已经在L2D中准备好,等待软件的下一次通知。需要说明的是,第一次矩阵拆分发生在原始矩阵到L2D的搬移过程,即将数据存入L2D的时候;第二次矩阵拆分发生在L2D向ACC搬移的过程。也就是说,ACC接受的小矩阵可以是第一子矩阵与第二子矩阵,也可以是第一目标子矩阵与第二目标子矩阵。这样的实现结构可以使得ACC的运算能力得到优化,不需要使用过多的乘法器运算单元。当然需要付出带宽的代价,这是运算、存储资源和带宽资源的一种平衡。
为了更好的理解上述技术方案,本发明还提供了一种可选实施例,用于解释说明上述技术方案。
图3是根据本发明实施例的一种矩阵运算的拆分计算的示意图,如图3所示:
本发明将第一矩阵1024*16384的矩阵拆分为多个N*M的小矩阵与第二矩阵16384*1024的矩阵分别拆分为多个N*M的第一子矩阵与多个M*N的第二子矩阵。1024*16384的第一矩阵被拆分为X乘以Z个N*M的第一子矩阵,16384*1024的第二矩阵被拆分为Z乘以X个M*N的小矩阵。其中X=1024/N;Z=16384/M。运算过程转换为,第一矩阵每列和第二矩阵每行的矩阵相乘之后,生成一张1024*1024的中间结果矩阵。第一矩阵与第二矩阵相乘运算后可以得到Z个1024*1024的结果矩阵。最后将Z个结果矩阵相加,获得最终的计算结果。这样就把大矩阵的乘积转化为了小矩阵的乘积。
通过本发明,获取待进行矩阵运算的第一矩阵和第二矩阵;将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。也就是说,将所述第一矩阵与所述第二矩阵的相乘按照预设规则分别拆分成至少两个第一子矩阵与至少两个第二子矩阵的相乘,得到至少两个结果阵表,对所述至少两个结果阵表求和得到最终矩阵运算结果。采用上述技术方案,解决相关技术中在大矩阵相乘时,在大矩阵相乘时,每一次运算的运算量大的的问题,进而提升大矩阵相乘的运算速度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取待进行矩阵运算的第一矩阵和第二矩阵;
S2,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;
S3,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;
S4,对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取待进行矩阵运算的第一矩阵和第二矩阵;
S2,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;
S3,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;
S4,对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
可选地,在本可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种矩阵运算结果的确定方法,其特征在于,包括:
获取待进行矩阵运算的第一矩阵和第二矩阵;
将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;
对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表;
对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
2.根据权利要求1所述的方法,其特征在于,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,包括:
确定所述第一矩阵的第一行数以及第一列数;
将所述第一矩阵拆分成预设数量的所述至少两个第一子矩阵,其中,所述至少两个第一子矩阵的行数和列数均相同,且所述预设数量通过第一值与第二值的乘积得到,所述第一值通过将第一行数与所述第一子矩阵的行数相除得到,所述第二值通过将第一列数与所述第一子矩阵的列数相除得到。
3.根据权利要求2所述的方法,其特征在于,将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵,包括:
确定所述第二矩阵的第二行数以及第二列数;
将所述第二矩阵拆分成所述预设数量的所述至少两个第二子矩阵,其中,所述至少两个第二子矩阵的行数和列数均相同,且所述预设数量通过第三值与第四值的乘积得到,所述第三值通过将第二行数与所述第二子矩阵的行数相除得到,所述第四值通过将第二列数与所述第一子矩阵的列数相除得到,所述第一值与所述第四值相同,所述第二值与所述第三值相同,所述第一行数与所述第二列数相同,所述第二行数与所述第一列数相同。
4.根据权利要求1所述的方法,其特征在于,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,包括:
处理步骤:将所述至少两个第一子矩阵中的位于同一列的第一子矩阵,与所述至少两个第二子矩阵中与所述同一列对应的位于同一行的第二子矩阵进行矩阵相乘,得到结果阵表;
循环执行所述处理步骤,直至所述至少两个第一子矩阵以及所述至少两个第二子矩阵矩阵运算结束,得到所述至少两个结果阵表。
5.根据权利要求1所述的方法,其特征在于,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,包括:
对于所述至少两个第一子矩阵中的任一第一子矩阵,将所述任一第一子矩阵再次按照所述预设规则拆分成至少两个第一目标子矩阵,得到所述至少两个第一子矩阵对应的多个第一目标子矩阵;
对于所述至少两个第二子矩阵中的任一第二子矩阵,将所述任一第二子矩阵再次按照所述预设规则拆分成至少两个第二目标子矩阵,得到所述至少两个第二子矩阵对应的多个第二目标子矩阵;
对所述多个第一目标子矩阵以及所述多个第二目标子矩阵进行矩阵运算,得到所述至少两个结果阵表。
6.根据权利要求1所述的方法,其特征在于,对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表之前,所述方法还包括:
将所述至少两个第一子矩阵以及所述至少两个第二子矩阵的矩阵运算分成至少两个运算过程,其中,所述至少两个运算过程分别用于实现不同的第一子矩阵和第二子矩阵的矩阵运算,且所述两个运算过程对应有不同的运算顺序。
7.一种矩阵运算结果的确定系统,其特征在于,包括:
处理器,用于获取待进行矩阵运算的第一矩阵和第二矩阵,将所述第一矩阵按照预设规则拆分成至少两个第一子矩阵,以及将所述第二矩阵按照所述预设规则拆分成至少两个第二子矩阵;
硬件加速装置,用于获取所述至少两个第一子矩阵,以及所述至少两个第二子矩阵,并对所述至少两个第一子矩阵以及所述至少两个第二子矩阵进行矩阵运算,以得到至少两个结果阵表,并对所述至少两个结果阵表求和得到所述第一矩阵和所述第二矩阵的矩阵运算结果。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:外部存储器,用于保存所述至少两个结果阵表。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至6任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至6任一项中所述的方法。
CN202011534141.3A 2020-12-21 2020-12-21 矩阵运算结果的确定方法及装置、存储介质、电子装置 Pending CN114647818A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011534141.3A CN114647818A (zh) 2020-12-21 2020-12-21 矩阵运算结果的确定方法及装置、存储介质、电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011534141.3A CN114647818A (zh) 2020-12-21 2020-12-21 矩阵运算结果的确定方法及装置、存储介质、电子装置

Publications (1)

Publication Number Publication Date
CN114647818A true CN114647818A (zh) 2022-06-21

Family

ID=81992220

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011534141.3A Pending CN114647818A (zh) 2020-12-21 2020-12-21 矩阵运算结果的确定方法及装置、存储介质、电子装置

Country Status (1)

Country Link
CN (1) CN114647818A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724856A (zh) * 2024-02-08 2024-03-19 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724856A (zh) * 2024-02-08 2024-03-19 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质
CN117724856B (zh) * 2024-02-08 2024-04-19 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN111247527B (zh) 在卷积神经网络模型中确定特征图像的方法和装置
US10348491B2 (en) Secret sharing method, secret sharing system, distributing apparatus and program
US10567494B2 (en) Data processing system, computing node, and data processing method
CN110210610B (zh) 卷积计算加速器、卷积计算方法及卷积计算设备
US9069716B2 (en) Matrix calculation unit
CN110390075B (zh) 矩阵预处理方法、装置、终端及可读存储介质
CN111542839B (zh) 一种反卷积神经网络的硬件加速方法、装置和电子设备
CN110262773B (zh) 一种计算机数据处理方法及装置
CN110427494B (zh) 知识图谱的展示方法、装置、存储介质及电子装置
CN108141256B (zh) 天线阵列的相位调整方法及装置
CN106708468B (zh) 一种除法运算装置
CN110826685A (zh) 神经网络卷积计算的方法和装置
US12009948B2 (en) Data processing apparatus and method, base station, and storage medium
CN110580522A (zh) 卷积计算方法及相关设备
CN108875035B (zh) 分布式文件系统的数据存储方法及相关设备
WO2023065983A1 (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
CN114647818A (zh) 矩阵运算结果的确定方法及装置、存储介质、电子装置
CN109657317B (zh) 一种cpld管脚分配的方法、系统及设备
CN112149047A (zh) 数据的处理方法及装置、存储介质和电子装置
CN116306840A (zh) 神经网络运算方法、装置、芯片、电子设备和存储介质
CN110796229A (zh) 一种实现卷积运算的装置及方法
CN108574947A (zh) 一种物联网测试方法及装置
CN111027688A (zh) 一种基于fpga的神经网络计算器生成方法及装置
CN114662689A (zh) 一种神经网络的剪枝方法、装置、设备及介质
CN111079390B (zh) 一种复选框列表的选择状态确定方法以及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination