一种应用于对称矩阵与向量乘法的计算方法技术

技术编号:17047855 阅读:127 留言:0更新日期:2018-01-17 17:44
本发明专利技术公开了一种应用于对称矩阵与向量乘法的计算方法,该方法用于计算n1×n1的对称矩阵与n1维列向量的乘积,首先对n1×n1的对称矩阵与n1维列向量进行分块,并对n1×n1对称矩阵分块后位于对角线上的矩阵块进行微量数据扩展,使之成为对称矩阵块,然后对n1维列向量进行分块,根据上述分块后的矩阵计算一中间数据块,并根据该中间数据块计算最终结果向量。本发明专利技术提供的应用于对称矩阵与向量乘法的计算方法在对对称矩阵进行并行处理的前提下,不仅能够减少对称矩阵对存储空间的浪费,而且能够提高对称矩阵与向量乘法的计算效率。

A calculation method applied to symmetric matrix and vector multiplication

The calculation method of the invention discloses a method for symmetric matrix vector multiplication, the method for product of symmetric matrix calculation of N1 * N1 and N1 vector virje, first symmetric matrix on N1 * N1 and N1 vector virje block, and the N1 * N1 symmetric matrix block matrix to block at angle line trace data expansion, making symmetric matrix blocks, then N1 vectors are divided into blocks, according to the above matrix block calculation after an intermediate data block, and according to the intermediate data block calculation result vector. The method of symmetric matrix and vector multiplication applied to parallel processing of symmetric matrix can not only reduce the waste of symmetric matrix to storage space, but also improve the computation efficiency of symmetric matrix and vector multiplication.

【技术实现步骤摘要】
一种应用于对称矩阵与向量乘法的计算方法
本专利技术涉及计算机算法优化和计算机体系结构领域,具体来说,本专利技术涉及一种在保证可以对对称矩阵并行处理的前提下,不仅能够减少对称矩阵对存储空间的浪费,而且还能够提高对称矩阵与向量乘法的计算效率的应用于对称矩阵与向量乘法的计算方法。
技术介绍
矩阵与向量乘法在高性能数值计算领域(如过程控制、图像处理、数值分析、科学计算、求解动态规划问题、信号处理、理论物理、固态物理、编码理论、密码学、线性预测和计算机时序分析等)具有非常重要的作用,是具有计算和访存密集型特点的典型应用。据统计,在高性能计算中,90%以上的时间都消耗在矩阵向量乘法上。对称矩阵作为方形矩阵的一种,是稀疏矩阵的典型代表。上述应用中的矩阵大多是对称矩阵的形式,并且在BLAS库中,对称矩阵与向量乘法也是最核心的函数之一。它的性能对数值计算中大部分操作的性能都有影响,尤其是当对称矩阵阶数较高时,通常的计算过程需要占用较多的工作单元和较大的计算机内存,使得计算效率受到影响。因此,提高对称矩阵与向量乘法的计算效率,减少对称矩阵占用的内存空间,无论在理论上还是在实际应用上,对整个数值计算领域都有着重大而深远的意义。在已报道和所能查阅到的国内外相关研究中,关于矩阵与向量乘法的研究情况总结如下:目前,提高对称矩阵与向量乘法计算性能的方法包括硬件方法和软件方法,例如:引用信息为“薛永江,宋庆增,王瑞昆.浮点矩阵向量乘法的FPGA设计与优化[J].微电子学与计算机,2013(11):64-67.”的文献提出了一种基于IEEE-754的32bit、64bit浮点数格式,二叉树数据流的矩阵向量乘法器,其可以在FPGA上进行流水线和高度并行化的高效执行;申请号为201110191133.8的“一种基于龙芯3A的单精度矩阵乘法优化方法”专利公开了一种在龙芯3A平台上实现单精度矩阵乘法的方法;申请号为200710097456.4的“具有减小的带宽要求的矩阵乘法”专利公开了一种能够减小存储器带宽的矩阵乘法方法。另外,现有的硬件方法都是基于普通矩阵与向量乘法进行的优化加速。软件的方法往往计算效率较低,且大多也都是普通矩阵与向量的乘法,没有专门考虑对称矩阵与向量的乘法。与普通矩阵与向量乘法比,对称矩阵有一半的矩阵元素与另一半的元素相同,因此,若在存储上套用普通的矩阵与向量乘法则会导致存储空间上的浪费,不能有效提升对称矩阵的计算性能。同时,现有的对于矩阵与向量乘法的结构优化大都基于如数据流结构,将矩阵进行分块,通过硬件或软件多线程等方式对分块后的小矩阵块进行并行处理。但对对称矩阵的分块计算现阶段还没有相关工作。
技术实现思路
本专利技术提供一种应用于对称矩阵与向量乘法的计算方法,该方法在对对称矩阵进行并行处理的前提下,不仅能够减少对称矩阵对存储空间的浪费,而且能够提高对称矩阵与向量乘法的计算效率。为达到上述目的,本专利技术提供了一种应用于对称矩阵与向量乘法的计算方法,该方法用于计算n1×n1的对称矩阵与n1维列向量的乘积,其包括以下步骤:S1:读取n1×n1对称矩阵中的上三角矩阵中的数据;S2:以m为边长对上三角矩阵进行分块,分块后的数据块Aij排列成z行z列,1≤i≤j≤z,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m三角矩阵块以及n1(n1-m)/2m2个m×m的普通矩阵块,若n1/m不为整数,则z=[n1/m]+1,分块后得到z-1个m×m三角矩阵块、1个a×a三角矩阵块、z(z+1)/2个m×m普通矩阵块以及z-1个m×a矩阵块,其中a=n1-(z-1)×m;S3:分别对S2中得到的z-1个m×m三角矩阵块Aii进行微量数据扩展,使之成为对称矩阵块;S4:以m为边长对n1维列向量进行分块,分块后的数据块Bi1共z行,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m矩阵块,若n1/m不为整数,则z=[n1/m]+1分块后得到z-1个m×m矩阵块以及1个a×a矩阵块,其中a=n1-(z-1)×m;S5:构建一中间数据块Cz1,根据下式计算Cz1中每一元素的值:Ci1=Aii×Bi1+……+Aiz×Bz1;S6:计算最终结果向量Dz1,其中:D11=C11,Di1=f(A1i,B11)+……+f(A(i-1)i,B(i-1)1)+Ci1,其中,2≤i≤z,在本专利技术的一实施例中,S3步骤之后的上三角矩阵中的数据存储于第一内存区,S4步骤之后的n1维列向量存储于第二内存区,中间数据块Cz1存储于第三内存区。在本专利技术的一实施例中,n1=64,m=8。在本专利技术的一实施例中,n1=7,m=2。本专利技术提供的应用于对称矩阵与向量乘法的计算方法在对对称矩阵进行并行处理的前提下,不仅能够减少对称矩阵对存储空间的浪费,而且能够提高对称矩阵与向量乘法的计算效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术第一实施例的64×64对称矩阵与64维列向量乘积的计算示意图;图2为本专利技术第二实施例的7×7对称矩阵与7维列向量乘积的计算示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术公开了一种应用于对称矩阵与向量乘法的计算方法,该方法用于计算n1×n1的对称矩阵与n1维列向量的乘积,其包括以下步骤:S1:读取n1×n1对称矩阵中的上三角矩阵中的数据;S2:以m为边长对上三角矩阵进行分块,分块后的数据块Aij排列成z行z列,1≤i≤j≤z,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m三角矩阵块以及n1(n1-m)/2m2个m×m的普通矩阵块,若n1/m不为整数,则z=[n1/m]+1,分块后得到z-1个m×m三角矩阵块、1个a×a三角矩阵块、z(z+1)/2个m×m普通矩阵块以及z-1个m×a矩阵块,其中a=n1-(z-1)×m,[]为取整符号,即取n1/m之后的整数部分;S3:分别对S2中得到的z-1个m×m三角矩阵块Aii进行微量数据扩展,使之成为对称矩阵块;S4:以m为边长对n1维列向量进行分块,分块后的数据块Bi1共z行,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m矩阵块,若n1/m不为整数,则z=[n1/m]+1分块后得到z-1个m×m矩阵块以及1个a×a矩阵块,其中a=n1-(z-1)×m;S5:构建一中间数据块Cz1,根据下式计算Cz1中每一元素的值:Ci1=Aii×Bi1+……+Aiz×Bz1;S6:计算最终结果向量Dz1,其中:D11=C11,Di1=f(A1i,B11)+……+f(A(i-1)i,B(i-1)1)+Ci1,其中,2≤i≤z,在本专利技术的一实施例中,S3步骤之后的上三角矩阵中的数据存储于第一内存区,S4步骤之后的n1维列向量本文档来自技高网
...
一种应用于对称矩阵与向量乘法的计算方法

【技术保护点】
一种应用于对称矩阵与向量乘法的计算方法,该方法用于计算n1×n1的对称矩阵与n1维列向量的乘积,其特征在于,包括以下步骤:S1:读取n1×n1对称矩阵中的上三角矩阵中的数据;S2:以m为边长对上三角矩阵进行分块,分块后的数据块Aij排列成z行z列,1≤i≤j≤z,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m三角矩阵块以及n1(n1‑m)/2m

【技术特征摘要】
1.一种应用于对称矩阵与向量乘法的计算方法,该方法用于计算n1×n1的对称矩阵与n1维列向量的乘积,其特征在于,包括以下步骤:S1:读取n1×n1对称矩阵中的上三角矩阵中的数据;S2:以m为边长对上三角矩阵进行分块,分块后的数据块Aij排列成z行z列,1≤i≤j≤z,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m三角矩阵块以及n1(n1-m)/2m2个m×m的普通矩阵块,若n1/m不为整数,则z=[n1/m]+1,分块后得到z-1个m×m三角矩阵块、1个a×a三角矩阵块、z(z+1)/2个m×m普通矩阵块以及z-1个m×a矩阵块,其中a=n1-(z-1)×m;S3:分别对S2中得到的z-1个m×m三角矩阵块Aii进行微量数据扩展,使之成为对称矩阵块;S4:以m为边长对n1维列向量进行分块,分块后的数据块Bi1共z行,其中,若n1/m为整数,则z=n1/m,分块后得到z个m×m矩阵块,若n1/m不为整数,则z=[n1/m]+1分块后得到z-1...

【专利技术属性】
技术研发人员:薛瑞张浩范东睿叶笑春朱亚涛
申请(专利权)人:北京中科睿芯科技有限公司
类型:发明
国别省市:北京,11

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

1