执行矩阵乘法运算的方法、电路及SOC技术

技术编号:32544262 阅读:65 留言:0更新日期:2022-03-05 11:42
本申请公开一种执行矩阵乘法运算的方法,属于数据处理领域。该方法包括:获取矩阵A1、矩阵B2和索引矩阵;根据索引矩阵和矩阵A1生成n个矩阵A2,n个矩阵A2与索引矩阵的n列按顺序一一对应,每个矩阵A2的t列与对应的索引矩阵中的一列的t个元素按顺序一一对应,每个矩阵A2的每一列为对应的索引矩阵中的一个元素在矩阵A1中指示的一列;根据n个矩阵A2和矩阵B2生成矩阵C,矩阵C的n列与n个矩阵A2按顺序一一对应,矩阵C的n列与矩阵B2的n列按顺序一一对应,矩阵C的每一列为对应的一个矩阵A2与对应的矩阵B2中的一列的乘积。本申请只需从矩阵A1中读取一次数据就能完成矩阵乘法运算,实现了数据复用性的最大化。复用性的最大化。复用性的最大化。

【技术实现步骤摘要】
执行矩阵乘法运算的方法、电路及SOC


[0001]本申请涉及数据处理领域,特别涉及一种执行矩阵乘法运算的方法、电路及片上系统(System on Chip,SOC)。

技术介绍

[0002]人工智能技术广泛应用于终端、边缘侧、云端等,用来实现图像识别、目标检测、语音翻译等功能,人工智能技术往往通过深度学习网络实现。对于深度学习网络,其中较影响性能、计算量较大的算子,如卷积、内积(inner product)等算子的计算量占比可达99%,这些算子均可以展开成矩阵乘矩阵的运算。当然,矩阵作为一种常见的数据表达形式,矩阵乘矩阵的运算也常常应用于其它领域中。
[0003]目前,在执行矩阵乘法运算时,往往是将矩阵乘矩阵的运算拆分成向量乘矩阵的运算。假设矩阵A是m行k列的矩阵,矩阵B是k行n列的矩阵,m、k和n均为正整数,在将矩阵A乘以矩阵B时,是将矩阵A的m行依次乘以矩阵B。其中,将矩阵A中的某一行乘以矩阵B时,n个处理元件(Process Element,PE)一一获取矩阵B的n列的索引模块(用来定位非零元素),然后该n个PE中的每个PE根据其获取到的矩阵B中的一列的索引模块从矩阵A中的这一行中读取数据,并将读取到的数据乘以矩阵B中的这一列。
[0004]上述运算方式中,由于是将矩阵A的m行依次乘以矩阵B,所以整个运算过程需要耗费较长时间,运算效率较低。其次,由于矩阵B的每一列中非零元素的分布没有规律,所以每个PE根据矩阵B中的一列的索引模块从矩阵A中的一行中读取数据时,是读取矩阵A中的这一行中分布较为离散的多个数据,而由于矩阵A往往是分散地存储到存储器中的多个地址上,所以如果PE是一次性从矩阵A中读取数据,则很有可能会因同时读取存储器中的多个地址上的数据而出现地址冲突,导致无法读取到数据。再者,由于在将矩阵A的m行中的每一行乘以矩阵B时均需读取一次矩阵B,整个运算过程共需读取m次矩阵B,所以导致数据复用性较低,消耗的处理资源较多。

技术实现思路

[0005]本申请提供了一种执行矩阵乘法运算的方法、电路及SOC,可以解决相关技术中矩阵乘法运算的运算效率较低、读取数据时地址冲突且数据复用性较低的问题。所述技术方案如下:
[0006]第一方面,提供了一种执行矩阵乘法运算的方法,所述方法包括:获取矩阵A1、矩阵B2和索引矩阵,所述矩阵A1是m行k列的矩阵,所述矩阵B2是t行n列的矩阵,所述索引矩阵是t行n列的矩阵,所述m、所述k、所述t和所述n均为正整数,所述t小于或等于所述k;根据所述索引矩阵和所述矩阵A1,生成n个矩阵A2,所述n个矩阵A2均是m行t列的矩阵,所述n个矩阵A2与所述索引矩阵的n列按顺序一一对应,每个矩阵A2的t列与对应的所述索引矩阵中的一列的t个元素按顺序一一对应,所述每个矩阵A2的每一列为对应的所述索引矩阵中的一个元素在所述矩阵A1中指示的一列;根据所述n个矩阵A2和所述矩阵B2,生成矩阵C,所述矩
阵C是m行n列的矩阵,所述矩阵C的n列与所述n个矩阵A2按顺序一一对应,所述矩阵C的n列与所述矩阵B2的n列按顺序一一对应,所述矩阵C的每一列为对应的一个矩阵A2与对应的所述矩阵B2中的一列的乘积。
[0007]需要说明的是,矩阵B2中包含矩阵B1中所有的非零元素(有效数据)。索引矩阵为矩阵B2中的元素在矩阵B1中的索引,即包括矩阵B1中所有的非零元素在矩阵B1中的索引。
[0008]在本申请实施例中,根据索引矩阵可以一次性从矩阵A1中读取出n个矩阵A2,继而可以将该n个矩阵A2一一乘以矩阵B2的n列,来得到矩阵C。由于只需从矩阵A1中读取一次数据就能够完成矩阵乘法运算,所以可以实现数据复用性的最大化,节省处理资源。并且,将该n个矩阵A2一一乘以矩阵B2的n列时,由于该n个矩阵A2的大小相同,所以该n个矩阵A2与矩阵B2的n列的乘法运算可以并行执行,且可以在相同的时间内执行完成,从而可以节省运算时间,提高运算效率。
[0009]其中,所述获取矩阵B2和索引矩阵,包括:获取矩阵B1,所述矩阵B1是k行n列的矩阵,所述矩阵B1的n列中每一列的元素均按顺序划分到预设数值个组,每组元素的数量均为k1,且所述每组元素中非零元素的数量均小于或等于k2,所述预设数值是k/k1,所述k大于或等于所述k1且所述k能够被所述k1整除,所述k1大于或等于所述k2且所述k1能够被所述k2整除;根据所述矩阵B1,生成所述矩阵B2,所述矩阵B2的n列与所述矩阵B1的n列按顺序一一对应,所述矩阵B2的每一列的元素包括对应的所述矩阵B1中的一列中按顺序排列的预设数值个组中所有的非零元素;根据所述矩阵B1,生成所述索引矩阵,所述索引矩阵的n列与所述矩阵B2的n列按顺序一一对应,所述索引矩阵的每一列的元素为对应的所述矩阵B2中的一列中按顺序排列的所有元素在所述矩阵B1中的行标。
[0010]需要说明的是,矩阵B1为满足条件稀疏的矩阵,矩阵B1可以通过神经网络训练得到,例如,在深度学习场景下,可以通过控制深度学习网络的训练过程,将卷积、Inner product等算子的参数的分布训练成符合条件稀疏的分布规律,以得到满足条件稀疏的参数矩阵作为矩阵B1。
[0011]在本申请实施例中,将矩阵B1的n列中每一列的非零元素的数量均控制在一定的范围内,如此可以有效控制数据索引的范围,从而可以有效降低索引矩阵的规模,保证工程上的可实现性。并且,本申请实施例中仅使用这一个索引矩阵就可以完成矩阵乘法运算,因而消耗的逻辑资源较少。
[0012]其中,对于所述矩阵B2中的任意一个非零元素,所述非零元素在所述矩阵B1中的行标是所述非零元素在所述矩阵B1中所属的一行的行号;对于所述矩阵B2中的任意一个为零的元素,所述一个为零的元素在所述矩阵B1中的行标是第一字符。
[0013]其中,对于所述索引矩阵中的任意一个元素,当所述索引矩阵中的一个元素不是所述第一字符时,所述索引矩阵中的一个元素在所述矩阵A1中指示的一列是所述矩阵A1的所有列中列号为所述索引矩阵中的一个元素的一列;当所述索引矩阵中的一个元素是所述第一字符时,所述索引矩阵中的一个元素对应的一个矩阵A2中的一列的元素是m个第二字符。
[0014]需要说明的是,引入第一字符和第二字符可以满足矩阵元素对齐的要求。
[0015]在本申请实施例中,是根据索引矩阵的每一列的t个元素,直接读取矩阵A1中t列的元素来构成一个矩阵A2。这种情况下,由于所要读取的数据在矩阵A1中的分布比较规则
且集中,所以在将矩阵A1存储到存储器中时,可以将矩阵A1的k列分别存储到存储器中的多个地址上,这种情况下,根据索引矩阵可以一次性从存储器中读取到所需的数据,从而不仅可以大大降低读取数据时所需的存储器访问带宽,而且可以消除从存储器中读取数据时可能出现的地址冲突问题。
[0016]第二方面,提供了一种执行矩阵乘法运算的方法,所述方法包括:获取矩阵B1、矩阵A2和索引矩阵,所述矩阵B1是k行n列的矩阵,所述矩阵A2是m行t列的矩阵,所述索引矩阵是m行t本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种执行矩阵乘法运算的方法,其特征在于,应用于执行矩阵乘法运算的电路,所述电路包括获取电路以及数据选择电路,所述方法包括:所述获取电路获取矩阵B1、矩阵A2和索引矩阵,所述索引矩阵包括指示所述矩阵A2中的元素在矩阵A1中位置的索引,所述矩阵B1是k行n列的矩阵,所述矩阵A2是m行t列的矩阵,所述索引矩阵是m行t列的矩阵,所述矩阵A1是m行k列的矩阵,所述k、所述n、所述m和所述t均为正整数,所述t小于或等于所述k;所述数据选择电路根据所述索引矩阵从所述矩阵B1中选择出和所述索引矩阵包括的所述索引对应的元素。2.如权利要求1所述的方法,其特征在于,所述电路还包括计算单元阵列,所述计算单元阵列根据所述矩阵A2和所述矩阵B1中被所述数据选择电路选择出的元素,生成矩阵C,其中,所述矩阵C是m行n列的矩阵。3.如权利要求1所述的方法,其特征在于,所述矩阵A2包含所述矩阵A1中所有的非零元素,所述索引矩阵包括所述矩阵A1中所有的非零元素在所述矩阵A1中的索引。4.如权利要求1或2所述的方法,其特征在于,所述矩阵A1为满足条件稀疏的矩阵。5.根据权利要求3所述的方法,其特征在于,所述矩阵A1的m行中每一行包括至少一个组,每组元素的数量相同,且每组元素中非零元素的数量也相同。6.根据权利要求4所述的方法,其特征在于,所述每组元素的数量为4,所述每组元素中非零元素的数量为2。7.如权利要求1

5任一所述的方法,其特征在于,所述获取矩阵A2,包括:根据所述矩阵A1,生成所述矩阵A2,所述矩阵A2的m行与所述矩阵A1的m行按顺序一一对应,所述矩阵A2的每一行的元素包括对应的所述矩阵A1中的一行中按顺序排列的p个组中所有的非零元素,其中,p为小于k的正整数。8.根据权利要求1

6任一所述的方法,其特征在于,所述获取索引矩阵包括:根据所述矩阵A1,生成所述索引矩阵,所述索引矩阵的m行与所述矩阵A2的m行按顺序一一对应,所述索引矩阵的每一行的元素为对应的所述矩阵A2中的一行中按顺序排列的所有元素在所述矩阵A1中的列标。9.如权利要求1

8任一所述的方法,其特征在于,所述矩阵A1是经过训练的神经网络的参数矩阵。10.一种执行矩阵乘法运算的电路,其特征在于,所述电路包括:获取电路,用于获取矩阵B1、矩阵A2和索引矩阵,所述索引矩阵包括指示所述矩阵A2中的元素在矩阵A1中位置的索引,所述矩阵B1是k行n列的矩阵,所述矩阵A2是m行t列的矩阵,所述索引矩阵是m行t列的矩...

【专利技术属性】
技术研发人员:何雷骏徐斌王开兴
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1