CN110770697A - 数据处理装置和方法 - Google Patents
数据处理装置和方法 Download PDFInfo
- Publication number
- CN110770697A CN110770697A CN201880037874.0A CN201880037874A CN110770697A CN 110770697 A CN110770697 A CN 110770697A CN 201880037874 A CN201880037874 A CN 201880037874A CN 110770697 A CN110770697 A CN 110770697A
- Authority
- CN
- China
- Prior art keywords
- matrix
- elements
- multiply
- row
- data processing
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
提供一种数据处理装置和方法。该数据处理装置能够用于计算矩阵C=矩阵A×矩阵B,其中矩阵A为m1×n的矩阵,矩阵B为n×m2的矩阵。该数据处理装置包括k个乘累加单元和控制单元。该控制单元用于执行以下操作:在根据矩阵A中的s行元素和矩阵B中的t列元素计算矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行s行元素中的第i列元素与t列元素中的第i行元素对应的k次乘法操作,k=s×t,0≤i<n。由于矩阵A中的s行元素中的第i列元素与矩阵B中的t列元素中的第i行元素对应的乘法操作的数量刚好等于k次,因此,在计算k个目标元素的取值的过程中,k个乘累加单元每次都可以被100%利用。
Description
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
申请涉及数据处理领域,并且更为具体地,涉及一种数据处理装置和方法。
背景技术
矩阵乘法是一种常见的运算操作,本质上是矩阵元素之间的乘累加操作。为了加快矩阵乘法的运算速度,许多数据处理装置内部设置有专门的乘累加(multiply andaccumulate,MAC)单元。
以矩阵C=矩阵A×矩阵B为例,传统数据处理装置通常利用乘累加单元逐个计算矩阵C中的每个元素的取值,这种处理方式有时会导致乘累加单元的利用率低。
发明内容
本申请提供一种数据处理装置和方法,以提高数据处理装置中的乘累加单元的利用率。
第一方面,提供一种数据处理装置,所述数据处理装置能够用于计算矩阵C=矩阵A×矩阵B,其中所述矩阵A为m1×n的矩阵,所述矩阵B为n×m2的矩阵,所述数据处理装置包括:k个乘累加单元;控制单元,用于执行以下操作:在根据所述矩阵A中的s行元素和所述矩阵B中的t列元素计算所述矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,k=s×t,0≤i<n。
第二方面,提供一种数据处理方法,所述方法能够用于计算矩阵C=矩阵A×矩阵B,其中所述矩阵A为m1×n的矩阵,所述矩阵B为n×m2的矩阵,所述方法包括:在根据所述矩阵A中的s行元素和所述矩阵B中的t列元素计算所述矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,k=s×t,0≤i<n。
数据处理装置内部的控制单元依次执行矩阵A中的s行元素中的第i列元素与矩阵B中的t列元素中的第i行元素对应的乘法操作,由于矩阵A中的s行元素中的第i列元素与矩阵B中的t列元素中的第i行元素对应的乘法操作的数量刚好等于k次,因此,在计算k个目标元素的取值的过程中,k个乘累加单元每次都可以被100%利用,从而提高了乘累加单元的利用率。
附图说明
图1是矩阵乘法的常规计算方式的示意图。
图2是本申请实施例提供的数据处理装置的示意性结构图。
图3是本申请一个实施例提供的矩阵分块方式的示意图。
图4是本申请另一实施例提供的矩阵分块方式的示意图。
图5是本申请一个实施例提供的矩阵元素相乘方式的示意图。
图6是本申请另一实施例提供的矩阵元素相乘方式的示意图。
图7是本申请另一实施例提供的矩阵元素相乘方式的示意图。
图8是本申请另一实施例提供的矩阵元素相乘方式的示意图。
图9是本申请另一实施例提供的矩阵元素相乘方式的示意图。
图10是本申请实施例提供的矩阵乘法的计算流程图。
图11是本申请实施例提供的数据处理方法的流程图。
具体实施方式
支持矩阵乘法运算的数据处理装置的内部通常设置有一个或多个乘累加单元。乘累加单元有时也可称为乘累加器,可专门用于执行乘累加操作。乘累加单元通常可以在同一个时钟周期(或指令周期)完成一次乘法和一次加法操作。
数据处理装置例如可以是数字信号处理器(digital signal processor,DSP),也可以是神经网络系统中的用于执行卷积操作的神经网络处理器。以DSP为例,DSP执行的常见运算包括功率计算、差分运算、滤波器运算等,这些运算归根到底都是乘累加运算。因此,在DSP内部,通常会设置多个乘累加单元,如8个或16个乘累加单元。卷积操作实际上也是矩阵乘法,归根到底都是乘累加运算,因此,与DSP类似,神经网络处理器内部也可设置多个乘累加单元。
下面结合图1,对矩阵乘法的常规计算方式进行介绍。
在执行矩阵C=矩阵A×矩阵B的过程中,常规计算方式是利用乘累加单元按行或按列逐个计算矩阵C中的每个元素的取值。
如图1所示,为了得到矩阵C中的各元素的取值,常规计算方式通常会先根据矩阵A的第0行元素和矩阵B的第0列元素,利用乘累加单元计算矩阵C中的元素C00的取值。
假设矩阵A的列数(或矩阵B的行数)为17,则需要执行17次乘累加运算才可以得到C00的取值。如果数据处理装置内部仅设置有16个乘累加单元,则无法在一个时钟周期内计算出C00的取值。在这种情况下,为了简化数据调度,传统的数据处理装置通常会先在第1个时钟周期利用16乘累加单元执行16次乘累加运算(每个乘累加单元执行1次乘法操作),然后在第二个时钟周期利用1个乘累加单元单独执行剩余的1次乘累加运算,其余15个乘累加单元处于空闲状态。
由此可见,传统的数据处理装置有时会使得一些乘累加单元处于空闲状态,导致乘累加单元的利用率低下。为了提高乘累加单元的利用率,下面对本申请实施例提供的数据处理装置和方法进行详细介绍。
图2是本申请实施例提供的数据处理装置的示意性结构图。图2所示的数据处理装置20能够用于计算矩阵C=矩阵A×矩阵B,其中,矩阵A可以为m1×n的矩阵,矩阵B可以为n×m2的矩阵,m1、n、m2均可以是不小于1的正整数。
本申请实施例对数据处理装置20的类型不做具体限定,可以是DSP,也可以是需要支持矩阵乘法运算的其他运算单元,如用于执行卷积操作的神经网络处理器。
参见图2,数据处理装置20可包括k个乘累加单元22和控制单元24。本申请对k的取值不做具体限定。k可以是不小于1的任意正整数。作为一个示例,k可以大于或等于2。例如,k可以为2的整数倍,如k可以等于8或16。
控制单元24可用于执行以下操作:在根据矩阵A中的s行元素和矩阵B中的t列元素计算矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行s行元素中的第i列元素与t列元素中的第i行元素对应的k次乘法操作。k=s×t,0≤i<n。可以理解的是,控制单元24在执行乘法操作的过程中,为了得到k个目标元素的取值,可以控制k个乘累加单元不断将本次乘法结果与前一次乘法结果相加。
例如,控制单元24可以先从存储设备读取s行元素中的n列元素中的1列元素与t列元素中的n行元素中的1行元素,然后利用k个乘累加单元执行k次乘法操作(即每个乘累加单元执行1个乘法操作);接着,控制单元24可以再从存储设备读取s行元素中的剩余n-1列元素中选取1列元素与t列元素中的剩余n-1行元素中选取1行元素,然后利用k个乘累加单元再次执行k次乘法操作(即每个乘累加单元执行1次乘法操作);按照类似的方式执行n次,即可将s行元素中n列元素与t列元素中的n行元素对应的乘法操作执行完毕。可以理解的是,在执行乘法操作的过程中,k个乘累加单元可以不断将本次乘法结果与前一次乘法结果相加,最终得到矩阵C中的k个目标元素的取值。
为了便于理解,先结合图3和图4,以两个具体的矩阵乘法为例,对上述操作方式进行举例说明。
如图3所示,矩阵A为4×2的矩阵,矩阵B为2×5的矩阵,即m1=4,m2=5,n=2。以数据处理装置20包括16个乘累加单元(即k=16)为例,矩阵C可以包括一个4×4的分块矩阵D。该分块矩阵D中的16个元素C00至C33即可作为16个目标元素。下面详细描述该16个目标元素的求解过程。
首先,根据矩阵乘法的原理可以得知:该16个目标元素的求解需要基于矩阵A中的4行元素(矩阵A中的虚线框中的元素,在该例中,s=4)和矩阵B的4列元素(矩阵B中的虚线框中的元素,在该例中,t=4)进行。
在求解过程中,本实施例并非根据矩阵A中的4行元素和矩阵B的4列元素逐个计算16个目标元素的取值,而是并行地计算该16个目标元素的取值。例如,可以计算矩阵A的4行元素中的第0列元素(即A00至A30)与矩阵B的4列元素中的第0行元素(即B00至B03)之间的乘法运算,再计算矩阵A的第1列的元素(即A01至A31)与矩阵B的第1行元素(即B10至B13)之间的乘法运算。或者,可以计算矩阵A的第1列的元素(即A01至A31)与矩阵B的第1行元素(即B10至B13)之间的乘法运算,再计算矩阵A的第0列的元素(即A00至A30)与矩阵B的第0行元素(即B00至B03)之间的乘法运算。
以矩阵A的4行元素中的第0列的元素与矩阵B的4列元素中的第0行元素相乘为例,由矩阵相乘的基本原理可知,矩阵A的4行元素中的第0列的元素与矩阵B的4列元素中的第0行元素之间需要被执行的乘法操作正好为k次:A00×B00,A00×B01,A00×B02,A00×B03,A10×B00,A10×B01,A10×B02,A10×B03,A20×B00,A20×B01,A20×B02,A20×B03,A30×B00,A30×B01,A30×B02,A30×B03。同理,矩阵A的4行元素中的第1列的元素与矩阵B的4列元素中的第1行元素之间需要被执行的乘法操作正好也为k次。
由此可见,k个乘累加单元依次执行s行元素中的第i列元素与t列元素中的第i行元素对应的乘法操作的过程中,可以每次执行k次乘法操作,使得k个乘累加单元能够以100%的利用率执行完k个目标元素对应的所有乘法操作,从而可以提高乘累加单元的利用率。
再举一例。如图4所示,矩阵A为10×100的矩阵,矩阵B为100×94的矩阵,即m1=10,m2=94,n=100。仍以k=16为例,则矩阵C可以按照如图4所示的方式进行分块,形成2×23个分块矩阵D,其中每个分块矩阵D中的16个元素可作为16个目标元素。
首先,根据矩阵乘法的原理可以得知:每个分块矩阵D中的16个目标元素的取值的求解需要基于矩阵A中的4行元素(矩阵A中的每个虚线框中的元素,在该例中,s=4)和矩阵B的4列元素(即矩阵B中的每个虚线框中的元素,在该例中,t=4)进行。例如,矩阵C中的左上角的分块矩阵D的求解需要依赖于矩阵A的前4行元素和矩阵B的前4列元素。
在求解每个分块矩阵D中的16个目标元素的过程中,本实施例并非根据矩阵A中的4行元素和矩阵B的4列元素逐个计算分块矩阵D中的16个目标元素的取值,而是并行地计算该16个目标元素的取值。分块矩阵D的具体计算方式与图3中的16个目标元素的计算方式同理,此处不再详述。采用这种计算方式,在计算每个分块矩阵D中的16个目标元素的过程中,k个乘累加单元可以被100%利用。
通过以上两个示例可以看出,在利用矩阵A的s行元素和矩阵B的t列元素计算k个目标元素的取值的过程中,本申请实施例更改了这些元素的相乘顺序,从常规的利用矩阵A的一行元素与矩阵B的一列元素相乘的方式更改为:依次执行矩阵A中的s行元素中的第i列元素与矩阵B中的t列元素中的第i行元素对应的乘法操作的方式。由于矩阵A中的s行元素中的第i列元素与矩阵B中的t列元素中的第i行元素对应的乘法操作的数量刚好等于k次,因此,k个乘累加单元可以被100%利用。综上,本申请实施例可以提高数据处理装置20中的乘累加单元的利用率,进而可以提高矩阵乘法的效率。
矩阵C可以仅包含k个目标元素,则计算完矩阵C中的目标元素的取值之后,即可得到矩阵C。或者,矩阵C可以包括除目标元素之外的剩余元素。以图3为例,该剩余元素可以是矩阵C的虚线框之外的元素,即元素C04-C34。本申请实施例对这些剩余元素的计算方式不做具体限定,可以按照与图1类似的常规计算方式进行计算,即逐个计算剩余元素的每个元素的取值。
上文指出,控制单元24控制k个乘累加单元依次执行s行元素中的第i列元素与t列元素中的第i行元素对应的k次乘法操作。为了便于描述,可以将s行元素中的1列元素与t列元素中的1行元素对应的k次乘法操作称为行列元素互乘操作。由于矩阵A具有n列,因此,为了得到k个目标元素的取值,控制单元24共需要执行n次行列元素互乘操作。本申请实施例对该n次行列元素互乘操作的执行顺序不做具体限定,可以按照i取值从小到大的方式依次执行,也可以按照i取值从大到小的方式依次执行,或者也可以按照随机的方式执行,只要保证n次行列元素互乘操作均被执行即可。
此外,在执行n次行列元素互乘操作的过程中,控制单元24可以控制k个乘累加单元在每个时钟周期(或指令周期)执行1次行列元素互乘操作,这样一来,n个时钟周期即可完成n次行列元素互乘操作,将互乘操作的结果不断累加,即可得到k个目标元素的取值。
控制单元24可以按照指令控制乘累加单元执行对应的操作。该指令可以是外部的处理器向控制单元24发送的指令,也可以是控制单元24自己生成指令。
本申请实施例对k个目标元素在矩阵C中的位置不做具体限定,可以是分布在矩阵C中的s行、t列的任意k个元素。作为一个示例,该k个目标元素可以是矩阵C中的相邻元素,即矩阵C中的分块矩阵D中的元素。具体实现时,控制单元24可以先根据数据处理装置中的乘累加单元的数量,确定矩阵A和矩阵B的分块方式,使得矩阵A中的分块矩阵为s行、n列的矩阵,矩阵B中的每个分块矩阵为n行、t列的矩阵。当矩阵A和矩阵B的分块方式确定之后,矩阵A和矩阵B的乘积为分块矩阵D。以图4为例,矩阵A中的每4行、100列形成一个分块矩阵,矩阵B的每100行4列形成一个分块矩阵,矩阵A和矩阵B的分块方式确定后,矩阵C中的分块矩阵D的形式也就确定下来。
作为另一示例,k个目标元素在矩阵C中的位置也可不相邻。以图3为例,16个目标元素可以由矩阵C的第1列、第2列、第3列、第5列元素组成;也可以由矩阵C的第1列、第2列、第4列、第5列元素组成。换句话说,本申请并不要求k个目标元素一定位于矩阵C的同一分块矩阵中,这些目标元素也可以相互间隔,只要它们分布在矩阵C的s行、t列即可。
由于k个乘累加单元12可以以100%的利用率计算分块矩阵D中的k个目标元素的取值,因此,矩阵C分解出的分块矩阵D越多,则乘累加单元的利用率就越高。
为了充分利用k个乘累加单元12,对矩阵C的分块可以使得矩阵C满足如下条件:矩阵C包括u×v个分块矩阵D,且m1-s<u×s≤m1,和/或m2-t<v×t≤m2,其中u和v均为不小于1的正整数。
m1-s<u×s≤m1表示经过分块,矩阵C的剩余行数小于s,因此,矩阵C在行方向上无法按照s×t的方式被进一步划分,即矩阵C在行方向上已经按照s×t的方式被充分划分。
同理,m2-t<v×t≤m2表示经过分块,矩阵C的剩余列数小于t,因此,矩阵C在列方向上无法按照s×t的方式被进一步划分,即矩阵C在列方向上已经按照s×t的方式被充分划分。
以图4为例,矩阵C为10×94的矩阵,即m1=10,m2=94。假设k=16,s和t均为4,则u和v的值可以分别设置为2和23,使得m1-s<u×s≤m1且m2-t<v×t≤m2。
u的取值为2,代表矩阵C在行方向上划分出2个分块矩阵D。由于矩阵C的行数为10,因此,矩阵C在行方向上划分出2个分块矩阵D之后,剩余的行数为2,在行方向上无法继续划分出4×4的分块矩阵D。
v的取值为23,代表矩阵C在列方向上划分出23个分块矩阵D。由于矩阵C的行数为94,因此,矩阵C在列方向上划分出23个分块矩阵D之后,剩余的列数为2,在列方向上无法继续划分出4×4的分块矩阵D。
本申请实施例对s和t的取值选取方式不做具体限定,满足k=s×t的任意取值均可用于本申请。但是,针对同一矩阵C,s和t的不同取值可能使得划分出的分块矩阵D的最大数量不同,从而使得矩阵C的剩余元素的数量不同。
可以理解的是,从矩阵C中划分出的分块矩阵D的数量越多,乘累加单元的利用率就可能越高。因此,在某些实施例中,可以根据矩阵A的行数m1和矩阵B的列数m2确定s和t的取值。例如,可以根据矩阵A的行数m1和矩阵B的列数m2确定s和t的取值,使得m1×m2与u×s×v×t的差值最小。m1×m2与u×s×v×t的差值最小意味着矩阵C中的除分块矩阵D(s行t列的矩阵)之外的剩余元素最少,则乘累加单元的利用率越高。
上文均是以从矩阵C中划分出相同形式的分块矩阵D为例进行说明的,实际上,在某些实施例中,也可以从矩阵C中划分出不同形式的分块矩阵D(这里提到的不同形式指的是行列数量不同,但行列数量的乘积仍然为k)。
以图4为例,假设k=16,则可以按照4×4的方式划分出2×23个分块矩阵D。对于剩余元素,如位于矩阵C底部的2×92个元素,虽然不能按照4×4的方式被进一步划分,仍然可以按照2×8或1×16的形式被进一步划分;同理,对于位于矩阵C右侧的10×2个元素,虽然不能按照4×4的方式被进一步划分,仍然可以按照8×2的方式被进一步划分。当然,为了简化数据调度或控制逻辑的复杂度,在某些实施例中,可以要求矩阵C中划分出的分块矩阵D均具有相同的形式。
本申请实施例对s和t的取值不做具体限定,只要s与t的乘积等于k即可。以k=16为例,s和t的取值可以是:s=1,t=16;s=2,t=8;s=4,t=4;s=8,t=2;s=16,t=1。
以s=16,t=1为例,则在计算16个目标元素的过程中,矩阵A和矩阵B在每个时钟周期内需要被相乘的元素可以为矩阵A的某列中的16个元素与矩阵B的某行中的1个元素,这些元素之间需要被执行的乘法操作的数量正好为16次,因此,可以由16个乘累加单元在一个时钟周期内完成。图5给出了需要执行乘法操作的矩阵A中的16个元素和矩阵B中的1个元素的示例。
以s=8,t=2为例,则在计算16个目标元素的过程中,矩阵A和矩阵B在每个时钟周期内需要被相乘的元素可以为矩阵A的某列中的8个元素与矩阵B的某行中的2个元素,这些元素之间需要被执行的乘法操作的数量正好为16次,因此,可以由16个乘累加单元在一个时钟周期内完成。图6给出了需要执行乘法操作的矩阵A中的8个元素和矩阵B中的2个元素的示例。
以s=4,t=4为例,则在计算16个目标元素的过程中,矩阵A和矩阵B在每个时钟周期内需要被相乘的元素可以为矩阵A的某列中的4个元素与矩阵B的某行中的4个元素,这些元素之间需要被执行的乘法操作的数量正好为16次,因此,可以由16个乘累加单元在一个时钟周期内完成。图7给出了需要执行乘法操作的矩阵A中的4个元素和矩阵B中的4个元素的示例。
以s=2,t=8为例,则在计算16个目标元素的过程中,矩阵A和矩阵B在每个时钟周期内需要被相乘的元素可以为矩阵A的某列中的2个元素与矩阵B的某行中的8个元素,这些元素之间需要被执行的乘法操作的数量正好为16次,因此,可以由16个乘累加单元在一个时钟周期内完成。图8给出了需要执行乘法操作的矩阵A中的2个元素和矩阵B中的8个元素的示例。
以s=1,t=16为例,则在计算16个目标元素的过程中,矩阵A和矩阵B在每个时钟周期内需要被相乘的元素可以为矩阵A的某列中的1个元素与矩阵B的某行中的16个元素,这些元素之间需要被执行的乘法操作的数量正好为16次,因此,可以由16个乘累加单元在一个时钟周期内完成。图9给出了需要执行乘法操作的矩阵A中的1个元素和矩阵B中的16个元素的示例。
应注意,s和t的可能的取值需要根据矩阵C的实际情况确定,s和t的某些取值组合可能并不适用于尺寸较小的矩阵C。例如,以k=16为例,s和t共5种取值组合,即s=1,t=16;s=2,t=8;s=4,t=4;s=8,t=2;s=16,t=1。在图4所示的示例中,由于矩阵C为10×94的矩阵,因此,除了s=16,t=1这种取值组合不适用之外,其他的取值组合均适用。在图3所示的示例中,由于矩阵C为4×5的矩阵,因此,只有s=4,t=4这一种取值组合适合该矩阵C。
可选地,在一些实施例中,可以根据矩阵C的尺寸确定是否采用本申请实施例提供的方式计算矩阵C中的元素的取值。
作为一个示例,如果矩阵C的列数n为k个整数倍(即n/k大于等于1),按照常规计算方式也可以使得k个乘累加单元达到100%的利用率。因此,在某些实施例中,如果矩阵C的列数n为k的整数倍,则控制单元24可以控制k个乘累加单元按照常规方式依次计算矩阵C中的每个元素的取值。
作为另一个示例,如果m1×m2小于k,即矩阵C包含的元素个数小于k,则控制单元24可以控制k个乘累加单元按照常规方式依次计算矩阵C中的每个元素的取值。
作为另一个示例,如果m1×m2×n小于k,即计算矩阵C中的所有元素需要执行的乘法数量小于k,则控制单元24可以控制k个乘累加单元按照常规方式依次计算矩阵C中的每个元素的取值。
作为另一个示例,如果m1×m2×n大于k,且n不为k的整数倍,则按照常规方式计算会导致k个乘累加单元的利用率比较低,此时,控制单元24可以按照本申请实施例提供的方式,控制k个乘累加单元执行s行元素中的第i列元素与t列元素中的第i行元素对应的k次乘法操作。
m1、m2、n与k的关系的判断,以及矩阵C的分块方式可以由数据处理装置20内的控制单元24执行,也可以由数据处理装置20外部的处理器执行,本申请实施例对此并不限定。
下面结合图10,以k=16为例,给出矩阵乘法的执行过程的一个示例。
图10包括步骤101至步骤105。
在步骤101,判断矩阵C的列数n是否为16的倍数。
如果n为16的倍数,则执行步骤105;如果n不为16的倍数,则执行步骤102。
在步骤102,判断矩阵A的行数m1和矩阵B的列数m2的乘积是否小于等于16。
如果m1×m2≤16,则执行步骤105;如果m1×m2>16,则执行步骤103。
在步骤103,根据m1和m2的取值,选取矩阵C的分块方式。
经过分块,可以从矩阵C中划分出一个或多个分块矩阵D,其中每个分块矩阵D可以包括k个目标元素。分块矩阵D的具体分块方式可以参见前文,此处不再详述。
在步骤104,依次计算每个分块矩阵D中的k个目标元素的取值。
在计算每k个目标元素的取值的过程中,可以采用本申请实施例提供的矩阵乘法方式,并行计算该k个目标元素的取值。
在步骤105,按照常规计算方式逐个计算矩阵C中的元素的取值。
下面结合图11,详细描述本申请实施例提供的数据处理方法。图11的方法能够用于计算矩阵C=矩阵A×矩阵B,其中所述矩阵A为m1×n的矩阵,所述矩阵B为n×m2的矩阵。该方法可以由数据处理装置20中的控制单元24执行。
在步骤1110,在根据所述矩阵A中的s行元素和所述矩阵B中的t列元素计算所述矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,k=s×t,0≤i<n。
可选地,所述矩阵C包括分块矩阵D,所述分块矩阵D为s×t的矩阵,k个所述目标元素为所述分块矩阵D中的元素。
可选地,所述矩阵C包括u×v个所述分块矩阵D,且m1-s<u×s≤m1,m2-t<v×t≤m2,其中u和v均为不小于1的正整数。
可选地,图11的方法还可包括:根据矩阵A的行数m1和矩阵B的列数m2,确定s和t的取值,使得m1×m2与u×s×v×t的差值最小。
可选地,步骤1110可包括:如果m1×m2×n大于k,且n不为k的整数倍,控制k个乘累加单元执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作;图11的方法还可包括:如果n为k的整数倍或者m1×m2小于k,控制k个乘累加单元依次计算所述矩阵C中的每个元素的取值。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种数据处理装置,其特征在于,所述数据处理装置能够用于计算矩阵C=矩阵A×矩阵B,其中所述矩阵A为m1×n的矩阵,所述矩阵B为n×m2的矩阵,
所述数据处理装置包括:
k个乘累加单元;
控制单元,用于执行以下操作:
在根据所述矩阵A中的s行元素和所述矩阵B中的t列元素计算所述矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,k=s×t,0≤i<n。
2.根据权利要求1所述的数据处理装置,其特征在于,所述矩阵C包括分块矩阵D,所述分块矩阵D为s×t的矩阵,k个所述目标元素为所述分块矩阵D中的元素。
3.根据权利要求2所述的数据处理装置,其特征在于,所述控制单元还用于:
根据所述数据处理装置中的乘累加单元的数量,确定所述矩阵A和所述矩阵B的分块方式,使得所述矩阵A中的分块矩阵为s行、n列的矩阵,所述矩阵B中的每个分块矩阵为n行、t列的矩阵,所述矩阵A和所述矩阵B的乘积为所述矩阵C中的分块矩阵D。
4.根据权利要求2或3所述的数据处理装置,其特征在于,所述矩阵C包括u×v个所述分块矩阵D,且m1-s<u×s≤m1,m2-t<v×t≤m2,其中u和v均为不小于1的正整数。
5.根据权利要求4所述的数据处理装置,其特征在于,所述控制单元还用于根据矩阵A的行数m1和矩阵B的列数m2,确定s和t的取值,使得m1×m2与u×s×v×t的差值最小。
6.根据权利要求1-5中任一项所述的数据处理装置,其特征在于,所述控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,包括:
如果m1×m2×n大于k,且n不为k的整数倍,控制k个乘累加单元执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作;
所述控制单元还用于执行以下操作:
如果n为k的整数倍或者m1×m2小于k,控制k个乘累加单元依次计算所述矩阵C中的每个元素的取值。
7.根据权利要求1-6中任一项所述的数据处理装置,其特征在于,所述数据处理装置为数字信号处理器。
8.一种数据处理方法,其特征在于,所述方法能够用于计算矩阵C=矩阵A×矩阵B,其中所述矩阵A为m1×n的矩阵,所述矩阵B为n×m2的矩阵,
所述方法包括:
在根据所述矩阵A中的s行元素和所述矩阵B中的t列元素计算所述矩阵C中的k个目标元素的取值的过程中,控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,k=s×t,0≤i<n。
9.根据权利要求8所述的方法,其特征在于,所述矩阵C包括分块矩阵D,所述分块矩阵D为s×t的矩阵,k个所述目标元素为所述分块矩阵D中的元素。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据所述数据处理装置中的乘累加单元的数量,确定所述矩阵A和所述矩阵B的分块方式,使得所述矩阵A中的分块矩阵为s行、n列的矩阵,所述矩阵B中的每个分块矩阵为n行、t列的矩阵,所述矩阵A和所述矩阵B的乘积为所述矩阵C中的分块矩阵D。
11.根据权利要求9或10所述的方法,其特征在于,所述矩阵C包括u×v个所述分块矩阵D,且m1-s<u×s≤m1,m2-t<v×t≤m2,其中u和v均为不小于1的正整数。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
根据矩阵A的行数m1和矩阵B的列数m2,确定s和t的取值,使得m1×m2与u×s×v×t的差值最小。
13.根据权利要求8-12中任一项所述的方法,其特征在于,所述控制k个乘累加单元依次执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作,包括:
如果m1×m2×n大于k,且n不为k的整数倍,控制k个乘累加单元执行所述s行元素中的第i列元素与所述t列元素中的第i行元素对应的k次乘法操作;
所述方法还包括:
如果n为k的整数倍或者m1×m2小于k,控制k个乘累加单元依次计算所述矩阵C中的每个元素的取值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/107393 WO2020061762A1 (zh) | 2018-09-25 | 2018-09-25 | 数据处理装置和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110770697A true CN110770697A (zh) | 2020-02-07 |
Family
ID=69328773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880037874.0A Pending CN110770697A (zh) | 2018-09-25 | 2018-09-25 | 数据处理装置和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110770697A (zh) |
WO (1) | WO2020061762A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023065983A1 (zh) * | 2021-10-19 | 2023-04-27 | Oppo广东移动通信有限公司 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346318A (zh) * | 2014-10-15 | 2015-02-11 | 中国人民解放军国防科学技术大学 | 面向通用多核dsp的矩阵乘加速方法 |
CN106325812A (zh) * | 2015-06-15 | 2017-01-11 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN106445471A (zh) * | 2016-10-13 | 2017-02-22 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
US20180189236A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Distributed matrix multiplication for neural networks |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9697176B2 (en) * | 2014-11-14 | 2017-07-04 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
CN107341133B (zh) * | 2017-06-24 | 2021-01-22 | 中国人民解放军信息工程大学 | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 |
CN107291666A (zh) * | 2017-06-27 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种数据处理方法及处理装置 |
-
2018
- 2018-09-25 WO PCT/CN2018/107393 patent/WO2020061762A1/zh active Application Filing
- 2018-09-25 CN CN201880037874.0A patent/CN110770697A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346318A (zh) * | 2014-10-15 | 2015-02-11 | 中国人民解放军国防科学技术大学 | 面向通用多核dsp的矩阵乘加速方法 |
CN106325812A (zh) * | 2015-06-15 | 2017-01-11 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN106445471A (zh) * | 2016-10-13 | 2017-02-22 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
US20180189236A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Distributed matrix multiplication for neural networks |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023065983A1 (zh) * | 2021-10-19 | 2023-04-27 | Oppo广东移动通信有限公司 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020061762A1 (zh) | 2020-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7485740B2 (ja) | ニューラルネットワーク命令セットアーキテクチャ | |
CN110520834B (zh) | 替选循环限制 | |
TWI772842B (zh) | 用於判定一n維張量之元素之記憶體位址之設備、系統、及方法 | |
US11361051B1 (en) | Dynamic partitioning | |
JP6689878B2 (ja) | ニューラルネットワークプロセッサで使用される重みのプリフェッチ | |
TW201830297A (zh) | 用於類神經網路計算的旋轉資料 | |
CN102855220B (zh) | 用于使用并行处理来求解线性方程组的设备、系统和方法 | |
CN104424361B (zh) | 自动定义热存储和大工作负载 | |
EP3529701A1 (en) | Hardware double buffering using a special purpose computational unit | |
JP7266629B2 (ja) | ブロックチェーンにおけるトランザクション要求処理方法、装置、設備、記憶媒体、及びプログラム | |
KR20200083123A (ko) | 로드-저장 명령 | |
JP2022188301A5 (zh) | ||
CN111160560A (zh) | 预估模拟量子计算所需资源的方法、系统 | |
CN110770697A (zh) | 数据处理装置和方法 | |
CN107870780B (zh) | 数据处理装置和方法 | |
CN110399976B (zh) | 计算装置和计算方法 | |
CN106844690B (zh) | 一种数据分配方法、装置和计算设备 | |
CN109740115A (zh) | 一种实现矩阵乘法运算的方法、装置及设备 | |
CN114626514A (zh) | 一种神经网络计算装置及计算方法 | |
CN114746840A (zh) | 用于乘法和累加操作的处理器单元 | |
CN110677152B (zh) | 信号计数方法、装置和数字电路 | |
CN111192061A (zh) | 基于二进制位设计的判断客户参加促销活动的方法、装置 | |
RU2684190C1 (ru) | Многоскоростной цифровой экстраполятор | |
CN102231624A (zh) | 面向向量处理器的浮点复数块fir的向量化实现方法 | |
KR102628658B1 (ko) | 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법 |
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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20220913 |
|
AD01 | Patent right deemed abandoned |