对称矩阵的下三角部分存储装置和并行读取方法转让专利

申请号 : CN201811315309.4

文献号 : CN109635236B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘大可刘劭晗

申请人 : 海南大学

摘要 :

本发明实施例提供对称矩阵的下三角部分存储装置和并行读取方法,所述装置包括:存储模块选择电路,用于选择待存取的对称矩阵下三角部分各元素对应的存储模块;地址生成电路,用于计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;并行的m个存储模块,用于存储所述待存取的对称矩阵下三角部分各元素所对应的数据;数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作。本发明实施例只需要对对称矩阵的下三角部分进行存储,并且支持并行读取并恢复对称矩阵的任意行向量和列向量,能够充分利用硬件的并行计算单元,提高矩阵运算算法效率。

权利要求 :

1.一种对称矩阵的下三角部分存储装置,其特征在于,包括:存储模块选择电路,用于选择待存取的对称矩阵下三角部分各元素对应的存储模块;

地址生成电路,用于计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;

并行的m个存储模块,用于存储所述待存取的对称矩阵下三角部分各元素所对应的数据;

数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;

其中,m为所述对称矩阵的下三角部分存储装置的硬件并行度;

其中,所述地址生成电路具体用于:

根据公式(2)分别计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:其中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵下三角部分任一元素所在的行和列,b为预设的标量常数,符号 为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址;

或者,所述地址生成电路具体用于:

根据公式(3)分别计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(3)为:其中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵下三角部分任一元素所在的行和列,b为预设的标量常数,符号 为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址;

其中,所述待存取的对称矩阵的阶数等于所述对称矩阵的下三角部分存储装置的硬件并行度m或为所述对称矩阵的下三角部分存储装置的硬件并行度m的整数倍。

2.根据权利要求1所述的装置,其特征在于,所述存储模块选择电路具体用于:根据公式(1)计算所述待存取的对称矩阵下三角部分各元素对应的存储模块;其中,所述公式(1)为:bank=(i+j+a)mod m    (1),

其中,i,j分别为所述待存取的对称矩阵下三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。

3.一种基于权利要求1-2任一所述对称矩阵的下三角部分存储装置的并行读取方法,其特征在于,包括:根据对称矩阵的对称特性,将待读取的N阶对称矩阵的任一行或列元素转换为所述N阶对称矩阵下三角部分中所包含的N个元素;

利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;

在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;

其中,N为正整数;

其中,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址,m为所述对称矩阵的下三角部分存储装置的硬件并行度;

或者,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址,m为所述对称矩阵的下三角部分存储装置的硬件并行度;

其中,所述待读取的对称矩阵的阶数N等于所述对称矩阵的下三角部分存储装置的硬件并行度m或为所述对称矩阵的下三角部分存储装置的硬件并行度m的整数倍。

4.根据权利要求3所述的方法,其特征在于,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:bank=(i+j+a)mod m    (1),

其中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。

说明书 :

对称矩阵的下三角部分存储装置和并行读取方法

技术领域

[0001] 本发明实施例涉及矩阵运算技术领域,更具体地,涉及对称矩阵的下三角部分存储装置和并行读取方法。

背景技术

[0002] 对称矩阵(Symmetric Matrix)是对称的方阵,在数字信号处理领域有着广泛的使用。例如,许多信号检测算法需要利用实数自相关矩阵得到信号的二阶统计特征。对称矩阵的求解复杂度随着矩阵阶数增加而平方增加,为了减小计算复杂度,可以根据对称矩阵的对称特性,只计算对称矩阵的下三角部分,对称矩阵的上三角部分可以根据对称特性由下三角部分求出。并且如果能够合理的安排对称矩阵元素在存储器中的位置,使得在不影响数据并行存取需求的条件下,存储器只需要保存下三角部分元素的值,那么就可以节省接近一半的数据存储空间。
[0003] 但是,对称矩阵运算,如对称矩阵乘法和对称矩阵与向量乘,通常需要并行读取对称矩阵的行向量或列向量。这些行列向量通常既包含下三角部分矩阵的元素又包含上三角部分矩阵的元素。对于只保存了下三角部分元素的对称矩阵,由于下三角矩阵无法包含需要读取的行列向量的全部元素,需要根据对称特性对矩阵运算进行特殊的优化才能完成运算功能。现有技术给出了多种矩阵运算优化的方案,具体包括:中国专利CN107590106A公开了一种应用于对称矩阵与向量乘法的计算方法,利用矩阵分块和对角矩阵数据扩展的方法进行矩阵向量乘法;第二种方法是根据BLAS(Basic Linear Algebra Subprograms)库中的对称矩阵乘法算法,从算法的最内层循环进行循环展开,并映射到硬件的并行处理单元上;第三种方法是将对称矩阵分解为上三角矩阵和根据对称特性生成的下三角矩阵,分别进行矩阵乘法,再将结果矩阵相加。
[0004] 以上方法均可以应用于对称矩阵运算。但是第一种方法将上(下)三角矩阵进行数据扩展成为对称矩阵的过程需要额外的数据搬移和时间开销。第二种方法通过对原始算法进行并行优化实现了矩阵运算,但是由于最内层循环的循环次数可变且通常较小,导致数据存取的并行度不高,从而降低了硬件利用效率和算法效率。第三种方法虽然有效地减少了计算复杂度,但是仍然受限于并行数据存取的速度,导致硬件利用率和算法的效率不高。

发明内容

[0005] 为了解决现有技术中存在的受限于三角矩阵的行列向量数据存取的并行度不高,导致硬件利用率和矩阵运算算法效率不高的问题,本发明实施例提供对称矩阵的下三角部分存储装置和并行读取方法。
[0006] 根据本发明实施例的一个方面,提供一种对称矩阵的下三角部分存储装置,包括:
[0007] 存储模块选择电路,用于确定待存取的对称矩阵下三角部分各元素对应的存储模块;
[0008] 地址生成电路,用于计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;
[0009] 并行的m个存储模块,用于存储所述待存取的对称矩阵下三角部分各元素所对应的数据;
[0010] 数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
[0011] 其中,m为所述对称矩阵的下三角部分存储装置的硬件并行度。
[0012] 根据本发明实施例的另一个方面,提供一种基于第一方面所提供的对称矩阵的下三角部分存储装置的并行读取方法,包括:
[0013] 根据对称矩阵的对称特性,将待读取的N阶对称矩阵的任一行或列元素转换为所述N阶对称矩阵下三角部分中所包含的N个元素;
[0014] 利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
[0015] 在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
[0016] 其中,N为正整数。
[0017] 本发明实施例提出的对称矩阵的下三角部分存储装置和并行读取方法,只需要对对称矩阵的下三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复对称矩阵的任意行向量和列向量,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。

附图说明

[0018] 图1为根据本发明一实施例提供的对称矩阵的下三角部分存储装置的结构示意图;
[0019] 图2为根据本发明另一实施例提供的基于对称矩阵的下三角部分存储装置的并行读取方法的流程示意图;
[0020] 图3为根据本发明另一实施例提供的只保存下三角部分元素的对称矩阵按行读取的实现示意图;
[0021] 图4为根据本发明另一实施例提供的只保存下三角部分元素的对称矩阵按列读取的实现示意图;
[0022] 图5为根据本发明另一实施例提供的采用另一种存储地址计算公式的只保存下三角部分元素的对称矩阵按行读取的实现示意图;
[0023] 图6为根据本发明另一实施例提供的只保存下三角部分元素的对称矩阵按行读取的实现示意图;
[0024] 图7为根据本发明另一实施例提供的只保存下三角部分元素的对称矩阵按行读取的实现示意图。

具体实施方式

[0025] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
[0026] 为了能够并行读取对称矩阵的行列向量的全部元素,提高并行处理单元利用效率,需要开发并行无冲突存取机制,使数据存取的并行度尽可能的达到计算单元的硬件并行度,那么就可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
[0027] 对称矩阵是对称的方阵,根据对称矩阵的对称特性,N阶对称矩阵X的第i行第j列的元素与第j行第i列的元素相等,因此可以根据对称特性,只存储对称矩阵的下三角部分元素,而上三角部分元素可以通过对称的下三角部分对应元素得到。
[0028] 如图1所示,为本发明一实施例提供的对称矩阵的下三角部分存储装置的结构示意图,包括:存储模块选择电路101、地址生成电路102、并行的m个存储模块103和数据混洗模块104。
[0029] 其中,存储模块选择电路101,用于计算待存取的对称矩阵下三角部分各元素对应的存储模块;
[0030] 其功能实现方式包括但不限于:直接硬件计算对称矩阵下三角部分各元素对应的存储模块bank,通过硬件查表的方式确定对称矩阵下三角部分各元素对应的存储模块bank,通过软件计算存储模块bank并将计算结果通过指令传递给硬件。
[0031] 地址生成电路102,用于计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;
[0032] 其功能实现方式包括但不限于:直接硬件计算对称矩阵下三角部分各元素在其对应的存储模块bank中的逻辑地址addr;通过硬件查表的方式确定对称矩阵下三角部分各元素在其对应的存储模块bank中的逻辑地址addr,通过软件计算对称矩阵下三角部分各元素在其对应的存储模块bank中的逻辑地址addr并将计算结果通过指令传递给硬件。
[0033] 并行的m个存储模块103,用于存储所述待存取的对称矩阵下三角部分各元素所对应的数据,其中,m为所述存储装置的硬件并行度;
[0034] 值得说明的是,若要存储对称矩阵下三角部分的各元素,需要利用存储模块选择电路101和地址生成电路102确定各元素存储的具体位置,这个具体位置根据存储模块bank值和逻辑地址addr值共同唯一确定,称这个具体位置为存储单元,然后将待存储的对称矩阵下三角部分各元素存储到相应的存储单元。N阶对称矩阵的下三角元素的存储只需要(N+1)N/2(N为奇数)或(N+2)N/2(N为偶数)个存储单元。
[0035] 为了使存储装置硬件单元的利用率最高,对称矩阵的阶数N可以等于存储装置的硬件并行度m或者为存储装置的硬件并行度m的整数倍,即有N=k*m,k=1,2,3,…。当待存取的对称矩阵的阶数N等于硬件并行度m时,可以一次性地存取对称矩阵的一行或一列向量的全部元素;当待存取的对称矩阵的阶数N大于硬件并行度m且为存储装置的硬件并行度m的整数倍时,每次最多只能并行存取m个元素,因此,对称矩阵的一个行向量或列向量需要分多次进行存取。
[0036] 数据混洗模块104,用于对从所述存储模块中读取出的数据进行混洗操作;
[0037] 数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
[0038] 本发明实施例提出的对称矩阵的下三角部分存储装置,只需要对对称矩阵的下三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复对称矩阵的任意行向量和列向量,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
[0039] 基于上述实施例,所述存储模块选择电路具体用于:
[0040] 根据公式(1)分别计算所述待存取的对称矩阵下三角部分各元素对应的存储模块;其中,所述公式(1)为:
[0041] bank=(i+j+a)mod m   (1),
[0042] 上式中,i,j分别为所述待存取的对称矩阵下三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
[0043] 公式(1)即为bank计算公式。
[0044] 基于上述实施例,所述地址生成电路具体用于:
[0045] 根据公式(2)分别计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
[0046]
[0047] 上式中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵下三角部分任一元素所在的行和列,b为预设的标量常数,符号 为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
[0048] 所述地址生成电路计算所述待存取的对称矩阵下三角部分各元素在其对应的存储模块中的逻辑地址的公式还可以为:
[0049]
[0050] 上式中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵下三角部分任一元素所在的行和列,b为预设的标量常数,符号 为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
[0051] 公式(2)和公式(3)即为addr计算公式。
[0052] 在上述实施例的基础上,如图2所示,为本发明另一实施例提供的基于对称矩阵的下三角部分存储装置的并行读取方法的流程示意图,包括:
[0053] 201、根据对称矩阵的对称特性,将待读取的N阶对称矩阵的任一行或列元素转换为所述N阶对称矩阵下三角部分中所包含的N个元素;其中,N为正整数。
[0054] 根据对称矩阵的对称特性,有N阶对称矩阵的第i行第j列的元素的共轭与第j行第i列的元素相等,因此根据对称特性,可以从只存储对称矩阵的下三角部分元素的存储装置中恢复N阶对称矩阵上三角部分的元素。
[0055] 若需要读取N阶对称矩阵的任一行或列,则根据对称特性将该行或列元素中属于该对称矩阵上三角部分的元素转换为下三角部分元素,例如,若要并行取第j=3列{x03,x13,x23,x33,x43}五个元素,则将上三角部分元素{x03,x13,x23}转换为相对称的属于下三角部分的元素,即{x30,x31,x32}。这一步骤将待读取的N阶对称矩阵的任一行或列元素转换为N阶对称矩阵下三角部分中所包含的N个元素{x30,x31,x32,x33,x43}。
[0056] 202、利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
[0057] 利用存储模块选择电路确定所述N个元素各自对应的存储模块,即利用bank计算公式通过计算获得N个元素各自对应的存储模块bank;利用地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,即利用addr计算公式获得N个元素在各自对应的存储模块bank中的逻辑地址addr;然后根据bank和addr,找到N个元素各自对应的存储单元,并行读出所述N各元素所对应的数据。
[0058] 203、在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
[0059] 数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
[0060] 本发明实施例提出的基于对称矩阵的下三角部分存储装置的并行读取方法,支持从只保存下三角部分元素的对称矩阵中并行读取并恢复对称矩阵的任意行向量和列向量,能够充分利用SIMD硬件的并行计算单元,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
[0061] 基于上述实施例,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
[0062] 根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
[0063] bank=(i+j+a)mod m   (1),
[0064] 上式中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。通常,a的取值为零。
[0065] 基于上述实施例,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
[0066] 根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
[0067]
[0068] 上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号 为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。通常,b的取值也为零。
[0069] 计算N个元素在各自对应的存储模块中的逻辑地址的步骤,还包括:
[0070] 根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
[0071]
[0072] 上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号 为向上取整操作,符号 为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
[0073] 基于上述实施例,当对称矩阵的阶数N等于存储装置的硬件并行度m时,可以一次性地读取对称矩阵的一行或一列向量的全部元素。当对称矩阵的阶数N为m的整数倍时,由于每次最多只能并行读取m个元素,因此,对称矩阵的一个行向量或列向量需要分多次进行读取。
[0074] 下面结合实例对本发明实施例所提供的并行读取方法作进一步解释。为了简化说明,存储模块选择电路和地址生成电路中的常量a和常量b的取值均为0。
[0075] 如图3所示,为本发明一实施例只保存下三角部分元素的对称矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的下三角部分存储装置的硬件并行度m=5。根据公式(1)可得数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)可得数据所在的存储模块的存储地址计算公式为
对于5阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 5,数据所在的存储模块的存储地址计算公式为 对5阶对称矩阵取第i=3行,如
图3(a)所示,并行读取对称矩阵的行向量{x30,x31,x32,x33,x34}。图3(b)示出对称矩阵行向量在其下三角部分的投影,即可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x30,x31,x32,x33,x43}五个元素。根据bank和addr的计算公式,如图3(c)所示,将对称矩阵的下三角部分的元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x30,x31,x32,x33,x43}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗。本发明实施例给出了对称矩阵的阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵行向量的方法。
[0076] 如图4所示,为本发明另一实施例只保存下三角部分元素的对称矩阵按列读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的下三角部分存储装置的硬件并行度m=5。根据公式(1)可得数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)可得数据所在的存储模块的存储地址计算公式为对于5阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 5,数据所在的存储模块的存储地址计算公式为 对5阶对称矩阵取第j=3列,如
图4(a)所示,即为并行取{x03,x13,x23,x33,x43}五个元素。如图4(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x30,x31,x32,x33,x43}五个元素。根据bank和addr的计算公式,如图4(c)所示,将对称矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x30,x31,x32,x33,x43}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗。本发明实施例给出了对称矩阵的阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵列向量的方法。
[0077] 如图5所示,为本发明另一实施例采用另一种addr计算公式的只保存下三角部分元素的对称矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的下三角部分存储装置的硬件并行度m=5。根据公式(1)可得,数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(3)可得数据所在的存储模块的存储地址计算公式为对于5阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 5,数据所在的存储模块的存储地址计算公式为 对5阶对称矩阵取第i=3行,如图5(a)所示,即为并行取
{x30,x31,x32,x33,x34}五个元素。如图5(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x30,x31,x32,x33,x43}五个元素。根据bank和addr的计算公式,如图5(c)所示,将对称矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x30,x31,x32,x33,x43}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗。本发明实施例给出了对称矩阵的存储装置采用另一地址计算公式(3)时,矩阵阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵行向量的方法。对称矩阵的存储装置采用另一地址计算公式(3)时,矩阵阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵列向量的方法与图4所示的实施例类似,在此不再赘述。
[0078] 如图6所示,为本发明实施例只保存下三角部分元素的对称矩阵按行读取的实现示意图(N=6,m=6)。在本实施例中,对称矩阵的下三角部分存储装置的硬件并行度m=6。根据公式(1)可得数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)可得数据所在的存储模块的存储地址计算公式为
那么,对于6阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 6,数据所在的存储模块的存储地址计算公式为 对6阶对称矩阵取第i=
4行,如图6(a)所示,即为并行取{x40,x41,x42,x43,x44,x45}六个元素。如图6(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x40,x41,x42,x43,x44,x54}六个元素。根据bank和addr的计算公式,如图6(c)所示,将对称矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的六个数据{x40,x41,x42,x43,x44,x54}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的六个元素进行数据混洗。本发明实施例给出了对称矩阵的阶数为偶数,且与存储装置的硬件并行度相等的情况下,读取对称矩阵行向量的方法。读取对称矩阵列向量的方法与前述实施例类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
[0079] 如图7所示,为本发明实施例只保存下三角部分元素的对称矩阵按行读取的实现示意图(N=6,m=3)。在本实施例中,对称矩阵的下三角部分存储装置的硬件并行度m=3。根据公式(1)可得,数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)可得数据所在的存储模块的存储地址计算公式为
对于6阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 3,数据所在的存储模块的存储地址计算公式为 对6阶对称矩阵取第i
=4行,如图7(a)所示,即为并行取{x40,x41,x42,x43,x44,x45}六个元素。如图7(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x40,x41,x42,x43,x44,x54}六个元素。根据bank和addr的计算公式,如图7(c)和图7(d)所示,将对称矩阵的下三角部分元素映射到所述存储模块中,可以看出,由于只有m=3个并行的存储模块,一个行向量的6个数据需要分两步进行读取。可以第一步首先读取{x40,x41,x42,},第二步再读取{x43,x44,x54},实现无冲突读取。然后对读取出的六个元素进行数据混洗。本发明实施例给出了对称矩阵的阶数N为存储装置的硬件并行度m的整数倍时,读取对称矩阵行向量的方法。读取对称矩阵列向量的方法类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
[0080] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
[0081] 最后,本发明上述各实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。