CN110377876A - 矩阵乘法运算方法、装置及计算机可读存储介质 - Google Patents
矩阵乘法运算方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110377876A CN110377876A CN201910659020.2A CN201910659020A CN110377876A CN 110377876 A CN110377876 A CN 110377876A CN 201910659020 A CN201910659020 A CN 201910659020A CN 110377876 A CN110377876 A CN 110377876A
- Authority
- CN
- China
- Prior art keywords
- matrix
- submatrix
- parameter
- segmentation
- partitioning parameters
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix 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)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种矩阵乘法运算方法、装置及计算机可读存储介质,该方法包括:在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;基于第一标量参数和第二标量参数,确定第一矩阵和第二矩阵,并确定第一分割参数和第一填充参数、第二分割参数和第二填充参数;基于第一分割参数和第一填充参数对第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列、基于第二分割参数和所述第二填充参数对第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;依次选择第一子矩阵序列中的子矩阵和第二子矩阵序列中的子矩阵做乘法运算得到多个乘积,累加多个乘积得到运算结果。本发明能够提高矩阵运算速度,减少内存消耗。
Description
技术领域
本发明涉及矩阵运算领域,尤其涉及一种矩阵乘法运算方法、装置及计算机可读存储介质。
背景技术
当前,在计算机领域中,大数据、云确定、人工智能、物联网、自动驾驶等技术不断地兴起和发展,这些技术中涉及的算法包含各种各样的矩阵运算,尤其是大矩阵的乘法运算。
现有一般采用通用处理器执行对矩阵的乘法运算,但通用处理器运算能力差,对大矩阵进行乘法运算时非常耗时,运算速度慢,无法满足这些技术的实时性要求。
发明内容
本发明的主要目的在于提供一种矩阵乘法运算方法、装置及计算机可读存储介质,旨在解决现有矩阵乘法运算方式运算速度慢的技术问题。
为实现上述目的,本发明提供一种矩阵乘法运算方法,所述方法包括以下步骤:
在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;
基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;
基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;
依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
可选地,所述基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数的步骤包括:
根据所述第一标量参数中所述第一矩阵的首元素地址查找所述第一矩阵,以及,根据所述第二标量参数中所述第二矩阵的首元素地址查找所述第二矩阵;
基于所述第一标量参数中所述第一矩阵的行列数,确定所述第一矩阵的第一分割参数和第一填充参数,以及,基于所述第二标量参数中所述第二矩阵的行列数,确定所述第二矩阵的第二分割参数和第二填充参数。
可选地,所述基于所述第一标量参数中所述第一矩阵的行列数,确定所述第一矩阵的第一分割参数和第一填充参数,以及,基于所述第二标量参数中所述第二矩阵的行列数,确定所述第二矩阵的第二分割参数和第二填充参数的步骤包括:
根据所述第一矩阵的行列数,结合预设单个目标子矩阵行列数,确定所述第一矩阵的第一分割参数和第一填充参数,其中,所述第一分割参数包括所述第一矩阵的分割份数,所述第一填充参数包括所述第一矩阵的待填充行列和待填充元素;以及,
根据所述第二矩阵的行列数,结合预设单个目标子矩阵行列数,确定所述第一矩阵的第二分割参数和第二填充参数,其中,所述第二分割参数包括所述第二矩阵的分割份数,所述第二填充参数包括所述第二矩阵的待填充行列和待填充元素。
可选地,基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列的步骤包括:
按照所述第一矩阵的分割份数和预设单个目标子矩阵行列数,对所述第一矩阵依次进行分割操作,并在每次进行分割操作时,将所述第一矩阵的待填充元素填充至所述第一矩阵的待填充行列,得到第一子矩阵序列;以及,
按照所述第二矩阵的分割份数和预设单个目标子矩阵行列数,对所述第二矩阵进行依次分割操作,并在每次进行分割操作时,将所述第二矩阵的待填充元素填充至所述第二矩阵的待填充行列,得到第二子矩阵序列。
可选地,所述基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数的步骤之后,包括:
基于所述第一分割参数和所述第一填充参数,对所述第一矩阵依次进行子矩阵分割填充操作,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵依次进行子矩阵分割填充操作,每次对所述第一矩阵进行子矩阵分割填充操作后得到的子矩阵和每次对所述第二矩阵进行子矩阵分割填充操作后得到的子矩阵组成子矩阵对;
对每次得到的子矩阵对做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
可选地,所述第一矩阵的待填充元素和所述第二矩阵的待填充元素均为0。
可选地,所述矩阵乘法运算指令由关联设备发送,所述第一矩阵和所述第二矩阵存储于所述关联设备中,
所述依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果的步骤之后,或,对每次得到的子矩阵对做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果的步骤之后,包括:
将所述运算结果写入所述关联设备中。
此外,为实现上述目的,本发明还提供一种矩阵乘法运算装置,所述矩阵乘法运算装置包括:
分割填充模块,用于分别对待运算的第一矩阵和第二矩阵进行子矩阵分割填充操作,以生成用于运算的第一子矩阵序列和第二子矩阵序列;
运算模块,用于对所述第一子矩阵序列和第二子矩阵序列进行乘加运算,以生成所述第一矩阵和所述第二矩阵的运算结果;
控制模块,用于控制所述分割填充模块和所述运算模块。
可选地,所述矩阵乘法运算装置还包括:
寄存器模块,用于存储所述第一矩阵的第一标量参数和所述第二矩阵的第二标量参数。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有矩阵乘法运算程序,其中所述矩阵乘法运算程序被控制模块执行时实现如上所述的矩阵乘法运算方法的步骤。
本发明提供一种矩阵乘法运算方法、装置及计算机可读存储介质,在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。本发明将大矩阵分割成子矩阵,再对子矩阵乘加,实现了对大矩阵的快速运算,运算过程无需其他控制指令,简化了指令集,降低了大矩阵运算的复杂度,提高了运算的速度。
附图说明
图1为本发明矩阵乘法运算装置一实施例的结构示意图;
图2为本发明矩阵乘法运算装置一实施例的另一结构示意图;
图3为本发明矩阵乘法运算方法第一实施例的流程示意图;
图4为本发明矩阵乘法运算装置一实施例中涉及的矩阵在存储模块中的储存方式示意图;
图5为本发明矩阵乘法运算方法第一实施例涉及的控制分割填充模块进行子矩阵分割填充操作的示意图;
图6为本发明矩阵乘法运算方法第二实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。以解决现有矩阵乘法运算方式运算速度慢的技术问题。
本发明还提供一种矩阵乘法运算装置,参照图1,图1为本发明矩阵乘法运算装置一实施例的结构示意图。
在本实施例中,矩阵乘法运算装置包括矩阵乘法运算装置包括分割填充模块10、运算模块20和控制模块30。
其中,分割填充模块10,用于分别对待运算的第一矩阵和第二矩阵进行子矩阵分割填充操作,以生成用于运算的第一子矩阵序列和第二子矩阵序列;运算模块20,用于对第一子矩阵序列和第二子矩阵序列进行乘加运算,以生成第一矩阵和第二矩阵的运算结果;控制模块30,用于对分割填充模块10和运算模块20进行控制。控制模块30接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数,然后控制模块30基于第一标量参数和第二标量参数,确定第一矩阵和第二矩阵,并确定第一矩阵的第一分割参数和第一填充参数,以及,确定第二矩阵的第二分割参数和第二填充参数;之后,控制模块30控制分割填充模块10,按照第一分割参数和第一填充参数对第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,按照第二分割参数和第二填充参数,对第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;控制模块30再控制运算模块20,依次选择第一子矩阵序列中的子矩阵和第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的多个乘积进行累加,得到第一矩阵和第二矩阵的运算结果。
需要说明的是,分割填充模10块和运算模块20可以是定制的定制的硬件电路,包括但不限于FPGA(Field-Programmable Gate Array)、专用集成电路ASIC等。
在更多的实施中,参照图2,矩阵乘法运算装置还包括寄存器模块40,用于存储第一矩阵的第一标量参数和第二矩阵的第二标量参数。
本实施例提出的矩阵乘法运算装置,采用分割填充模块和运算模块,配合控制模块,实现大矩阵的乘法运算,运算过程无需其他控制指令,简化指令集,具有使用方便、所支持的矩阵规模灵活等优点,且将大矩阵分割成子矩阵,再对子矩阵乘加的方式降低了大矩阵运算的复杂度,提高了运算的速度。
基于上述硬件结构,提出本发明矩阵乘法运算方法的各个实施例。
参照图3,本发明矩阵乘法运算方法第一实施例提供一种矩阵乘法运算方法,该方法可以由矩阵乘法运算装置实现,该方法包括以下步骤:
步骤S10,在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;
步骤S20,基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;
步骤S30,基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;
步骤S40,依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
本实施例矩阵乘法运算装置包括控制模块、分割填充模块和运算模块。其中,分割填充模块,用于分别对待运算的第一矩阵和第二矩阵进行子矩阵分割填充操作,以生成用于运算的第一子矩阵序列和第二子矩阵序列;运算模块,用于对第一子矩阵序列和第二子矩阵序列进行乘加运算,以生成第一矩阵和第二矩阵的运算结果;控制模块,用于控制分割填充模块和运算模块。需要说明的是,分割填充模块和运算模块可以是定制的定制的硬件电路,包括但不限于FPGA(Field-Programmable Gate Array)、专用集成电路ASIC等。在更多的实施中,矩阵乘法运算装置还包括寄存器模块,用于存储第一矩阵的第一标量参数和第二矩阵的第二标量参数。
在本实施例中,矩阵乘法运算装置可以与PC、服务器、移动终端、平板电脑的终端设备建立通信连接,将与矩阵乘法运算装置建立通信连接的设备定义为关联设备,当关联设备需要进行矩阵乘法运算时,可以通过矩阵乘法运算装置实现矩阵乘法运算。
以下详细介绍本实施例实现矩阵乘法运算的具体步骤:
步骤S10,在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;
关联设备包括存储模块,存储模块可以是高速暂存存储器,能够支持不同大小的矩阵数据,用于存储待运算的第一矩阵和第二矩阵,为减少对关联设备存储模块的存储空间的占用,第一矩阵和第二矩阵在关联设备存储模块中的储存方式可以按行数据方式或按列数据方式存储,可参照图4,图4为矩阵在关联设备存储模块中的储存方式示意图,比如6行6列的第一矩阵A在存储模块中是按照行数据的方式来储存的,即A1、A2、A3、A4、A5、A6、A7、A8直到A36按顺序存储,6行6列的第二矩阵B在存储器中是按照列数据的方式来储存的,即B1、B7、B13、B19、B25、B31、B2、B8直到B36按顺序存储。
当关联设备需要进行矩阵乘法运算时,将第一矩阵的第一标量参数和第二矩阵的第二标量参数写入矩阵乘法运算装置的寄存器模块中,然后向矩阵乘法运算装置发送矩阵乘法运算指令,矩阵乘法运算装置的控制模块在接收到关联设备发送的矩阵乘法运算指令时,从寄存器模块中读取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数,其中,第一标量参数包括第一矩阵的首元素地址(第一矩阵的首元素在关联设备存储模块中的地址)和行列数,第二标量参数包括第二矩阵的首元素地址(第二矩阵的首元素在关联设备存储模块中的地址)和行列数。
步骤S20,基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;
之后,控制模块基于第一标量参数和第二标量参数,从关联设备的存储模块中查找第一矩阵和第二矩阵,并确定第一矩阵的第一分割参数和第一填充参数,以及,确定第二矩阵的第二分割参数和第二填充参数。
作为一种实施方式,步骤S20包括:
A,根据所述第一标量参数中所述第一矩阵的首元素地址查找所述第一矩阵,以及,根据所述第二标量参数中所述第二矩阵的首元素地址查找所述第二矩阵;
B,基于所述第一标量参数中所述第一矩阵的行列数,确定所述第一矩阵的第一分割参数和第一填充参数,以及,基于所述第二标量参数中所述第二矩阵的行列数,确定所述第二矩阵的第二分割参数和第二填充参数。
即,控制模块根据第一标量参数中第一矩阵首元素地址,从关联设备的存储模块中查找第一矩阵,以及,根据第二标量参数中第二矩阵首元素地址,从关联设备的存储模块中查找第二矩阵;控制模块基于第一标量参数中第一矩阵的行列数,计算第一矩阵的第一分割参数和第一填充参数,以及,基于第二标量参数中第二矩阵的行列数,计算第二矩阵的第二分割参数和第二填充参数。
作为一种实施方式,步骤B包括:
B1,根据所述第一矩阵的行列数,结合预设单个目标子矩阵行列数,确定所述第一矩阵的第一分割参数和第一填充参数,其中,所述第一分割参数包括所述第一矩阵的分割份数,所述第一填充参数包括所述第一矩阵的待填充行列和待填充元素;
B2,根据所述第二矩阵的行列数,结合预设单个目标子矩阵行列数,确定所述第一矩阵的第二分割参数和第二填充参数,其中,所述第二分割参数包括所述第二矩阵的分割份数,所述第二填充参数包括所述第二矩阵的待填充行列和待填充元素。
即,本实施例控制模块中预先设置有单个目标子矩阵行列数,也就是大矩阵被分割时的需求单个子矩阵大小,单个目标子矩阵行列数可选为4行4列,即一个4*4的矩阵,当然也可以是2*2矩阵,6*6矩阵,8*8矩阵。根据第一矩阵的行列数,结合预设单个目标子矩阵行列数,即可得到第一矩阵的第一分割参数和第一填充参数,其中,第一填充参数包括第一矩阵的待填充行列和待填充元素(为0,不会影响最终运算结果);以及,根据第二矩阵的行列数,结合预设单个目标子矩阵行列数,即可得到第二矩阵的第二分割参数和第二填充参数,其中,第二分割参数包括第二矩阵的分割份数,第二填充参数包括所述第二矩阵的待填充行列和待填充元素(为0,不会影响最终运算结果)。比如,一个6*6大小的矩阵要分割成个4*4大小的子矩阵,分割份数为4,但需扩展为一个8*8大小的矩阵才能实现分割,可以通过在相应的行列中填充0数值实现。
步骤S30,基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;
控制模块基于第一标量参数和第二标量参数,从关联设备的存储模块中查找到第一矩阵和第二矩阵,并确定第一矩阵的第一分割参数和第一填充参数,以及,确定第二矩阵的第二分割参数和第二填充参数之后,调用分割填充模块,通过分割填充模块,按照第一分割参数和第一填充参数对第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,按照第二分割参数和第二填充参数,对第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列。
作为一种实施方式,步骤S30包括:按照所述第一矩阵的分割份数和预设单个目标子矩阵行列数,对所述第一矩阵依次进行分割操作,并在每次进行分割操作时,将所述第一矩阵的待填充元素填充至所述第一矩阵的待填充行列,得到第一子矩阵序列;以及,按照所述第二矩阵的分割份数和预设单个目标子矩阵行列数,对所述第二矩阵进行依次分割操作,并在每次进行分割操作时,将所述第二矩阵的待填充元素填充至所述第二矩阵的待填充行列,得到第二子矩阵序列。例如,可参照图5,图5是分割填充模块进行子矩阵分割填充操作的示意图,6*6大小的第一矩阵A会被扩展为一个8*8大小的矩阵(在相应的行列用数值0填充)并分割为4个4*4大小的子矩阵序列。
步骤S40,依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
之后,控制模块通过运算模块,依次选择第一子矩阵序列中的子矩阵和第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的多个乘积进行累加,即可得到第一矩阵和第二矩阵的运算结果。
由此,本实施例矩阵乘法运算装置通过其分割填充模块,以DMA(直接内存存取)的方式在关联设备的存储模块中将大矩阵分割成子矩阵,再通过其运算模块对子矩阵乘加,从而实现了对大矩阵的快速运算,运算过程无需关联设备发出其他控制指令,简化了指令集,且降低了大矩阵运算的复杂度,提高了运算的速度。此外,由矩阵乘法运算装置对大矩阵进行运算,也能减少对关联设备的内存消耗。
进一步地,控制模块通过运算模块,在计算得到第一矩阵和第二矩阵的运算结果之后,将第一矩阵和第二矩阵的运算结果写入关联设备的存储模块中,供关联设备读取。运算结果的存储方式,可以按行数据来存储,也可以按子矩阵块存储,如图4所示的矩阵C(表示第一矩阵A和第二矩阵B的运算结果),可以与第一矩阵一样按行数据来存储,也可以按子矩阵块存储。由此,关联设备通过矩阵乘法运算装置实现大矩阵乘法运算,不仅提高了运算的速度,也能减少关联设备的内存消耗。
本实施例提供一种矩阵乘法运算方法,在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。本实施例将大矩阵分割成子矩阵,再对子矩阵乘加,实现了对大矩阵的快速运算,运算过程无需其他控制指令,简化了指令集,且降低了大矩阵运算的复杂度,提高了运算的速度。
进一步地,基于上述第一实施例,提出了本发明矩阵乘法运算放法的第二实施例,与第一实施例的区别在于,参照图6,所述步骤20之后,包括:
步骤S50,基于所述第一分割参数和所述第一填充参数,对所述第一矩阵依次进行子矩阵分割填充操作,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵依次进行子矩阵分割填充操作,每次对所述第一矩阵进行子矩阵分割填充操作后得到的子矩阵和每次对所述第二矩阵进行子矩阵分割填充操作后得到的子矩阵组成子矩阵对;
步骤S60,对每次得到的子矩阵对做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
即,作为一种实施方式,控制模块基于第一标量参数和第二标量参数,从关联设备的存储模块中查找到第一矩阵和第二矩阵,并确定第一矩阵的第一分割参数和第一填充参数,以及,确定第二矩阵的第二分割参数和第二填充参数之后,调用分割填充模块,通过分割填充模块,依据第一矩阵首元素地址,在关联设备的存储模块中,按照第一矩阵的分割份数和预设单个目标子矩阵行列数,对第一矩阵依次进行分割操作,分割时先分割首个子矩阵,然后根据第一矩阵的待填充行列,判断分割得到的首个子矩阵是否需要填充,若是,则在相应的行列填充0。
以及,依据第二矩阵首元素的存储地址,在关联设备的存储模块中,按照第二矩阵的分割份数和预设单个目标子矩阵行列数,对第二矩阵依次进行分割操作,具体地,分割时先分割首个子矩阵,然后根据第二矩阵的待填充行列,判断分割得到的首个子矩阵是否需要填充,若是,则在相应的行列填充0。
然后同时将第一矩阵分割得到的首个子矩阵和第一矩阵分割得到的首个子矩阵送达运算模块,控制模块控制运算模块对第一矩阵分割得到的首个子矩阵和第一矩阵分割得到的首个子矩阵进行乘法运算,得到第一个乘积。
控制模块通过分割填充模块在同时将第一矩阵分割得到的首个子矩阵和第一矩阵分割得到的首个子矩阵送达运算模块之后,针对第一矩阵,再依据第一矩阵首元素的地址,在关联设备的存储模块中,分割下一子矩阵,判断分割得到的下一子矩阵是否需要填充,若是,则在相应的行列填充0。以及,针对第二矩阵,再依据第二矩阵首元素的存储地址,在关联设备的存储模块中,再分割下一子矩阵,判断分割得到的下一子矩阵是否需要填充,若是,则在相应的行列填充0。
然后同时将第一矩阵分割得到的下一子矩阵和第一矩阵分割得到的下一子矩阵送达运算模块,控制模块控制运算模块对第一矩阵分割得到的下一子矩阵和第一矩阵分割得到的下一子矩阵进行乘法运算,得到第二个乘积。
依次类推,直至第一矩阵和第二矩阵子矩阵被分割完成,这种流水线处理流程,使得分割填充模块的子矩阵分割填充操作与运算模块的运算操作无缝衔接,运算模块计算出一对子矩阵的一个乘积之后,可以立即计算下一对子矩阵的下一个乘积,可以有效提升运算速度。通过运算模块运算得到多个乘积之后,通过运算模块将多个乘积进行累加,即得到第一矩阵和第二矩阵的运算结果。
本实施例矩阵乘法运算装置通过其分割填充模块,以DMA(直接内存存取)的方式在关联设备的存储模块中将大矩阵分割成子矩阵,再通过其运算模块对子矩阵乘加,从而实现了对大矩阵的快速运算,运算过程无需关联设备发出其他控制指令,简化了指令集,且降低了大矩阵运算的复杂度,提高了运算的速度。此外,由矩阵乘法运算装置对大矩阵进行运算,也能减少关联设备的内存消耗。
此外,本发明实施例还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有矩阵乘法运算程序,其中所述矩阵乘法运算程序被控制模块执行时,实现如上述的矩阵乘法运算方法的步骤。
其中,矩阵乘法运算程序被执行时所实现的方法可参照本发明矩阵乘法运算方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该确定机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,确定机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种矩阵乘法运算方法,其特征在于,所述方法包括以下步骤:
在接收到矩阵乘法运算指令时,获取待运算第一矩阵的第一标量参数和待运算第二矩阵的第二标量参数;
基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数;
基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列;
依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
2.如权利要求1所述的矩阵乘法运算方法,其特征在于,所述基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数的步骤包括:
根据所述第一标量参数中所述第一矩阵的首元素地址查找所述第一矩阵,以及,根据所述第二标量参数中所述第二矩阵的首元素地址查找所述第二矩阵;
基于所述第一标量参数中所述第一矩阵的行列数,确定所述第一矩阵的第一分割参数和第一填充参数,以及,基于所述第二标量参数中所述第二矩阵的行列数,确定所述第二矩阵的第二分割参数和第二填充参数。
3.如权利要求2所述的矩阵乘法运算方法,其特征在于,所述基于所述第一标量参数中所述第一矩阵的行列数,确定所述第一矩阵的第一分割参数和第一填充参数,以及,基于所述第二标量参数中所述第二矩阵的行列数,确定所述第二矩阵的第二分割参数和第二填充参数的步骤包括:
根据所述第一矩阵的行列数,结合预设单个目标子矩阵行列数,确定所述第一矩阵的第一分割参数和第一填充参数,其中,所述第一分割参数包括所述第一矩阵的分割份数,所述第一填充参数包括所述第一矩阵的待填充行列和待填充元素;以及,
根据所述第二矩阵的行列数,结合预设单个目标子矩阵行列数,确定所述第一矩阵的第二分割参数和第二填充参数,其中,所述第二分割参数包括所述第二矩阵的分割份数,所述第二填充参数包括所述第二矩阵的待填充行列和待填充元素。
4.如权利要求3所述的矩阵乘法运算方法,其特征在于,所述基于所述第一分割参数和所述第一填充参数,对所述第一矩阵进行子矩阵分割填充操作得到第一子矩阵序列,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵进行子矩阵分割填充操作得到第二子矩阵序列的步骤包括:
按照所述第一矩阵的分割份数和预设单个目标子矩阵行列数,对所述第一矩阵依次进行分割操作,并在每次进行分割操作时,将所述第一矩阵的待填充元素填充至所述第一矩阵的待填充行列,得到第一子矩阵序列;以及,
按照所述第二矩阵的分割份数和预设单个目标子矩阵行列数,对所述第二矩阵进行依次分割操作,并在每次进行分割操作时,将所述第二矩阵的待填充元素填充至所述第二矩阵的待填充行列,得到第二子矩阵序列。
5.如权利要求1所述的矩阵乘法运算方法,其特征在于,所述基于所述第一标量参数和第二标量参数,确定所述第一矩阵和所述第二矩阵,并确定所述第一矩阵的第一分割参数和第一填充参数,以及,确定所述第二矩阵的第二分割参数和第二填充参数的步骤之后,包括:
基于所述第一分割参数和所述第一填充参数,对所述第一矩阵依次进行子矩阵分割填充操作,以及,基于所述第二分割参数和所述第二填充参数,对所述第二矩阵依次进行子矩阵分割填充操作,每次对所述第一矩阵进行子矩阵分割填充操作后得到的子矩阵和每次对所述第二矩阵进行子矩阵分割填充操作后得到的子矩阵组成子矩阵对;
对每次得到的子矩阵对做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果。
6.如权利要求1所述的矩阵乘法运算方法,其特征在于,所述第一矩阵的待填充元素和所述第二矩阵的待填充元素均为0。
7.如权利要求1或5所述的矩阵乘法运算方法,其特征在于,所述矩阵乘法运算指令由关联设备发送,所述第一矩阵和所述第二矩阵存储于所述关联设备中,
所述依次选择所述第一子矩阵序列中的子矩阵和所述第二子矩阵序列中的子矩阵做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果的步骤之后,或,对每次得到的子矩阵对做乘法运算,得到多个乘积,并将得到的所述多个乘积进行累加,得到所述第一矩阵和所述第二矩阵的运算结果的步骤之后,包括:
将所述运算结果写入所述关联设备中。
8.一种矩阵乘法运算装置,其特征在于,所述矩阵乘法运算装置包括:
分割填充模块,用于分别对待运算的第一矩阵和第二矩阵进行子矩阵分割填充操作,以生成用于运算的第一子矩阵序列和第二子矩阵序列;
运算模块,用于对所述第一子矩阵序列和第二子矩阵序列进行乘加运算,以生成所述第一矩阵和所述第二矩阵的运算结果;
控制模块,用于控制所述分割填充模块和所述运算模块。
9.如权利要求8所述的矩阵乘法运算装置,其特征在于,所述矩阵乘法运算还装置包括:
寄存器模块,用于存储所述第一矩阵的第一标量参数和所述第二矩阵的第二标量参数。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有矩阵乘法运算程序,其中所述矩阵乘法运算程序被控制模块执行时,实现如权利要求1至7中任一项所述的矩阵乘法运算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910659020.2A CN110377876A (zh) | 2019-07-19 | 2019-07-19 | 矩阵乘法运算方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910659020.2A CN110377876A (zh) | 2019-07-19 | 2019-07-19 | 矩阵乘法运算方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110377876A true CN110377876A (zh) | 2019-10-25 |
Family
ID=68254451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910659020.2A Pending CN110377876A (zh) | 2019-07-19 | 2019-07-19 | 矩阵乘法运算方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377876A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328962A (zh) * | 2020-11-27 | 2021-02-05 | 深圳致星科技有限公司 | 矩阵运算优化方法、装置、设备和可读存储介质 |
CN113032723A (zh) * | 2021-05-25 | 2021-06-25 | 广东省新一代通信与网络创新研究院 | 一种矩阵乘法器的实现方法及矩阵乘法器装置 |
CN115248664A (zh) * | 2022-09-22 | 2022-10-28 | 北京东远润兴科技有限公司 | 数据的读写方法、装置、设备及存储介质 |
CN115859011A (zh) * | 2022-11-18 | 2023-03-28 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
-
2019
- 2019-07-19 CN CN201910659020.2A patent/CN110377876A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328962A (zh) * | 2020-11-27 | 2021-02-05 | 深圳致星科技有限公司 | 矩阵运算优化方法、装置、设备和可读存储介质 |
CN113032723A (zh) * | 2021-05-25 | 2021-06-25 | 广东省新一代通信与网络创新研究院 | 一种矩阵乘法器的实现方法及矩阵乘法器装置 |
CN113032723B (zh) * | 2021-05-25 | 2021-08-10 | 广东省新一代通信与网络创新研究院 | 一种矩阵乘法器的实现方法及矩阵乘法器装置 |
CN115248664A (zh) * | 2022-09-22 | 2022-10-28 | 北京东远润兴科技有限公司 | 数据的读写方法、装置、设备及存储介质 |
CN115859011A (zh) * | 2022-11-18 | 2023-03-28 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
CN115859011B (zh) * | 2022-11-18 | 2024-03-15 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377876A (zh) | 矩阵乘法运算方法、装置及计算机可读存储介质 | |
CN106503791A (zh) | 用于有效神经网络部署的系统和方法 | |
CN106056529B (zh) | 一种对用于图片识别的卷积神经网络训练的方法与设备 | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
CN107122490B (zh) | 一种分组查询中聚合函数的数据处理方法及系统 | |
CN107862378A (zh) | 基于多核的卷积神经网络加速方法及系统、存储介质及终端 | |
CN109597965B (zh) | 基于深度神经网络的数据处理方法、系统、终端及介质 | |
CN110390075A (zh) | 矩阵预处理方法、装置、终端及可读存储介质 | |
WO2019019649A1 (zh) | 投资组合产品的生成方法、装置、存储介质和计算机设备 | |
CN110633785B (zh) | 一种卷积神经网络的计算方法及系统 | |
CN108122030A (zh) | 一种卷积神经网络的运算方法、装置和服务器 | |
CN114841315A (zh) | 混合专家模型实现方法、系统、电子设备及存储介质 | |
CN106648084A (zh) | 虚拟现实设备中的数据处理方法及装置 | |
CN113254215B (zh) | 数据处理方法和装置、存储介质及电子设备 | |
CN112270083B (zh) | 一种多分辨建模与仿真方法及系统 | |
CN109598344A (zh) | 模型生成方法和装置 | |
CN113792946B (zh) | 物品陈列方法、装置、电子设备和计算机可读介质 | |
CN111722923A (zh) | 一种异构资源的调用方法、装置和计算机可读存储介质 | |
CN111047025B (zh) | 一种卷积计算方法及装置 | |
CN106648895A (zh) | 一种处理数据的方法、装置及终端 | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
CN114662689A (zh) | 一种神经网络的剪枝方法、装置、设备及介质 | |
CN106156054B (zh) | 一种加载页面模块的方法和设备 | |
CN114580618A (zh) | 一种反卷积处理方法、装置、电子设备及介质 | |
CN114003388A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191025 |
|
RJ01 | Rejection of invention patent application after publication |