CN110415157A - 一种矩阵乘法的计算方法及装置 - Google Patents
一种矩阵乘法的计算方法及装置 Download PDFInfo
- Publication number
- CN110415157A CN110415157A CN201810386460.0A CN201810386460A CN110415157A CN 110415157 A CN110415157 A CN 110415157A CN 201810386460 A CN201810386460 A CN 201810386460A CN 110415157 A CN110415157 A CN 110415157A
- Authority
- CN
- China
- Prior art keywords
- matrix
- repository
- computing unit
- multiplication
- data
- 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.)
- Granted
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 443
- 238000004364 calculation method Methods 0.000 title claims description 30
- 238000003860 storage Methods 0.000 claims abstract description 30
- 238000000034 method Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 19
- 239000000047 product Substances 0.000 description 11
- 230000000694 effects Effects 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 102000008297 Nuclear Matrix-Associated Proteins Human genes 0.000 description 1
- 108010035916 Nuclear Matrix-Associated Proteins Proteins 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 229910052729 chemical element Inorganic materials 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 210000000299 nuclear matrix Anatomy 0.000 description 1
- 238000005498 polishing Methods 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请提出一种矩阵乘法器。由于现有的矩阵乘法器所包含的全连接网络占用芯片空间较大,且进行矩阵乘法计算时需要进行大量的存储访问,导致流多处理器进行矩阵乘法计算效率较低。基于提高图形处理器进行矩阵乘法计算的效率的目的,本申请所提出的矩阵乘法器在进行矩阵乘法时,利用不同组的存储库可以同时访问的特性,每次将作为被乘数的矩阵的一行元素以及作为乘数的矩阵的一列元素加载到相应的计算单元中,同时进行计算。通过使用这种矩阵乘法器,可以减少完成矩阵乘法计算所需要的步骤,降低了所需进行的存储访问的次数,从而提高了图形处理器进行矩阵乘法计算的效率。
Description
技术领域
本发明涉及图形技术领域,特别涉及一种矩阵乘法计算的技术领域。
背景技术
图形处理器(英文全称:Graphics Processing Unit,缩写:GPU)是一种用于在主机等设备上进行图像运算工作的微处理器。在GPU中,流多处理器(英文全称:StreamingMultiprocessor,缩写:SM)是基本计算单元,其采用单指令多线程的执行方式,能够保证多线程的同时执行。大致来说,SM包括指令缓存(英文:Instruction Buffer)、线程束调度器(英文:Warp Scheduler)、指令分发单元(英文:Dispatch Unit)、流处理器(英文全称:Streaming Processor,缩写:SP)、双精度浮点运算单元(英文全称:Double precisionfloating-point unit,缩写:DP)等单元。
在GPU进行图像处理时,矩阵乘法是其进行数据计算中最重要的操作之一,具有很多的应用。例如,在深度学习的结构中,卷积神经网络在图像和语音识别方面能够给出更好的结果,对于大型图像处理有着出色的表现,而在某些卷积神经网络的具体实现过程中,可以将卷积计算转化为矩阵乘法计算,将卷积核矩阵和输入图像矩阵变换成两个大的矩阵A和B,然后A和B相乘得到结果矩阵D。其中,结果矩阵D的每一行表示一个输出图像,其输出图像的个数等于结果矩阵D的行数。
矩阵,是数学中一个重要的基本概念,一个M*N的矩阵是一个由M行N列元素排列成的矩形阵列。对于矩阵乘法,它只有在作为被乘数的第一个矩阵的列数和作为乘数的第二个矩阵的行数相同时才可以进行。矩阵乘法的计算规则是,第一个矩阵第一行的每个元素,分别乘以第二个矩阵第一列对应位置的元素,然后将乘积相加,作为结果矩阵第一行第一列的元素。以此类推,结果矩阵第J行第K列的元素,等于第一个矩阵的第J行与第二个矩阵第K列,对应位置每个元素的乘积的和。而矩阵加法的计算规则相对简单,即将两个待相加的矩阵相同位置上的元素进行相加,作为结果矩阵该位置上的元素,从而得到结果矩阵。
相应的,对于GPU中的SM来说,矩阵乘法器是重要的组成部分,它是GPU采用各种算法执行矩阵乘法操作的依托,目前,GPU中的SM执行矩阵乘法操作存在着需要占用大量的芯片空间以及需要进行大量的存储访问的问题,从而导致SM进行矩阵乘法计算效率较低。
发明内容
本申请的实施例提供一种矩阵乘法器,可以提高矩阵乘法计算的效率。
第一方面,本申请提供一种矩阵乘法器,该矩阵乘法器包括N*N个计算单元,该N*N个计算单元组成N*N的矩阵,N为大于等于2的正整数。该矩阵乘法器还包括两个存储库集合,每个存储库集合包括N个存储库,第一存储库集合用于存储输入矩阵中的第一乘法矩阵,第二存储库集合用于存储输入矩阵中的第二乘法矩阵,该第一存储库集合中的N个存储库通过行连接的方式与N*N的矩阵进行连接,第一存储库集合中的第M个存储库与该N*N的矩阵中的第M行的每个计算单元相连接,第二存储库集合中的N个存储库通过列连接的方式与N*N的矩阵进行连接,第二矩阵集合中的第M个存储库与N*N的矩阵中第M列的每个计算单元相连接,其中,M为变量,取值为1≤M≤N。在每个时钟周期,N*N的矩阵中的每一行的每个计算单元用于接收与自身相连接的第一存储库集合中的存储库所广播的第一输入数据,N*N的矩阵中的每一列的每个计算单元用于接收与自身相连接的第二存储库集合中的存储库所广播的第二输入数据;在每个时钟周期,N*N的矩阵中的每个计算单元根据接收到的第一输入数据和第二输入数据进行乘法计算;在第N个时钟周期结束后,矩阵乘法器完成第一乘法矩阵和第二乘法矩阵的乘法运算。
上述方案中,矩阵乘法器在进行矩阵乘法运算时,利用不同组的存储库可以同时访问的特性,每次将作为被乘数的矩阵的一行元素和作为乘数的矩阵的一列元素加载到相应的计算单元中,同时进行计算,从而减少了完成矩阵乘法运算所需要的步骤,降低了所需进行的存储访问的次数,从而提高了图形处理器进行矩阵乘法计算的效率。
对于上述第一方面,一种可能的实现方式是,在每个时钟周期,N*N的矩阵中位于同一行的所有计算单元接收到相同的第一输入数据,该N*N的矩阵中位于同一列的所有计算单元接收到相同的第二输入数据。通过这种做法,可以提高图形处理器进行矩阵乘法计算的效率。
对于上述第一方面,另一种可能的实现方式是,该矩阵乘法器还包括第三存储库集合,该第三存储库集合用于存储结果矩阵,该第三存储库中的N个存储库通过列连接的方式与N*N的矩阵进行连接,该第三存储库集合中第M个存储库与该N*N的矩阵中的第M列的每个计算单元相连接。通过这种做法,可以提高输出矩阵乘法运算的结果矩阵的效率。
对于上述第一方面,另一种可能的实现方式是,该矩阵乘法器还包括第四存储库集合,该第四存储库集合用于存储输入矩阵中的加法矩阵,该第四存储库中的N个存储库通过行连接的方式与N*N的矩阵进行连接,该第四存储库集合中的第M个存储库与该N*N的矩阵中的第M行的每个计算单元相连接。在第一个时钟周期,N*N的矩阵中的第一列的每个计算单元用于接收与自身相连接的第四存储库集合的存储库输入的第一组数据,该第一组数据为加法矩阵中的第一列数据,在第二个时钟周期该N*N的矩阵中的第二列的每个计算单元用于接收与自身相连接的第四存储库集合中的存储库输入的第二组数据,该第二组数据为加法矩阵中的第二列数据,以此类推,在第N个时钟周期,N*N的矩阵中的第N列的每个计算单元用于接收与自身相连接的第四存储库集合中的存储库输入的第N组数据;在第N+1个时钟周期,该N*N的矩阵中的每个计算单元还用于根据接收到的加法矩阵的输入数据和第一乘法矩阵与第二乘法矩阵的乘法计算结果,进行加法运算,以得到第一乘法矩阵、第二乘法矩阵和加法矩阵的乘积计算结果。通过这种算法,使得矩阵乘法器还可用于矩阵加法运算。
对于上述第一方面,另一种可能的实现方式是,矩阵乘法器还包括调度器,该调度器用于获得N*N矩阵形式的第一乘法矩阵和第二乘法矩阵,并将该第一乘法矩阵和第二乘法矩阵分别保存在第一存储库集合和第二存储库集合。通过这种做法,可以将需要进行矩阵乘法计算的矩阵切分成适合该矩阵乘法器的N*N矩阵形式的乘法矩阵,从而提高了矩阵乘法器的效率。
第二方面,本申请提供一种图形处理器,该图形处理器包括如第一方面所述的矩阵乘法器。
第三方面,本申请提供一种片上***,该片上***包括如第一方面所述的矩阵乘法器。
第四方面,本申请提供一种计算方法,用于矩阵乘法器进行计算,该矩阵乘法器包括:N*N个计算单元,该N*N个计算单元组成N*N的矩阵,N为大于等于2的正整数;两个存储库集合,每个存储库集合包括N个存储库,第一存储库集合用于存储输入矩阵中的第一乘法矩阵,第二存储库集合用于存储输入矩阵中的第二乘法矩阵,该第一存储库集合中的N个存储库通过行连接的方式与该N*N的矩阵进行连接,第一存储库集合中的第M个存储库与该N*N的矩阵中的第M行的每个计算单元相连接,第二存储库集合中的N个存储库通过列连接的方式与N*N的矩阵进行连接,该第二存储库集合中的第M个存储库与N*N的矩阵中第M列的每个计算单元相连接,其中,M为变量,取值为1≤M≤N。计算方法包括:在第一个时钟周期,该N*N的矩阵中的每一行的每个计算单元接收与自身相连接的第一存储库集合中的存储库所广播的第一输入数据,N*N的矩阵中的每一列的每个计算单元用于接收与自身相连接的第二存储库集合中的存储库所广播的第二输入数据,该N*N的矩阵中的每个计算单元根据第一输入数据和第二输入数据进行乘法计算,得到第一乘法计算结果,N*N矩阵中的每个计算单元将该第一乘法计算结果与内部寄存器中的初始数值进行加法计算得到第一乘加结果,并在内部寄存器中保存自身计算得到的第一乘加计算结果;在第二个时钟周期,N*N的矩阵中的每一行的每个计算单元接收与自身相连接的第一存储库集合中的存储库广播的第一输入数据,N*N的矩阵中的每一列的每个计算单元用于接收与自身相连接的第二存储库集合中的存储库广播的第二输入数据,该N*N的矩阵中的每个计算单元根据第一输入数据和第二输入数据进行乘法计算,得到第二乘法计算结果,N*N的矩阵中的每个计算单元将自身计算得到的第二乘法计算结果与第二乘加计算结果进行加法计算得到第二乘加结果,并在内部寄存器中保存第二乘加计算结果;在后续的时钟周期,依次类推进行计算,直至在第N个时钟周期后,矩阵乘法器完成第一乘法矩阵和第二乘法矩阵的乘法运算。
对于上述第四方面,一种可能的实现方式是,在每个时钟周期,N*N的矩阵中位于同一行的所有计算单元接收到相同的第一输入数据,该N*N的矩阵中位于同一列的所有计算单元接收到相同的第二输入数据。
对于上述第四方面,另一种可能的实现方式是,该矩阵乘法器还包括第三存储库集合,该第三存储库集合用于存储结果矩阵,该第三存储库集合中的N个存储库通过列连接的方式与N*N的矩阵中的计算单元进行连接,该第三存储库集合中的第M个存储库与N*N的矩阵中的第M列的每个计算单元相连接。计算方法还包括:N*N的矩阵中的每个计算单元将计算得到的第N乘加计算结果输出到与自身相连接的第三存储库集合中的存储库。
对于上述第四方面,另一种可能的实现方式是,该矩阵乘法器还包括第四存储库集合,该第四存储库集合用于存储输入矩阵中的加法矩阵,该第四存储库中的N个存储库通过行连接的方式与N*N的矩阵进行连接,该第四存储库集合中的第M个存储库与该N*N的矩阵中的第M行的每个计算单元相连接。计算方法还包括:在第一个时钟周期,N*N的矩阵中的第一列的每个计算单元用于接收与自身相连接的第四存储库集合的存储库输入的第一组数据,该第一组数据为加法矩阵中的第一列数据,在第二个时钟周期该N*N的矩阵中的第二列的每个计算单元用于接收与自身相连接的第四存储库集合中的存储库输入的第二组数据,该第二组数据为加法矩阵中的第二列数据,以此类推,在第N个时钟周期,N*N的矩阵中的第N列的每个计算单元用于接收与自身相连接的第四存储库集合中的存储库输入的第N组数据;在第N+1个时钟周期,该N*N的矩阵中的每个计算单元还用于根据接收到的加法矩阵的输入数据和第一乘法矩阵与第二乘法矩阵的乘法计算结果,进行加法运算,以得到第一乘法矩阵、第二乘法矩阵和加法矩阵的乘积计算结果。
附图说明
图1是现有技术中存储库集合的结构的示意图。
图2是现有技术中矩阵乘法器的结构的示意图。
图3是现有技术中计算单元的结构的示意图。
图4是本申请的实施例所提供的矩阵乘法器的结构的示意图。
图5是本申请的实施例所提供的计算单元的结构的示意图。
图6是本申请的实施例的流程示意图。
图7是本申请的实施例的初始状态示意图。
图8是本申请的实施例的第一个时钟周期的状态示意图。
图9是本申请的实施例的第二个时钟周期的状态示意图。
图10是本申请的实施例的第三个时钟周期的状态示意图。
图11是本申请的实施例的第四个时钟周期状态示意图。
图12是本申请的实施例的第五个时钟周期状态示意图。
图13是本申请的实施例所提供的图形处理器的结构示意图。
图14是本申请的实施例所提供的片上***的结构示意图。
图15是本申请的实施例所提供的矩阵乘法器块的结构示意图。
具体实施方式
在GPU中,数据的存储通常采用存储库(bank)的组织形式。图1所示为存储库集合的结构的示意图。如图1所示,一个存储库集合由若干列存储块构成,每一列存储块为一个存储库,其中,每个存储块是32位或者64位大小。存储库集合是默认行连续的,即当分配一个数值给存储库集合时,连续的元素是按照行进行连续存储的。当指令在SM中执行时,存取单元(英文全称:Load/Store Units,缩写:LD/ST)从显存中加载数据到存储库中,而SP在执行具体的计算指令时,需要从存储库中读取数据。因此,在SM中有大量的SP和存储库(通常情况下,一个SM中的SP的个数和存储库的组数相同),而每一个SP可能需要访问任意一组存储库中的数据。如图2所示,在现有技术中,存储库和SP通过全连接网络进行相互连接,形成一个矩阵乘法器。其中,图2中的SP、DP和存储库均与全连接网络进行连接,通过这种方式,实现SP与所有存储库之间的相互访问。
SP主要包括计算单元,用来进行矩阵乘法运算的基本步骤。图3是一个典型的计算单元的结构。如图3所示,计算单元主要包括寄存器301、寄存器302、寄存器303和寄存器304等4个寄存器、乘法单元305和加法单元306。其中,寄存器301和寄存器302放入的是进行乘法运算的被乘数和乘数,乘法单元301对这两个数进行乘法运算后,与寄存器303中放入的数进行相加(如果不需要进行加法运算的话,可以将0放入寄存器303中),并将相加得到的结果存入寄存器304,从而完成一次乘加计算。
当进行矩阵乘法运算A*B时,结果矩阵D的第J行第K列的元素,等于第一个矩阵的第J行与第二个矩阵第K列,对应位置每个元素的乘积的和。例如,矩阵A和矩阵B都是4行4列的矩阵,那么矩阵D的第1行第1列的元素,是通过矩阵A第1行的每个元素分别乘以矩阵B第1列的每个元素,并将4个乘积进行相加而得到的。
基于上述SM的结构,目前实现矩阵乘法运算A*B的过程如下:
首先,根据SM中的乘法器的规格对矩阵进行切分,形成符合乘法器规格的子矩阵,存取单元进而从显存中加载切分好的子矩阵到存储库中。特别的,当待划分的矩阵的规格小于乘法器的规格时,需要将待划分的矩阵的相应的位置上用0进行补齐,从而形成符合规格的子矩阵。
其次,分别从划分好的、待进行矩阵乘法的子矩阵所对应的存储库中读取一个数据到对应的SP中。由于所有的SP和存储库都是通过全连接网络相互连接的,因此SP可以根据矩阵乘法的计算规则读取相应的矩阵A和矩阵B的元素至计算单元中。例如,矩阵A和矩阵B是划分好的,规格为4行4列(可表示为4*4)的子矩阵,当计算结果矩阵D中d00的值时,需要进行a00*b00+a01*b10+a02*b20+a03*b30的计算。因此,分别从矩阵A和矩阵B所对应的存储库中取出a00和b00,放入对应的SP中的计算单元中的寄存器301和寄存器302中。
最后,SP利用计算单元进行乘加运算。需要注意的是,每次进行完乘加运算后,都要将该结果存入预先准备好的存储库中。待下一次乘法运算完成后,将该乘加运算结果从该存储空间中取出,放入寄存器303中进行加法运算,例如,在进行完a00*b00计算后,将该结果从寄存器304中放入预先准备好的存储空间中。而当进行a01*b10计算后,将a00*b00的结果从上述存储空间中放入寄存器303中,并利用加法器306与a00*b00的结果进行相加,并将结果先放入寄存器304,再存入相应的存储空间中。以此类推,最终SP利用乘法器完成a00*b00+a01*b10+a02*b20+a03*b30的计算,并将结果通过全连接网络写入存储库中的相应位置,并作为d00的值。
当利用上述算法和装置计算规格为N*N大小的矩阵A*B时,由于每次只从各个矩阵中取出一个元素进行计算,并将每次的计算结果先存入预定的存储空间,下次计算时再调用,因此,完成矩阵A和矩阵B的乘法运算,共需要进行N*N*N次乘加运算,并需要进行3*N*N*N次读操作和N*N*N次写操作。且所有的SP和存储库是通过全连接网络进行连接的,采用这种做法效率较低且会占用较多存储空间。
基于提高GPU中的SM进行矩阵乘法计算的效率的目的,本申请的实施例提供一种新的应用于GPU中的矩阵乘法器。在本申请的实施例中,当计算规格为N*N大小的矩阵A和矩阵B的乘法时,不再每次只从各个矩阵中取出一个元素进行计算,而是利用不同组的存储库可以同时访问的特性,每次将矩阵A的一行元素和矩阵B的一列元素加载到相应的计算单元中,同时进行计算。通过这种做法,可以减少完成矩阵A和矩阵B的乘法运算的步骤,并且可以降低所需进行的存储访问的次数,从而提高SM进行矩阵乘法计算的效率。
图4是本申请的实施例所提供的矩阵乘法器的结构。如图4所示,矩阵乘法器400包括调度器、存储库和计算单元。其中,调度器用于获取相应规格的、用于计算的矩阵,并将该矩阵分别保存在相应的存储库集合中。调度器具体包括矩阵乘法调度单元401、指令分发单元402和指令分发单元403(图中所示为2个,实际上可能为1个或多个),其中,矩阵乘法调度单元401作为矩阵乘法器400的指令调度单元,主要负责指令排序和调度,通过输入指令,可以使得输入、加载、计算、存储和输出等过程有机地结合起来。指令分发单元,通过控制连线与存储库和计算单元相连(图中未示出),用于将矩阵乘法调度单元401所确定的调度指令发送给存储库和计算单元,从而使得存储库和计算单元按照指令处理数据。在本申请的实施例中,矩阵乘法器400中所包含的指令分发单元的数量可以是两个,因此可以实现指令双发射。本申请的矩阵乘法器的计算单元与存储库的连接不再通过全连接网络进行连接,如图4所示,每个矩阵乘法器包括N*N个计算单元,这N*N个计算单元形成一个N*N的矩阵(图示为4*4的矩阵,其中计算单元自左至右、自上而下分别命名为计算单元430至计算单元445),每个矩阵乘法器还包括至少两个存储库集合,每个存储库集合包括N个存储库(图示为4个存储库集合共有16个存储库,分别命名为存储库410至存储库425),第一存储库集合用于存储输入矩阵中的第一乘法矩阵,第二存储库集合用于存储输入矩阵中的第二乘法矩阵。可选的,矩阵乘法器还可以包括第三存储库集合和第四存储库集合,其中,第三存储库集合用于存储结果矩阵,第四存储库集合用于存储输入矩阵中的加法矩阵。本申请的矩阵乘法器在一个计算周期(在计算机领域,也称为时钟周期或者拍)可以完成N*N个乘法计算,从而提高计算效率。为此,第一存储库集合通过行连接的方式与计算单元相连接,第一存储库集合中的N个存储库分别与N*N的计算单元矩阵中的每一行的计算单元直接连接,第一存储库集合的第一存储库与N*N的计算单元矩阵中的第一行的每个计算单元相连接,第一存储库集合的第二存储库与N*N的计算单元矩阵中的第二行的每个计算单元相连接,第一存储库集合的第N存储库与N*N的计算单元矩阵中的第N行的每个计算单元相连接;第二存储库集合通过列连接的方式与计算单元相连接,第二存储库集合中的N个计算单元分别与N*N的计算单元矩阵中的每列的计算单元直接连接,第二存储库集合的第一存储库与N*N的计算单元矩阵中的第一列的每个计算单元相连接,第二存储库集合的第二存储库与N*N的计算单元矩阵中的第二列的每个计算单元相连接,第二存储库集合的第N存储库与N*N的计算单元矩阵中的第N列的每个计算单元相连接。例如,如图4所示,第一存储库集合包含存储库410、存储库411、存储库412与存储库413,第一存储库集合与计算单元矩阵保持行连接,存储库410与矩阵中第一行的每个计算单元相连接,存储库411与矩阵中第二行的每个计算单元相连接,存储库412与矩阵中第三行的每个计算单元相连接,存储库413与矩阵中第四行的每个计算单元相连接;第二存储库集合包含存储库414、存储库415、存储库416与存储库417,第二存储库集合与计算单元矩阵保持列连接,存储库414与矩阵中第一列的每个计算单元相连接,存储库415与矩阵中第二列的每个计算单元相连接,存储库416与矩阵中第三列的每个计算单元相连接,存储库417与矩阵中第四列的每个计算单元相连接。根据上述连接方式,第一存储库集合在第一时钟周期可以向N*N个计算单元广播N个数据,第二存储库集合在第一时钟周期也可以向N*N个计算单元广播N个数据,在第一时钟周期每个计算单元可以进行一次乘法计算,在N个时钟周期之后,可以完成全部的乘法计算。
进一步,矩阵乘法器中的第四存储库集合用于加载输入矩阵中的加法矩阵C,本申请可以将第四存储库集合与所述计算单元矩阵保持行连接,也可以将第四存储库集合与所述计算单元矩阵保持列连接,若第四存储库集合与所述计算单元矩阵保持行连接,则所述第四存储库集合中的每个存储库分别与所述计算单元矩阵的每一行的计算单元相连接,例如图4中,存储库418分别与计算单元矩阵中的第一行的每个计算单元相连接,存储库419分别与计算单元矩阵中的第二行的每个计算单元相连接,存储库420分别与计算单元矩阵中的第三行的每个计算单元相连接,存储库421分别与计算单元矩阵中的第四行的每个计算单元相连接。第四存储库集合可以在每个时钟周期向N个计算单元加载数据,在N个时钟周期之后,第四存储库集合存储的加法矩阵C全部输入到对应的计算单元,则在第N个时钟周期,可以进行相应的加法计算。进一步,矩阵乘法器中的第三存储库集合用于加载输入矩阵中的结果矩阵D,本申请可以将第三存储库集合与所述计算单元矩阵保持行连接,也可以将第三存储库集合与所述计算单元矩阵保持列连接,若第三存储库集合与所述计算单元矩阵保持列连接,则所述第三存储库集合中的每个存储库分别与所述计算单元矩阵的每一列的计算单元相连接,例如图4中,存储库425分别与计算单元矩阵中的第一列的每个计算单元相连接,存储库424分别与计算单元矩阵中的第二列的每个计算单元相连接,存储库423分别与计算单元矩阵中的第三列的每个计算单元相连接,存储库422分别与计算单元矩阵中的第四列的每个计算单元相连接。
图5是本申请的实施例所提供的一种计算单元,以适配矩阵乘法器400所支持的矩阵乘法运算。如图5所示,计算单元500可以为上述矩阵乘法器400中的任意一个计算单元,包括寄存器501至寄存器505等5个寄存器、乘法单元506、加法单元507和加法单元508。当计算矩阵A与矩阵B进行矩阵乘法运算时,结果矩阵D的第一行第一列的元素d00=a00*b00+a01*b10+a02*b20+a03*b30,那么在第一时钟周期先将a00和b00分别放入寄存器501和寄存器502,利用乘法单元506计算a00*b00,并利用加法单元507计算a00*b00的乘积与寄存器503中所存储的数值的和,将该结果放入寄存器503中,替换之前的数值。在初始状态下,寄存器503里存储的数值为0,因此经过上述计算后,寄存器503里存储的数值为a00*b00。在接下来的第二时钟周期,可以将a01和b10分别放入寄存器501和寄存器502,利用乘法单元506计算a01*b10,在接下来的第三时钟周期,可以将a02和b20分别放入寄存器501和寄存器502,利用乘法单元506计算a02*b20,在接下来的第四时钟周期,可以将a03和b30分别放入寄存器501和寄存器502,利用乘法单元506计算a03*b30,在第四时钟周期之后,寄存器503里的数值为a00*b00+a01*b10+a02*b20+a03*b30。当寄存器504中存储的数值为0时,寄存器505中的数值为寄存器503中的数值,将该数值取出并存入预先准备好的存储空间,当寄存器504中存储加法矩阵C的数值时,将寄存器503与寄存器504中的数值进行加法运算,并将加法运算的结果作为结果矩阵第一行第一列元素d00的数值。当计算矩阵D=A*B+C时,此时结果矩阵D中的元素d00=a00*b00+a01*b10+a02*b20+a03*b30+c00,利用计算单元500进行计算d00时,可以通过将c00放入寄存器504,并利用加法单元508与a00*b00+a01*b10+a02*b20+a03*b30的结果进行加法计算的方式实现。
图6为本申请的一个实施例的流程示意图。
S601:在进入矩阵乘法器进行计算之前,对待进行运算的矩阵进行切块,形成适应矩阵乘法器规定的N*N大小的子矩阵,并将子矩阵分别存入对应的存储库中。如果待划分的矩阵的规格小于N*N时,则在相应的位置上补充0,从而形成N*N大小的子矩阵,并不影响计算结果。继续以N=4为例,A、B、C、D均为规格为4行4列的矩阵,其矩阵中的元素分别用aij、bij、cij、dij来表示,其中i表示该元素在矩阵中的行数减1,j表示该元素在矩阵中的列数减1,i和j为大于等于0且小于等于3的整数。参照图7所示的初始状态示意图,根据不同的行数将矩阵A的元素分别放入存储库410至存储库413中,根据不同的列数将矩阵B的元素分别放入存储库414至存储库417中,根据不同的行数将矩阵C的元素分别放入存储库418至存储库421中。
S602:在每个时间周期中,存储库410至存储库417中的每个存储库根据接收到的指令,依照既定的顺序广播一个数据到其相连的所有计算单元中,每个乘加单元分别收到来自矩阵A的元素和来自矩阵B的元素,并分别放入计算单元里的寄存器501和寄存器502中,根据前文提到的方法计算两者的乘积,得到该次的乘积,将得到的乘积与前一次的乘加计算结果进行加法计算,得到该次的乘加计算结果。在第一个时间周期中,前一次的计算结果,即寄存器的初始值为0。
具体来说,在第M个时间周期中,存储库410至存储库413将矩阵A的第M列的元素通过广播的方式发送到计算单元集合中,其中,位于第J行的计算单元接收矩阵A的第J行第M列的元素;存储库414至存储库417将矩阵B的第M行的元素通过广播的方式发送到计算单元集合中,其中,位于第K列的计算单元接收矩阵B的第M行第K列的元素,J、K、M均为小于等于4的正整数。乘积计算单元集合执行接收到的来自矩阵A和矩阵B的元素的乘法计算,得到第M次乘法计算结果,并将第M次乘法计算结果与第M-1次的乘加计算结果进行相加,得到第M次乘加计算结果,其中,第0次计算结果,也即内部寄存器的初始值设置为0。
例如,参见图8所示,在第一个时间周期中,存储库410将a00放入位于第一行的计算单元430至计算单元433中,存储库414将b00放入位于第一列的计算单元430、计算单元434、计算单元348和计算单元442中,其中,a00和b00分别被放入计算单元430的寄存器501和寄存器502中,并进行乘法运算,其结果a00*b00被放入寄存器503中。存储库410至存储库417中的其他寄存器也进行相应的操作。而在第二个时间周期中,参见图9所示,存储库410、存储库414分别将a01和b10放入对应的计算单元中,计算单元430计算a01和b10的乘积,并与寄存器503中存放的a00*b00进行相加,并放入寄存器503中,使得此时寄存器503中的数值为a00*b00+a01*b10。之后每个时间周期内的操作以此类推,并可参见图10所示的第三个时钟周期的状态和图11所示的第四个时钟周期的状态。
在每个时间周期,存储库418至存储库421中的每个存储库根据接收到的指令,依照既定的顺序将其所保存的矩阵C的元素的一个放入相应的计算单元中的寄存器504里。
具体来说,在第M个时间周期中,存储库418至存储库421中的每个存储库将矩阵C的第M列元素发送到第M列的计算单元中,其中,位于第L行第M列的所述计算单元接收位于所述矩阵C第L行第M列的元素,L为小于等于4的正整数。
例如,参见图8所示,在第一个时间周期内,存储库418、存储库419、存储库420和存储库421分别将c00、c10、c20、c30放入计算单元430、计算单元434、计算单元438和计算单元442里的寄存器504中。类似的,参阅图9所示,在第二个时间周期内,存储库418、存储库419、存储库420和存储库421分别将c01、c11、c21、c31放入计算单元431、计算单元435、计算单元439和计算单元443里的寄存器504中,以此类推。
S603:重复进行步骤S602。在四个时间周期之后,存储库410至存储库417已经将他们所存储的矩阵A和矩阵B的元素都放入相应的计算单元,并完成相应的乘加计算。例如经过四个时间周期之后,计算单元430完成了a00*b00+a01*b10+a02*b20+a03*b30,并将该结果放入自身的寄存器503中。同时,存储库418至存储库421已经将矩阵C的元素放入相应的计算单元的寄存器504中。参见图12所示,在第5个时间周期内,利用各个计算单元中的加法器508对寄存器503和寄存器504中的数值进行加法计算,得到的结果作为结果矩阵D的元素,放入各个计算单元的寄存器505中。
S604:将各个计算单元的寄存器505中存放的结果矩阵D的元素依次存储到存储库422至存储库425中对应的存储库中。由于每组存储库每次只能写入一个数据,因此将得出的结果全部写入目的存储库中,需要4个时间周期。
S605:将存储库422至存储库425中所存储的结果矩阵D的元素移至指定的存储空间中。
本申请的实施例中所提出的算法,可以减少完成矩阵A和矩阵B的乘法运算的步骤,从而增加了GPU进行矩阵乘法运算的效率。具体来说,由于采用了将矩阵A和矩阵B的元素广播至一行或一列的计算单元的做法,因此计算矩阵A*B+C,只需要进行3*N*N次读操作和N*N次写操作,与现有技术相比极大地减少了读操作和写操作的次数。同时,由于采用存储库与计算单元直接相连的做法,可以减少占用芯片空间的大小。
需要指出的是,上述S601至S605的标号仅用来进行指代,并不意味着在本申请的实施例中,上述步骤需要按照特定的顺序来执行。
为了提高本申请提供的矩阵乘法器的工作效率,本申请设计了两套指令,分别用于矩阵乘法器的外部调用和内部控制。
对于矩阵乘法器的外部调用指令集,本申请设计了三种指令。
第一种是用来将外部矩阵加载到矩阵乘法器中的存储空间,例如mA=load_matrix_mmp(pA,m,n),其中,pA为指向矩阵乘法器外部矩阵的指针,mA为指向矩阵乘法器内部的矩阵A的指针,m为矩阵A的行数(或者说列元素的个数),n为矩阵A的列数(或者说行元素的个数),该条指令的效果是将A从矩阵乘法器外部加载到矩阵乘法器内部。
第二种是用来进行矩阵的乘加计算。例如,mD=matrix_mul_mmp(mA,mB,mC,m,n,k),其中,mA、mB、mC、mD是指向矩阵乘法器内部的矩阵A、B、C、D的指针,m为矩阵A、C、D的列元素的个数,n为矩阵A的行元素的个数,同时也是矩阵B的列元素的个数,k为矩阵B、C、D行元素的个数。该条指令的效果是启动矩阵乘法器进行矩阵乘法运算D=A*B+C。
第三种是用来将结果矩阵拷贝到矩阵乘法器外部的存储中。例如,store_matrix_mmp(pD,mD,m,n),其中,pD为指向矩阵乘法器外部矩阵的指针,mD为指向矩阵乘法器内部的矩阵的指针,m为矩阵列元素的个数,n为矩阵行元素的个数。该条指令的效果是将矩阵D拷贝到矩阵乘法器外部的指针所指向的空间,其中,矩阵D的大小为m*n。例如,根据上述的外部调用指令集,当矩阵乘法器用来计算4*4大小的矩阵D=A*B+C时,可以采取以下的方式进行设置:
mA=load_matrix_mmp(pA,4,4);
mB=load_matrix_mmp(pB,4,4);
mC=load_matrix_mmp(pC,4,4);
mD=matrix_mul_mmp(mA,mB,mC,4,4,4)
store_matrix_mmp(pD,mD,4,4)
对于矩阵乘法器的内部调用指令集,本申请设计了两种指令。
第一种是用来加载矩阵的元素到计算单元的特定寄存器中,并对加载的元素进行乘累加计算。例如,Load_line_mmp(mA,mB,mC,n),其中mA、mB、mC分别是指向矩阵A、矩阵B、矩阵C的指针,n表示加载的行或者列的编号。该条指令的效果是,以广播的形式加载矩阵A的第n列和矩阵B的第n行到计算单元的特定寄存器中,以及加载矩阵C的第n列到计算单元的特定寄存器中,并根据预设的规则对加载的矩阵元素进行乘累加计算。
第二种是用来进行矩阵加法计算,并将计算结果逐行存储至指定的存储空间。例如,matrix_add_mmp(mD),mD为指向矩阵D的指针。结合上条指令,该条指令的效果是,将矩阵A和矩阵B的乘累加结果与矩阵C进行加法计算,并将计算结果作为结果矩阵D逐行存储至mD指向的存储空间中。
本申请的实施例所提供的矩阵乘法器,可以嵌入到GPU中,用以高效地实现矩阵乘法运算。参阅图13所示,GPU包括存储控制器(英文全称:Memory Controller,简称:MMC)、快捷外设互联标准(英文全称:Peripheral Component Interconnect Express,简称:PCI-E)接口、线程引擎(英文全称:Thread Engine)、二级缓存(英文;L2Cache)以及若干SM等元器件(二级缓存连接SM和存储控制器,图中未示出)。其中,SM作为GPU中的核心运算部件,为整个GPU提供运算能力。需要指出的是,GPU所包含SM的数量并非是固定不变的,而是可以根据需要进行调整,图13所示的SM的数量仅用于举例,而不应该理解为是对本申请的限定。本申请所提供的矩阵乘法器位于SM中,能够减少占用的芯片空间以及减少矩阵乘法运算时读写数据的次数,从而提升GPU的矩阵乘法运算性能和能效比。
本申请的实施例所提供的矩阵乘法器,还可以与CPU核心一起构建片上***(英文全称:System on a Chip,简称:SoC),快速处理应用中的矩阵乘加运算。图14为包含矩阵乘法器的一种片上***。如图14所示,该片上***包括处理器、数字信号处理单元(英文全称:Digital Signal Processing,简称:DSP)、编译码器(英文:CODEC)以及矩阵乘法器块(英文全称:Matrix Multiplication Block,简称:MMB),这些部件之间通过二级缓存进行连接。其中,处理器可以是先进精简指令集机器处理器(英文全称:Advanced RISC MachineProcessor)。参阅图15所示,MMP由若干矩阵乘法器构成,这些矩阵乘法器之间通过一级缓存(英文:L1Cache)进行连接。基于片上***,只需要将应用中的矩阵乘加运算抽出,利用本申请的实施例所提供的矩阵乘法器进行计算,可以提高应用运行的效率。
Claims (11)
1.一种矩阵乘法器,其特征在于,所述矩阵乘法器包括:
N*N个计算单元,所述N*N个计算单元组成N*N的矩阵,N为大于等于2的正整数;
两个存储库集合,每个存储库集合包括N个存储库,第一存储库集合用于存储输入矩阵中的第一乘法矩阵,第二存储库集合用于存储输入矩阵中的第二乘法矩阵,所述第一存储库集合中第M个存储库与所述N*N的矩阵中第M行的每个计算单元相连接,所述第二存储库集合中第M个存储库与所述N*N的矩阵中第M列的每个计算单元相连接,其中,M为变量,取值为1≤M≤N;
在每个时钟周期,所述N*N的矩阵中的每一行的每个计算单元用于接收与自身相连接的所述第一存储库集合中的存储库所广播的第一输入数据,所述N*N的矩阵中的每一列的每个计算单元用于接收与自身相连接的所述第二存储库集合中的存储库所广播的第二输入数据;在每个时钟周期,所述N*N的矩阵中的每个计算单元根据接收到的所述第一输入数据和所述第二输入数据进行乘法计算;在第N个时钟周期结束后,所述矩阵乘法器完成所述第一乘法矩阵与所述第二乘法矩阵的乘法运算。
2.根据权利要求1所述的矩阵乘法器,其特征在于,在每个时钟周期,所述N*N的矩阵中位于同一行的所有计算单元接收到相同的第一输入数据,所述N*N的矩阵中位于同一列的所有计算单元接收到相同的第二输入数据。
3.根据权利要求1或2所述的矩阵乘法器,其特征在于,所述矩阵乘法器还包括:
第三存储库集合,所述第三存储库集合用于存储结果矩阵,所述第三存储库集合中第M个存储库与所述N*N的矩阵中第M列的每个计算单元相连接。
4.根据权利要求1-3任意一项所述的矩阵乘法器,其特征在于,所述矩阵乘法器还包括:
第四存储库集合,所述第四存储库集合用于存储输入矩阵中的加法矩阵,所述第四存储库集合中第M个存储库与所述N*N的矩阵中第M行的每个计算单元相连接;
在第一个时钟周期,所述N*N的矩阵中的第一列的每个计算单元用于接收与自身相连接的所述第四存储库集合的存储库输入的第一组数据,所述第一组数据为所述加法矩阵中的第一列数据,在第二个时钟周期所述N*N的矩阵中的第二列的每个计算单元用于接收与自身相连接的所述第四存储库集合中的存储库输入的第二组数据,所述第二组数据为所述加法矩阵中的第二列数据,以此类推,在第N个时钟周期所述N*N的矩阵中的第N列的每个计算单元用于接收与自身相连接的所述第四存储库集合中的存储库输入的第N组数据,所述第N组数据为所述加法矩阵中的第N列数据;
在所述第N+1个时钟周期,所述N*N的矩阵中的每个计算单元还用于根据接收到的所述加法矩阵的输入数据和所述第一乘法矩阵与所述第二乘法矩阵的乘法计算结果,进行加法运算,以得到所述第一乘法矩阵、第二乘法矩阵与加法矩阵的乘加计算结果。
5.根据权利要求1-4任意一项所述的矩阵乘法器,其特征在于,所述矩阵乘法器还包括:
调度器,所述调度器用于获得N*N矩阵形式的第一乘法矩阵和第二乘法矩阵,并将所述第一乘法矩阵和第二乘法矩阵分别保存在所述第一存储库集合和所述第二存储库集合。
6.一种图形处理器,其特征在于,所述图形处理器包括如权利要求1-5任意一项所述的矩阵乘法器。
7.一种片上***,其特征在于,所述片上***包括如权利要求1-5任意一项所述的矩阵乘法器。
8.一种计算方法,用于矩阵乘法器进行计算,其特征在于,所述矩阵乘法器包括:N*N个计算单元,所述N*N个计算单元组成N*N的矩阵,N为大于等于2的正整数;两个存储库集合,每个存储库集合包括N个存储库,第一存储库集合用于存储输入矩阵中的第一乘法矩阵,第二存储库集合用于存储输入矩阵中的第二乘法矩阵,所述第一存储库集合中第M个存储库与所述N*N的矩阵中第M行的每个计算单元相连接,所述第二存储库集合中第M个存储库与所述N*N的矩阵中第M列的每个计算单元相连接,其中,M为变量,取值为1≤M≤N;
所述方法包括:
在第一个时钟周期,所述N*N的矩阵中的每一行的每个计算单元接收与自身相连接的所述第一存储库集合中的存储库所广播的第一输入数据,所述N*N的矩阵中的每一列的每个计算单元用于接收与自身相连接的所述第二存储库集合中的存储库所广播的第二输入数据,所述N*N的矩阵中的每个计算单元根据所述第一输入数据和所述第二输入数据进行乘法计算,得到第一乘法计算结果,所述N*N的矩阵中的每个计算单元将所述第一乘法计算结果与内部寄存器中的初始数值进行加法运算得到第一乘加结果,并在内部寄存器中保存自身计算得到的所述第一乘加计算结果;
在第二个时钟周期,所述N*N的矩阵中的每一行的每个计算单元接收与自身相连接的所述第一存储库集合中的存储库广播的第一输入数据,所述N*N的矩阵中的每一列的每个计算单元用于接收与自身相连接的所述第二存储库集合中的存储库广播的第二输入数据,所述N*N的矩阵中的每个计算单元根据所述第一输入数据和所述第二输入数据进行乘法计算,得到第二乘法计算结果,所述N*N的矩阵中的每个计算单元将自身计算得到的第二乘法计算结果与所述第一乘加计算结果进行加法运算得到第二乘加结果,并在内部寄存器中保存所述第二乘加计算结果;
在后续的时钟周期,依次类推进行计算,直至在第N个时钟周期后,所述矩阵乘法器完成所述第一乘法矩阵与所述第二乘法矩阵的乘法运算。
9.根据权利要求8所述的计算方法,其特征在于,在每个时钟周期,所述N*N的矩阵中位于同一行的所有计算单元接收到相同的第一输入数据,所述N*N的矩阵中位于同一列的所有计算单元接收到相同的第二输入数据。
10.根据权利要求8或9所述的计算,其特征在于,所述矩阵乘法器还包括:
第三存储库集合,所述第三存储库集合用于存储结果矩阵,所述第三存储库集合中第M个存储库与所述N*N的矩阵中第M列的每个计算单元相连接;
所述方法还包括:
所述N*N的矩阵中的每个计算单元将计算得到的第N乘加计算结果输出到与自身相连接的所述第三存储库集合中的存储库。
11.根据权利要求8-10任一项所述的计算方法,其特征在于,所述矩阵乘法器还包括:
第四存储库集合,所述第四存储库集合用于存储输入矩阵中的加法矩阵,所述第四存储库集合中第M个存储库与所述N*N的矩阵中第M行的每个计算单元相连接;
所述方法还包括:
在第一个时钟周期,所述N*N的矩阵中的第一列的每个计算单元用于接收与自身相连接的所述第四存储库集合中的存储库输入的第一组数据,所述第一组数据为所述加法矩阵中的第一列数据,在第二个时钟周期所述N*N的矩阵中的第二列的每个计算单元用于接收与自身相连接的所述第四存储库集合中的存储库输入的第二组数据,所述第二组数据为所述加法矩阵中的第二列数据,以此类推,在第N个时钟周期所述N*N的矩阵中的第N列的每个计算单元用于接收与自身相连接的所述第四存储库集合中的存储库输入的第N组数据,所述第N组数据为所述加法矩阵中的第N列数据;
在所述第N+1个时钟周期,所述N*N的矩阵中的每个计算单元还用于根据接收到的所述加法矩阵的输入数据和所述第一乘法矩阵与所述第二乘法矩阵的第N乘加计算结果,进行加法运算,以得到所述第一乘法矩阵、第二乘法矩阵与加法矩阵的乘加计算结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810386460.0A CN110415157B (zh) | 2018-04-26 | 2018-04-26 | 一种矩阵乘法的计算方法及装置 |
PCT/CN2018/117559 WO2019205617A1 (zh) | 2018-04-26 | 2018-11-27 | 一种矩阵乘法的计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810386460.0A CN110415157B (zh) | 2018-04-26 | 2018-04-26 | 一种矩阵乘法的计算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110415157A true CN110415157A (zh) | 2019-11-05 |
CN110415157B CN110415157B (zh) | 2024-01-30 |
Family
ID=68294819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810386460.0A Active CN110415157B (zh) | 2018-04-26 | 2018-04-26 | 一种矩阵乘法的计算方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110415157B (zh) |
WO (1) | WO2019205617A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199119A (zh) * | 2020-10-21 | 2021-01-08 | 上海壁仞智能科技有限公司 | 向量运算装置 |
CN112433760A (zh) * | 2020-11-27 | 2021-03-02 | 海光信息技术股份有限公司 | 数据排序方法和数据排序电路 |
CN112632464A (zh) * | 2020-12-28 | 2021-04-09 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
CN112991142A (zh) * | 2021-03-31 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
CN113268708A (zh) * | 2021-07-16 | 2021-08-17 | 北京壁仞科技开发有限公司 | 用于矩阵计算的方法及装置 |
CN113536219A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN113536220A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器及相关产品 |
WO2021212972A1 (zh) * | 2020-04-21 | 2021-10-28 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN114186186A (zh) * | 2020-09-15 | 2022-03-15 | 华为技术有限公司 | 矩阵计算方法及相关设备 |
WO2022205197A1 (zh) * | 2021-03-31 | 2022-10-06 | 华为技术有限公司 | 一种矩阵乘法器、矩阵计算方法及相关设备 |
CN115756384A (zh) * | 2022-11-22 | 2023-03-07 | 海光信息技术股份有限公司 | 张量计算单元及使用方法、数据处理装置及操作方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086699A (zh) * | 2007-07-12 | 2007-12-12 | 浙江大学 | 基于单fpga的矩阵乘法器装置 |
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
CN104063357A (zh) * | 2013-03-22 | 2014-09-24 | 富士通株式会社 | 处理器以及处理方法 |
US20150074163A1 (en) * | 2013-09-11 | 2015-03-12 | Fujitsu Limited | Product-sum operation circuit and product-sum operation system |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN107533667A (zh) * | 2015-05-21 | 2018-01-02 | 谷歌公司 | 神经网络处理器中的向量计算单元 |
CN107943756A (zh) * | 2017-12-15 | 2018-04-20 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8626815B1 (en) * | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
CN102541507B (zh) * | 2010-12-31 | 2015-12-16 | 联芯科技有限公司 | 维度可重配的数据处理方法、***和矩阵乘法处理器 |
-
2018
- 2018-04-26 CN CN201810386460.0A patent/CN110415157B/zh active Active
- 2018-11-27 WO PCT/CN2018/117559 patent/WO2019205617A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086699A (zh) * | 2007-07-12 | 2007-12-12 | 浙江大学 | 基于单fpga的矩阵乘法器装置 |
CN104063357A (zh) * | 2013-03-22 | 2014-09-24 | 富士通株式会社 | 处理器以及处理方法 |
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
US20150074163A1 (en) * | 2013-09-11 | 2015-03-12 | Fujitsu Limited | Product-sum operation circuit and product-sum operation system |
CN107533667A (zh) * | 2015-05-21 | 2018-01-02 | 谷歌公司 | 神经网络处理器中的向量计算单元 |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN107943756A (zh) * | 2017-12-15 | 2018-04-20 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113536219B (zh) * | 2020-04-21 | 2024-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN113536219A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN113536220A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器及相关产品 |
WO2021212972A1 (zh) * | 2020-04-21 | 2021-10-28 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN114186186B (zh) * | 2020-09-15 | 2023-08-04 | 华为技术有限公司 | 矩阵计算方法及相关设备 |
CN114186186A (zh) * | 2020-09-15 | 2022-03-15 | 华为技术有限公司 | 矩阵计算方法及相关设备 |
CN112199119A (zh) * | 2020-10-21 | 2021-01-08 | 上海壁仞智能科技有限公司 | 向量运算装置 |
CN112199119B (zh) * | 2020-10-21 | 2022-02-01 | 上海壁仞智能科技有限公司 | 向量运算装置 |
CN112433760A (zh) * | 2020-11-27 | 2021-03-02 | 海光信息技术股份有限公司 | 数据排序方法和数据排序电路 |
CN112632464A (zh) * | 2020-12-28 | 2021-04-09 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
CN112991142B (zh) * | 2021-03-31 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
WO2022205197A1 (zh) * | 2021-03-31 | 2022-10-06 | 华为技术有限公司 | 一种矩阵乘法器、矩阵计算方法及相关设备 |
CN112991142A (zh) * | 2021-03-31 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
CN113268708A (zh) * | 2021-07-16 | 2021-08-17 | 北京壁仞科技开发有限公司 | 用于矩阵计算的方法及装置 |
CN115756384A (zh) * | 2022-11-22 | 2023-03-07 | 海光信息技术股份有限公司 | 张量计算单元及使用方法、数据处理装置及操作方法 |
CN115756384B (zh) * | 2022-11-22 | 2024-05-17 | 海光信息技术股份有限公司 | 张量计算单元及使用方法、数据处理装置及操作方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019205617A1 (zh) | 2019-10-31 |
CN110415157B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110415157A (zh) | 一种矩阵乘法的计算方法及装置 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CA3069185C (en) | Operation accelerator | |
US10140123B2 (en) | SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations | |
US20200401895A1 (en) | Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods | |
CN111381880B (zh) | 一种处理器、介质和处理器的操作方法 | |
WO2021026225A1 (en) | System and method of accelerating execution of a neural network | |
WO2021080873A1 (en) | Structured pruning for machine learning model | |
CN110659445B (zh) | 一种运算装置及其处理方法 | |
CN109472361A (zh) | 神经网络优化方法 | |
WO2021115208A1 (zh) | 神经网络处理器、芯片和电子设备 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
CN109993293A (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN107291666A (zh) | 一种数据处理方法及处理装置 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
Xiao et al. | FPGA-based scalable and highly concurrent convolutional neural network acceleration | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Li et al. | Enabling high performance deep learning networks on embedded systems | |
Shrivastava et al. | A survey of hardware architectures for generative adversarial networks | |
CN117828252A (zh) | 一种基于矩阵核心的高性能矩阵向量乘方法 | |
US20230289287A1 (en) | Programmable Multi-Level Data Access Address Generator | |
CN108415881A (zh) | 卷积神经网络的运算装置及方法 | |
CN102231624B (zh) | 面向向量处理器的浮点复数块fir的向量化实现方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |