System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种矩阵计算方法及装置制造方法及图纸_技高网

一种矩阵计算方法及装置制造方法及图纸

技术编号:40140221 阅读:5 留言:0更新日期:2024-01-23 23:30
一种矩阵计算方法及装置,在该方法中,将待相乘的第一矩阵的输入数据以规模为M×N的子块为单位进行按行分块,以得到至少一个第一子块;以及将待相乘的第二矩阵的输入数据以规模为N×R的子块为单位进行按列分块,以得到至少一个第二子块;所述M、N、R均取正整数;确定一个或多个目标子块组合,每个目标子块组合包括一个第一子块和一个第二子块,并且其中的第一子块中的至少一个元素和第二子块中的至少一个元素为待相乘元素;将所述一个或多个目标子块组合中的每个目标子块组合作为矩阵计算装置的输入数据,以得到所述矩阵计算装置输出的所述第一矩阵和所述第二矩阵的乘积结果。

【技术实现步骤摘要】

本申请涉及稀疏矩阵,尤其涉及一种矩阵计算方法及装置


技术介绍

1、矩阵乘法是数字信号的基本算法,同时也是许多科学计算方法的基本运算。在数字图像处理,计算机视觉的快速处理以及工业实时控制等领域都被广泛应用。但由于实际应用中,矩阵规模通常较大,矩阵乘算法本身复杂度较高、处理效率较低,成为限制系统性能提升的瓶颈所在,因此为此类应用设计高性能的硬件结构是当前芯片的研究热点。

2、尽管近年来提出了很多矩阵乘加速器设计,但是都缺乏对非均匀的稀疏矩阵加速的讨论和支持,稀疏矩阵是指元素大部分为零且非零元素分布没有规律。这种非均匀的稀疏矩阵通常规模较大,并且广泛存在于很多现代应用领域中,如人工智能、大数据、图像处理等热门领域,以及计算流体力学、统计物理、电路模拟、图像处理、甚至包括宇宙探测等领域。在这些应用领域之中,矩阵乘运算占据了计算量的主要部分。

3、由于芯片上存储资源和计算资源十分有限,因此,目前针对稀疏矩阵的矩阵乘运算主要采用软件方式实现,计算过程速度缓慢,无法满足实时处理要求。因此提供一款支持稀疏矩阵的矩阵乘加速器获得更高的计算效率,以更好地适应现代应用的加速需求,已经成为一项亟待解决的关键技术问题。


技术实现思路

1、本申请提供一种矩阵计算方法及装置,用于加速稀疏矩阵相乘运算。

2、第一方面,本申请实施例提供一种矩阵计算方法,该方法包括:对于待相乘的第一矩阵和第二矩阵,将第一矩阵的输入数据以规模为m×n的子块为单位进行按行分块,以得到至少一个子块(记为第一子块);以及将第二矩阵的输入数据以规模为n×r的子块为单位进行按列分块,以得到至少一个子块(记为第二子块);所述m、n、r均取正整数;确定一个或多个目标子块组合,每个目标子块组合包括一个第一子块和一个第二子块,并且其中的第一子块中的至少一个元素和第二子块中的至少一个元素为待相乘元素;将一个或多个目标子块组合中的每个目标子块组合作为矩阵计算装置的输入数据,以得到该矩阵计算装置输出的第一矩阵和所述第二矩阵的乘积结果。

3、通过上述设计,将第一矩阵的输入数据按行分为一个或多个第一子块;将第二矩阵的输入数据按列分块分为一个或多个第二子块,基于每个第一子块所包含的数据和每个第二子块所包含的数据,确定一个或多个目标子块组合,将每个目标子块组合中的第一子块和第二子块作为矩阵计算装置的输入数据,以得到该第一子块和第二子块的乘积结果。其中,第一矩阵的输入数据可以是第一矩阵的稀疏编码,或第二矩阵的输入数据可以是第二矩阵的稀疏编码,通过对第一矩阵及第二矩阵的输入数据进行切块,基于矩阵计算装置计算每个目标子块组合的乘积结果,从而完成第一矩阵和第二矩阵的乘运算,如此,便可以加速任意规模、任意稀疏度、非零元素随机分布的稀疏矩阵乘运算。

4、在一种可能的实现方式中,第一矩阵为稀疏矩阵,第一矩阵的输入数据包括第一矩阵的非零元素的值以及所述非零元素的位置信息,该位置信息用于指示非零元素在所述第一矩阵中的位置;第二矩阵为稠密矩阵,第二矩阵的输入数据包括第二矩阵的元素的值以及元素的位置信息,该位置信息用于指示所述元素在所述第二矩阵中的位置。

5、通过上述设计,本申请可以加速稀疏矩阵和稠密矩阵乘运算。

6、在一种可能的实现方式中,第一矩阵为稀疏矩阵,第一矩阵的输入数据包括第一矩阵的非零元素的值以及非零元素的位置信息,该位置信息用于指示非零元素在第一矩阵中的位置;第二矩阵为稀疏矩阵,第二矩阵的输入数据包括第二矩阵的非零元素的值以及非零元素的位置信息,该位置信息用于指示非零元素在所述第二矩阵中的位置。

7、通过上述设计,本申请可以加速稀疏矩阵和稀疏矩阵乘运算。

8、在一种可能的实现方式中,第一矩阵的输入数据为第一矩阵的稀疏编码,稀疏编码是通过对第一矩阵中的元素进行编码后得到的。

9、通过上述设计,第一矩阵为稀疏编码时,可以节省存储及操作第一矩阵所需的内存空间。

10、在一种可能的实现方式中,第一矩阵的稀疏编码的格式包括:压缩稀疏行格式csr、坐标格式coo。

11、通过上述设计,第一矩阵的输入数据为csr或coo格式的稀疏编码时,可以更加方便、快捷地对第一矩阵的输入数据进行按行分块。

12、在一种可能的实现方式中,若第二矩阵为稀疏矩阵,第二矩阵的输入数据为第二矩阵的稀疏编码,稀疏编码是通过对第二矩阵中元素进行编码后得到的。

13、通过上述设计,第二矩阵为稀疏编码时,可以节省存储及操作第二矩阵所需的内存空间。

14、在一种可能的实现方式中,第二矩阵的稀疏编码的格式包括:压缩稀疏列格式csc、坐标格式coo。

15、通过上述设计,第二矩阵的输入数据为csc或coo格式的稀疏编码时,可以更加方便、快捷地对第二矩阵的输入数据进行按列分块。

16、在一种可能的实现方式中,位置信息指示非零元素的行号、列号;待相乘元素是指第一子块中的一个元素的列号和第二子块中的一个元素的行号相同。

17、通过上述设计,基于第一子块内非零元素的位置信息和第二子块内非零元素的位置信息,确定待相乘的元素。

18、在一种可能的实现方式中,确定一个或多个目标子块组合,包括:

19、将至少一个第一子块和至少一个第二子块划分为多个子块组合,每个子块组合包括任意一个第一子块和任意一个第二子块;

20、针对每个子块组合,确定所述子块组合内的第一子块中的元素的列号范围,以及所述子块组合内的第二子块中元素的行号范围;

21、若所述列号范围和所述行号范围有交集,则所述子块组合为目标子块组合;或,若所述列号范围和所述行号范围没有交集,则所述子块组合不是目标子块组合。

22、通过上述设计,在确定待相乘元素时,通过比较第一子块的列号范围和第二子块的行号范围可以大大减少比对次数,进一步缩短准备数据的时间,从而缩短矩阵乘运算的时间。

23、在一种可能的实现方式中,矩阵计算装置用于基于输入的第一子块和第二子块中的待相乘元素计算所述第一子块和第二子块的乘积结果。

24、通过上述设计,本申请提供的矩阵计算装置可以识别第一子块和第二子块中的待相乘元素,对待相乘元素执行乘运算,如此该矩阵计算装置能够支持稀疏矩阵乘运算的乘运算,并且可以提高乘运算效率。

25、在一种可能的实现方式中,该矩阵计算装置通过下列方式确定第一矩阵和第二矩阵的乘积结果:

26、将全部目标子块组合划分为多个集合,每个集合中的一个或多个目标子块组合所包括的一个或多个第一子块位于第一矩阵的同一行,且每个集合中的一个或多个目标子块组合所包括的一个或多个第二子块位于所述第二矩阵的同一列;针对每个集合,对所述集合内的一个或多个目标子块组合依次输入所述矩阵计算装置,所述矩阵计算装置计算每个目标子块组合的乘积结果,并将所述集合内的一个或多个目标子块组合的乘积结果相加,相加结果为所述第一矩阵和所述第二矩阵的本文档来自技高网...

【技术保护点】

1.一种矩阵计算方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,所述第一矩阵为稀疏矩阵,所述第一矩阵的输入数据包括所述第一矩阵的非零元素的值以及所述非零元素的位置信息,所述位置信息用于指示所述非零元素在所述第一矩阵中的位置;

3.如权利要求1所述的方法,其特征在于,所述第一矩阵为稀疏矩阵,所述第一矩阵的输入数据包括所述第一矩阵的非零元素的值以及所述非零元素的位置信息,所述位置信息用于指示所述非零元素在所述第一矩阵中的位置;

4.如权利要求1-3任一项所述的方法,其特征在于,所述第一矩阵的输入数据为所述第一矩阵的稀疏编码,所述稀疏编码是通过对所述第一矩阵中的元素进行编码后得到的。

5.如权利要求4所述的方法,其特征在于,所述稀疏编码的格式包括:压缩稀疏行格式CSR、坐标格式COO。

6.如权利要求1-5任一项所述的方法,其特征在于,若所述第二矩阵为稀疏矩阵,所述第二矩阵的输入数据为所述第二矩阵的稀疏编码,所述稀疏编码是通过对所述第二矩阵中元素进行编码后得到的。

7.如权利要求6所述的方法,其特征在于,所述稀疏编码的格式包括:压缩稀疏列格式CSC、坐标格式COO。

8.如权利要求2-7任一项所述的方法,其特征在于,所述位置信息指示所述非零元素的行号、列号;所述待相乘元素是指第一子块中的一个元素的列号和第二子块中的一个元素的行号相同。

9.如权利要求2-8任一项所述的方法,其特征在于,所述确定一个或多个目标子块组合,包括:

10.如权利要求1-9任一项所述的方法,其特征在于,所述矩阵计算装置用于基于输入的第一子块和第二子块中的待相乘元素计算所述第一子块和第二子块的乘积结果。

11.如权利要求10所述的方法,其特征在于,所述矩阵计算装置通过下列方式确定所述第一矩阵和所述第二矩阵的乘积结果:

12.一种矩阵计算装置,其特征在于,所述矩阵计算装置包括比较单元、计算单元:

13.如权利要求12所述的装置,其特征在于,所述位置信息包括所述非零元素的行号、列号;

14.如权利要求12或13所述的装置,其特征在于,所述计算单元对所述一对或多对待相乘元素执行乘加运算时,具体用于:

15.如权利要求12-14任一项所述的装置,其特征在于,所述计算单元还用于:将所述乘积结果与累加器中存储的第三子矩阵相加,并将相加结果写回所述累加器。

16.如权利要求12-14任一项所述的装置,其特征在于,所述矩阵计算装置还包括检测模块;所述检测模块用于检测所述第一子矩阵和所述第二子矩阵是否为重叠矩阵,所述重叠矩阵是指所述第一子矩阵中的至少一个元素和第二子块中的至少一个元素为待相乘元素。

17.如权利要求16所述的装置,其特征在于,所述待相乘元素是指第一子矩块中的一个元素的列号和第二子矩块中的一个元素的行号相同。

18.一种计算设备,其特征在于,所述装置包括处理器、存储器;

19.一种计算设备,其特征在于,所述装置包括处理器、存储器、如权利要求12至17中任一项所述的矩阵计算装置;

20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质被存储设备执行时,所述存储设备执行上述权利要求1至11中任一项所述的方法。

...

【技术特征摘要】

1.一种矩阵计算方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,所述第一矩阵为稀疏矩阵,所述第一矩阵的输入数据包括所述第一矩阵的非零元素的值以及所述非零元素的位置信息,所述位置信息用于指示所述非零元素在所述第一矩阵中的位置;

3.如权利要求1所述的方法,其特征在于,所述第一矩阵为稀疏矩阵,所述第一矩阵的输入数据包括所述第一矩阵的非零元素的值以及所述非零元素的位置信息,所述位置信息用于指示所述非零元素在所述第一矩阵中的位置;

4.如权利要求1-3任一项所述的方法,其特征在于,所述第一矩阵的输入数据为所述第一矩阵的稀疏编码,所述稀疏编码是通过对所述第一矩阵中的元素进行编码后得到的。

5.如权利要求4所述的方法,其特征在于,所述稀疏编码的格式包括:压缩稀疏行格式csr、坐标格式coo。

6.如权利要求1-5任一项所述的方法,其特征在于,若所述第二矩阵为稀疏矩阵,所述第二矩阵的输入数据为所述第二矩阵的稀疏编码,所述稀疏编码是通过对所述第二矩阵中元素进行编码后得到的。

7.如权利要求6所述的方法,其特征在于,所述稀疏编码的格式包括:压缩稀疏列格式csc、坐标格式coo。

8.如权利要求2-7任一项所述的方法,其特征在于,所述位置信息指示所述非零元素的行号、列号;所述待相乘元素是指第一子块中的一个元素的列号和第二子块中的一个元素的行号相同。

9.如权利要求2-8任一项所述的方法,其特征在于,所述确定一个或多个目标子块组合,包括:

10.如权利要求1-9任一项所述的方法,其特征在于,所述矩阵计算装置用...

【专利技术属性】
技术研发人员:林腾毅
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1