System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于双循环编码的矩阵乘法计算方法技术_技高网

基于双循环编码的矩阵乘法计算方法技术

技术编号:41723368 阅读:8 留言:0更新日期:2024-06-19 12:48
本发明专利技术为基于双循环编码的矩阵乘法计算方法,属于计算数学、高性能乘法计算领域。计算矩阵乘法X=A·B,该方法包含以下步骤:S1:填充矩阵A和矩阵B;S2:对矩阵A和矩阵B通过双循环编码算法将矩阵编码成向量a和向量b;S3:计算最小正整数r;S4:根据向量α、向量b和整数r计算对应向量x<subgt;i</subgt;,最后将所有的x<subgt;i</subgt;进行向量求和,得到矩阵X的编码向量x;S5:对编码向量x根据双循环编码进行解码,计算得到矩阵X。本发明专利技术能够消去矩阵乘法计算中的内积运算,采用双循环编码能保证计算前后编码一致,所得计算结果能直接进行下一次运算,不需要额外开销就能完成矩阵转置,应用向量化操作能够有效提高计算效率。

【技术实现步骤摘要】

本专利技术涉及基于双循环编码的矩阵乘法计算方法,属于计算数学、高性能乘法计算领域,尤其适用于基于双循环编码的矩阵乘法计算。


技术介绍

1、矩阵乘法是线性代数中的一种基本运算,广泛应用于科学研究、工程技术、数据分析、人工智能等多个领域。它涉及两个矩阵按照特定规则相乘,产生一个新的矩阵。在计算机科学中,矩阵乘法是许多算法和处理过程的核心,特别是在图像处理、机器学习模型训练、信号处理等领域,矩阵乘法的效率直接影响到整体算法的性能。

2、1960年,strassen[1]最早提出了矩阵乘法计算方法,它通过将矩阵分成子矩阵,递归完成矩阵乘法计算,从而减少了大规模矩阵乘法所需的乘法计算次数。随后winograd[2]在strassen的基础上改进了乘法运算,进一步降低了乘法操作次数。在1987年,coppersmith和winograd[3]提出了一种理论上更快的矩阵乘法计算方法,通过复杂的组合进一步提高矩阵乘法效率。在2012年,williams[4]改进了coppersmith和winograd的方法,将矩阵乘法计算效率进一步提高。尽管如此,高效的矩阵乘法方法仍旧是研究的热点。

3、[1]strassen v.gaussian elimination is not optimal(1969)[j].2021.

4、[2]winograd s.arithmetic complexity of computations[m].siam,1980.

5、[3]coppersmith d,winograd s.matrix multiplication via arithmeticprogressions[c]//proceedings of the nineteenth annual acm symposium on theoryof computing.1987∶1-6.

6、[4]williams v v.multiplying matrices faster than coppersmith-winograd[c]//proceedings of the forty-fourth annual acm symposium on theory ofcomputing.2012∶887-898.


技术实现思路

1、有鉴于此,针对矩阵和矩阵进行矩阵乘法计算x=a·b,输出矩阵其中表示n维实向量空间,n、m和p为正整数。本专利技术提供一种基于双循环编码的矩阵乘法计算方法,通过将矩阵编码成向量完成矩阵乘法计算,利用向量化操作的并行计算能够有效提高矩阵乘法运算效率。其具体步骤如下:

2、s1:判断n、m、p是否两两互素,如果是,则执行步骤s2;如果否,则对a、b矩阵添加全为0的行向量或列向量来使矩阵维数互素,并更新矩阵a、b和参数n、m、p;

3、s2:对矩阵a和矩阵b通过双循环编码算法将矩阵编码成向量a和向量v;

4、s3:根据n、m和p的值计算最小正整数r;其中,r·m-n>0,且r·m-n能被p整除;

5、s4:根据向量a、向量b和整数r计算对应的xi,最后将所有的xi进行向量求和,得到矩阵x的编码向量x;

6、s5:对编码向量x根据双循环编码进行解码,计算得到矩阵x;

7、步骤s1所述的更新后的矩阵步骤s2所述的向量a=(ai-1)1≤i≤n·m,b=(bi-1)1≤i≤m·p。

8、进一步,步骤s2具体为:

9、s201:对矩阵a用双循环编码算法进行编码具体为:当i=0,…,n·m,依次遍历向量a中的元素,在将矩阵a中的元素将对应元素取出,并赋值得到其中,[]k表示计算数值需要取模k的非负剩余。由于n和m互素,因此向量a能遍历矩阵a中的所有元素。

10、s202:对矩阵b用双循环编码算法进行编码具体为:当i=0,…,m·p,依次遍历向量b中的元素,在将矩阵b中的元素将对应元素取出,并赋值得到同理,由于m和p也互素,因此向量b也能遍历矩阵b中的所有元素;

11、进一步,步骤s4具体为:

12、s401:根据指针i计算从向量a中取出对应向量元素的初始位置为α=[-i·n]n·m,从初始位置向后可循环的取n·p个元素得到向量即

13、s402:同理,根据指针i计算从向量b中取出对应向量元素的初始位置为β=[i·(r·m-n)]m·p,从初始位置向后可循环的取n·p个元素得到向量即

14、s403:计算其中,⊙表示向量的阿达玛积(hadamardproduct),即按分量对应相乘;

15、s404:对于所有满足0≤i≤m-1的i,重复步骤s401~s403,计算出共计m个xi;

16、s405:根据公式对所有的xi的对应位置元素进行计算求和得到向量x;

17、进一步,步骤s5具体为:对n·p个元素的向量x=(x0,x1,...,xn·p-1)根据双循环编码解码,对i从0到n·p-1,令矩阵的第[i]n行第[i]p列的元素完成解码。同理,由于n和p也互素,因此矩阵和向量的元素一一对应。

18、相对于传统的矩阵乘法计算,本专利技术方法避免了大量的重复性乘法计算,通过结构的调整,可以便捷的利用一次向量的阿达玛积实现矩阵的乘法计算。有鉴于此,可优选的,对于本专利技术方法能够高效的应用到具有向量化操作的并行计算系统中。

19、可优选的,对于维度较低的矩阵乘法,所述的模k计算可以采样离线的方式预先计算好,在线查表获取,以提高计算效率。

20、本专利技术的有益效果在于:基于双循环编码的矩阵乘法计算方法,对于n×m的矩阵与m×p的矩阵做矩阵乘法,在n、m和p为正整数且两两互素时,通过对矩阵元素进行编码,消去矩阵乘法计算中的内积运算;双循环编码能保证计算前后编码一致,所得计算结果能直接进行下一次运算;且矩阵和矩阵转置的双循环编码得到的向量结果一致,因此可以不需要额外开销就能完成矩阵转置。

本文档来自技高网...

【技术保护点】

1.基于双循环编码的矩阵乘法计算方法,其特征在于,针对矩阵和矩阵进行矩阵乘法计算X=A·B,输出矩阵其中表示n维实向量空间,n、m和p为正整数,该方法包含以下步骤:

2.根据权利要求1所述的基于双循环编码的矩阵乘法计算方法,其特征在于,所述的步骤S403采样具有向量化操作的并行计算系统进行计算,能够大幅提高计算效率。

3.根据权利要求1所述的基于双循环编码的矩阵乘法计算方法,其特征在于,对于维度较低的矩阵乘法,所述的模k计算可以采样离线的方式预先计算好,在线查表获取,以提高计算效率。

【技术特征摘要】

1.基于双循环编码的矩阵乘法计算方法,其特征在于,针对矩阵和矩阵进行矩阵乘法计算x=a·b,输出矩阵其中表示n维实向量空间,n、m和p为正整数,该方法包含以下步骤:

2.根据权利要求1所述的基于双循环编码的矩阵乘法计算方法,其特征在于,所述的步...

【专利技术属性】
技术研发人员:陈经纬杨林翰杨文强吴文渊冯勇
申请(专利权)人:中国科学院重庆绿色智能技术研究院
类型:发明
国别省市:

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

1