System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种用于ARM架构的通用矩阵乘法计算方法及系统技术方案_技高网

一种用于ARM架构的通用矩阵乘法计算方法及系统技术方案

技术编号:40841973 阅读:5 留言:0更新日期:2024-04-01 15:09
本发明专利技术提供了一种用于ARM架构的通用矩阵乘法计算方法及系统,方法包括:构建矩阵的分块矩阵;依据分块矩阵对矩阵的行和/或列扩展,计算矩阵扩展的行数和/或列数;提取分块矩阵每次从矩阵中加载数据组或写出数据组的首地址;依据分块矩阵、每次加载数据组的首地址和扩展的行数和/或列数,读取数据组并加载数据组至零初始化的分块矩阵内;采用矩阵乘法运算计算每次加载数据组的分块矩阵A′与分块矩阵B′的乘积并写入分块矩阵C′内,依据每次写出数据组的首地址将每次写入至分块矩阵C′的数据组输出至矩阵C。本发明专利技术的方法有良好的通用性,可以实现任意尺寸矩阵的通用矩阵乘法的加速功能,有效提高了ARM架构处理器的数据处理效率。

【技术实现步骤摘要】

本专利技术涉及嵌入式并行计算技术,具体涉及一种用于arm架构的通用矩阵乘法计算方法及系统。


技术介绍

1、随着arm体系架构的迅速发展,基于arm架构处理器的高性能计算如图形图像处理、信号处理等应用需求也在急剧增加。在众多应用需求中,矩阵乘法是计算量大且最常用的数据处理算法之一,其计算效率直接关系着数据处理应用的性能。因此,如何提高通用矩阵乘法的数据处理效率,一直以来都是业界广泛关注的问题。

2、鉴于矩阵乘法中数据处理操作的相似性,传统的并行计算是提高矩阵乘法数据处理速度的最主要的优化方法。当前,常用的并行优化方法主要包括软并行和硬并行两种思路,软并行的方法是通过构造多线程,将矩阵数据在多线程中并行处理来提高矩阵乘法的计算效率;硬并行的方法根据arm架构处理器的硬件特性,利用neon向量寄存器可以实现矩阵数据的并行处理,从而取得较好的加速效果。

3、然而,软并行的方法因为线程开销导致性能提升有限,且可能会因为线程间数据的伪共享问题而导致计算效率不升反降。硬并行的方法只针对特定尺寸矩阵的乘法运算,如矩阵行数和列数均需满足4的倍数,虽然其可以通过填充零的方式来使矩阵满足该要求,但是目前尚没有具体的实施方法。

4、因此,如何面向arm架构设计针对任意尺寸矩阵的通用矩阵乘法加速方法是本领域亟待解决的问题。


技术实现思路

1、为了解决对于面向arm架构处理器针对任意尺寸矩阵的通用矩阵乘法加速尚缺乏相关技术方法的问题,本专利技术公开了一种用于arm架构的通用矩阵乘法计算方法及系统。

2、实现专利技术目的的技术方案如下:

3、本专利技术第一方面提供了一种用于arm架构的通用矩阵乘法计算方法,包括:

4、步骤s1、依据寄存器长度和预设矩阵精度,构建矩阵的分块矩阵,包括构建矩阵a的分块矩阵a′、矩阵b的分块矩阵b′和矩阵c的分块矩阵c′;

5、步骤s2、依据所述分块矩阵对所述矩阵的行和/或列扩展,获取所述矩阵扩展的行数和/或列数;

6、步骤s3、依据所述矩阵和所述分块矩阵,提取所述分块矩阵每次从所述矩阵中加载数据组或写出数据组的首地址;

7、步骤s4、依据所述分块矩阵、每次加载数据组的所述首地址和所述扩展的行数和/或列数,从所述矩阵中读取数据组并加载数据组至零初始化的所述分块矩阵内;

8、步骤s5、采用矩阵乘法运算,计算每次加载数据组的分块矩阵a′和分块矩阵b′的乘积并写入所述分块矩阵c′内,依据每次写出数据组的所述首地址,将每次写入至所述分块矩阵c′的数据组输出至所述矩阵c。

9、可选地,上述步骤s2中,所述依据所述分块矩阵对所述矩阵的行和/或列扩展,获取所述矩阵扩展的行数和/或列数,包括:

10、步骤s21、以位于所述矩阵中第一行和第一列的数据作为起始数据,使用所述分块矩阵对所述矩阵进行模拟分割得到分块阵列,所述分块阵列包括多个矩阵块;

11、步骤s22、遍历所述分块阵列中每个所述矩阵块,提取所述分块阵列中小于所述分块矩阵的所述矩阵块作为待扩充矩阵块;

12、步骤s23、对每个所述待扩充矩阵块的行和/或列,通过零填充的方式进行扩展,使所述待扩充矩阵块的大小等于所述分块矩阵,获取所述待扩充矩阵块扩展的行数和/或列数,得到所述矩阵扩展的行数和/或列数。

13、可选地,上述步骤s3中,所述依据所述矩阵和所述分块矩阵,提取所述分块矩阵每次从所述矩阵中加载数据组或写出数据组的首地址,包括:

14、步骤s31、以位于所述矩阵中第一行和第一列的数据作为起始数据,提取所述矩阵中每个数据的行号和列号;

15、步骤s32、遍历所述矩阵,提取所述分块矩阵从所述矩阵中每次加载或写出数据组的第一数据的行号和列号以确定首地址。

16、可选地,上述步骤s4中,所述依据所述分块矩阵、每次加载数据组的所述首地址和所述矩阵扩展的行数和/或列数,从所述矩阵中读取数据并加载数据组至零初始化的所述分块矩阵内,包括:

17、步骤s41、对每个所述分块矩阵进行置零初始化;

18、步骤s42、依据所述分块矩阵、每次加载数据组的所述首地址,提取从所述矩阵中读取的数据组中首行数据的行号和首列数据的列号;

19、步骤s43、如果所述首行数据的行号小于所述矩阵的行数且差值小于所述分块矩阵的行数,或者所述首列数据的列号小于所述矩阵的列数且差值小于所述分块矩阵的列数,则依据所述矩阵扩展的行数和/或列数从所述矩阵中读取非扩充部分的数据组并加载数据组至零初始化的所述分块矩阵内;否则,直接从所述矩阵中读取数据并加载数据组至零初始化的所述分块矩阵内。

20、可选地,上述步骤s5中,采用arm架构平台的neon并行加速技术进行所述矩阵乘法运算。

21、本专利技术第二方面提供了一种用于arm架构的通用矩阵乘法计算系统,包括:

22、分块矩阵构建模块,用于依据寄存器长度和预设矩阵精度,构建矩阵的分块矩阵,包括构建矩阵a的分块矩阵a′、矩阵b的分块矩阵b′和矩阵c的分块矩阵c′;

23、扩展模块,用于依据所述分块矩阵对所述矩阵的行和/或列扩展,获取所述矩阵扩展的行数和/或列数;

24、首地址获取模块,用于依据所述矩阵和所述分块矩阵,提取所述分块矩阵每次从所述矩阵中加载数据组或写出数据组的首地址;

25、数据加载模块,用于依据所述分块矩阵、每次加载数据组的所述首地址和所述矩阵扩展的行数和/或列数,从所述矩阵中读取数据组并加载数据组至零初始化的所述分块矩阵内;

26、矩阵乘法计算模块,用于采用矩阵乘法运算,计算每次加载数据组的分块矩阵a′和分块矩阵b′的乘积并写入所述分块矩阵c′内,依据每次写出数据组的所述首地址,将每次写入至所述分块矩阵c′的数据组输出至所述矩阵c。。

27、与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本专利技术公开的用于arm架构的通用矩阵乘法计算方法,通过采用构建的分块矩阵,对矩阵进行分割并对矩阵需要进行零填充(即扩展)的行和列进行确定,在每次加载数据组时根据确定的首地址和扩展的行数和/或列数,进行分块矩阵数据加载,使用加载有数据的两个分块矩阵相乘并输出得到最终的结果,本专利技术的方法有效解决了arm架构平台下针对任意尺寸矩阵运算的加速方法,提高了数据处理效率。

本文档来自技高网...

【技术保护点】

1.一种用于ARM架构的通用矩阵乘法计算方法,其特征在于,包括:

2.根据权利要求1所述的用于ARM架构的通用矩阵乘法计算方法,其特征在于,步骤S2中,所述依据所述分块矩阵对所述矩阵的行和/或列扩展,获取所述矩阵扩展的行数和/或列数,包括:

3.根据权利要求1所述的用于ARM架构的通用矩阵乘法计算方法,其特征在于,步骤S3中,所述依据所述矩阵和所述分块矩阵,提取所述分块矩阵每次从所述矩阵中加载数据组或写出数据组的首地址,包括:

4.根据权利要求1所述的用于ARM架构的通用矩阵乘法计算方法,其特征在于,步骤S4中,所述依据所述分块矩阵、每次加载数据组的所述首地址和所述矩阵扩展的行数和/或列数,从所述矩阵中读取数据组并加载数据组至零初始化的所述分块矩阵内,包括:

5.根据权利要求1所述的用于ARM架构的通用矩阵乘法计算方法,其特征在于,步骤S5中,采用ARM架构平台的NEON并行加速技术进行所述矩阵乘法运算。

6.一种用于ARM架构的通用矩阵乘法计算系统,其特征在于,包括:

【技术特征摘要】

1.一种用于arm架构的通用矩阵乘法计算方法,其特征在于,包括:

2.根据权利要求1所述的用于arm架构的通用矩阵乘法计算方法,其特征在于,步骤s2中,所述依据所述分块矩阵对所述矩阵的行和/或列扩展,获取所述矩阵扩展的行数和/或列数,包括:

3.根据权利要求1所述的用于arm架构的通用矩阵乘法计算方法,其特征在于,步骤s3中,所述依据所述矩阵和所述分块矩阵,提取所述分块矩阵每次从所述矩阵中加载数据组或写出数据组的首地址,包括:

4....

【专利技术属性】
技术研发人员:祁俊雄刘作龙李丽娜韩伟李晨卉
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所
类型:发明
国别省市:

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

1