CN109614582B - 自共轭矩阵的下三角部分存储装置和并行读取方法 - Google Patents
自共轭矩阵的下三角部分存储装置和并行读取方法 Download PDFInfo
- Publication number
- CN109614582B CN109614582B CN201811315278.2A CN201811315278A CN109614582B CN 109614582 B CN109614582 B CN 109614582B CN 201811315278 A CN201811315278 A CN 201811315278A CN 109614582 B CN109614582 B CN 109614582B
- Authority
- CN
- China
- Prior art keywords
- self
- conjugate
- conjugate matrix
- matrix
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Abstract
本发明实施例提供自共轭矩阵的下三角部分存储装置和并行读取方法,所述装置包括:存储模块选择电路,用于选择待存取的自共轭矩阵下三角部分各元素对应的存储模块;地址生成电路,用于计算待存取的自共轭矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;并行的m个存储模块,用于存储待存取的自共轭矩阵下三角部分各元素所对应的数据;数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作。本发明实施例只需对自共轭矩阵的下三角部分进行存储,并支持并行读取并恢复自共轭矩阵的任意行向量和列向量,能充分利用硬件的并行计算单元,提高矩阵运算算法效率。
Description
技术领域
本发明实施例涉及矩阵运算技术领域,更具体地,涉及自共轭矩阵的下三角部分存储装置和并行读取方法。
背景技术
自共轭矩阵(Hermitian Matrix)是共轭对称的方阵,在数字信号处理领域有着广泛的使用。例如,许多信号检测算法需要利用实数自相关矩阵得到信号的二阶统计特征。自共轭矩阵的求解复杂度随着矩阵阶数增加而平方增加,为了减小计算复杂度,可以根据自共轭矩阵的复数共轭对称特性,只计算自共轭矩阵的下三角部分,自共轭矩阵的上三角部分可以根据复数共轭对称特性由下三角部分求出。并且如果能够合理的安排自共轭矩阵元素在存储器中的位置,使得在不影响数据并行存取需求的条件下,存储器只需要保存下三角部分元素的值,那么就可以节省接近一半的数据存储空间。
但是,自共轭矩阵运算,如自共轭矩阵乘法和自共轭矩阵与向量乘,通常需要并行读取自共轭矩阵的行向量或列向量。这些行列向量通常既包含下三角部分矩阵的元素又包含上三角部分矩阵的元素。对于只保存了下三角部分元素的自共轭矩阵,由于下三角矩阵无法包含需要读取的行列向量的全部元素,需要根据复数共轭对称特性对矩阵运算进行特殊的优化才能完成运算功能。现有技术给出了多种矩阵运算优化的方案,具体包括:中国专利CN107590106A公开了一种应用于对称矩阵与向量乘法的计算方法,利用矩阵分块和对角矩阵数据扩展的方法进行矩阵向量乘法;第二种方法是根据BLAS(Basic Linear AlgebraSubprograms)库中的自共轭矩阵乘法算法,从算法的最内层循环进行循环展开,并映射到硬件的并行处理单元上;第三种方法是将自共轭矩阵分解为上三角矩阵和根据共轭对称特性生成的下三角矩阵,分别进行矩阵乘法,再将结果矩阵相加。
以上方法均可以应用于自共轭矩阵运算。但是应用第一种方法将上(下)三角矩阵进行数据扩展成为自共轭矩阵的过程需要额外的数据搬移和时间开销。第二种方法通过对原始算法进行并行优化实现了矩阵运算,但是由于最内层循环的循环次数可变且通常较小,导致数据存取的并行度不高,从而降低了硬件利用效率和算法效率。第三种方法虽然有效地减少了计算复杂度,但是仍然受限于并行数据存取的速度,导致硬件利用率和算法的效率不高。
发明内容
为了解决现有技术中存在的受限于三角矩阵的行列向量数据存取的并行度不高,导致硬件利用率和矩阵运算算法效率不高的问题,本发明实施例提供自共轭矩阵的下三角部分存储装置和并行读取方法。
根据本发明实施例的一个方面,提供一种自共轭矩阵的下三角部分存储装置,包括:
存储模块选择电路,用于确定待存取的自共轭矩阵下三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的自共轭矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的自共轭矩阵下三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作;
其中,m为所述自共轭矩阵的下三角部分存储装置的硬件并行度。
根据本发明实施例的另一个方面,提供一种基于第一方面所提供的自共轭矩阵的下三角部分存储装置的并行读取方法,包括:
根据自共轭矩阵的共轭对称特性,将待读取的N阶自共轭矩阵的任一行或列元素转换为所述N阶自共轭矩阵下三角部分中所包含的N个元素;
利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
在所述取共轭模块中对经过混洗后的所述数据进行旁路操作和/或取共轭操作;
其中,N为正整数。
本发明实施例提出的一种自共轭矩阵的下三角部分存储装置和并行读取方法,只需要对自共轭矩阵的下三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复自共轭矩阵的任意行向量和列向量,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
附图说明
图1为根据本发明一实施例提供的自共轭矩阵的下三角部分存储装置的结构示意图;
图2为根据本发明另一实施例提供的基于自共轭矩阵的下三角部分存储装置的并行读取方法的流程示意图;
图3为根据本发明另一实施例提供的只保存下三角部分元素的自共轭矩阵按行读取的实现示意图;
图4为根据本发明另一实施例提供的只保存下三角部分元素的自共轭矩阵按列读取的实现示意图;
图5为根据本发明另一实施例提供的采用另一种存储地址计算公式的只保存下三角部分元素的自共轭矩阵按行读取的实现示意图;
图6为根据本发明另一实施例提供的只保存下三角部分元素的自共轭矩阵按行读取的实现示意图;
图7为根据本发明另一实施例提供的只保存下三角部分元素的自共轭矩阵按行读取的实现示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
为了能够并行读取自共轭矩阵的行列向量的全部元素,提高并行处理单元利用效率,需要开发并行无冲突存取机制,使数据存取的并行度尽可能的达到计算单元的硬件并行度,那么就可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
自共轭矩阵是相对其主对角线以复数共轭对称的矩阵。自共轭矩阵主对角线上的元素必须是实数,实对称阵是自共轭矩阵的特例。根据自共轭矩阵的复数共轭对称特性,有N阶自共轭矩阵的第i行第j列的元素的共轭与第j行第i列的元素相等,因此可以根据复数共轭对称特性,只存储自共轭矩阵的下三角部分元素,而上三角部分元素可以通过对与之对称的下三角部分元素进行取共轭而得到。
如图1所示,为本发明一实施例提供的一种自共轭矩阵的下三角部分存储装置的结构示意图,包括:存储模块选择电路101、地址生成电路102、并行的m个存储模块103、数据混洗模块104和取共轭模块105。
其中,存储模块选择电路101,用于计算待存取的自共轭矩阵下三角部分各元素对应的存储模块;
其功能实现方式包括但不限于:直接硬件计算自共轭矩阵下三角部分各元素对应的存储模块bank,通过硬件查表的方式确定自共轭矩阵下三角部分各元素对应的存储模块bank,通过软件计算存储模块bank并将计算结果通过指令传递给硬件。
地址生成电路102,用于计算所述待存取的自共轭矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;
其功能实现方式包括但不限于:直接硬件计算自共轭矩阵下三角部分各元素在其对应的存储模块bank中的逻辑地址addr;通过硬件查表的方式确定自共轭矩阵下三角部分各元素在其对应的存储模块bank中的逻辑地址addr,通过软件计算自共轭矩阵下三角部分各元素在其对应的存储模块bank中的逻辑地址addr并将计算结果通过指令传递给硬件。
并行的m个存储模块103,用于存储所述待存取的自共轭矩阵下三角部分各元素所对应的数据,其中,m为所述存储装置的硬件并行度;
值得说明的是,若要存储自共轭矩阵下三角部分的各元素,需要利用存储模块选择电路101和地址生成电路102确定各元素存储的具体位置,这个具体位置根据存储模块bank值和逻辑地址addr值共同唯一确定,称这个具体位置为存储单元,然后将待存储的自共轭矩阵下三角部分各元素存储到相应的存储单元。N阶自共轭矩阵的下三角元素的存储只需要(N+1)N/2(N为奇数)或(N+2)N/2(N为偶数)个存储单元。
自共轭矩阵的阶数N可以等于存储装置的硬件并行度m或者为存储装置的硬件并行度m的整数倍,即有N=k*m,k=1,2,3,…。当待存取的自共轭矩阵的阶数N等于硬件并行度m时,可以一次性地存取自共轭矩阵的一行或一列向量的全部元素。当N为m的整数倍(即k>1)时,由于每次最多只能并行存取m个元素,因此,自共轭矩阵的一个行向量或列向量需要分多次进行存取。
数据混洗模块104,用于对从所述存储模块中读取出的数据进行混洗操作,
数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
取共轭模块105,用于对经过混洗后的数据进行旁路操作和取共轭操作;
对经过混洗后的数据进行旁路操作和/或取共轭操作是指对经过混洗后的所述数据进行旁路操作和/或取共轭操作是指若是按行读取的,从存储模块中读出自共轭矩阵下三角部分的第i列元素和第i行元素,则对第i列元素进行取共轭操作,对i行元素进行旁路操作。若是按列读取数据,即从存储模块中读出自共轭矩阵下三角部分的第j列元素和第j行元素,则对第j行元素进行取共轭操作,对第j列元素进行旁路操作。
本发明实施例提出的自共轭矩阵的下三角部分存储装置,只需要对自共轭矩阵的下三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复自共轭矩阵的任意行向量和列向量,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述存储模块选择电路具体用于:
根据公式(1)分别计算所述待存取的自共轭矩阵下三角部分各元素对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别为所述待存取的自共轭矩阵下三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
公式(1)即为bank计算公式。
基于上述实施例,所述地址生成电路具体用于:
根据公式(2)分别计算所述待存取的自共轭矩阵下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵下三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
所述地址生成电路计算所述待存取的自共轭矩阵下三角部分各元素在其对应的存储模块中的逻辑地址的公式还可以为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵下三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
公式(2)和公式(3)即为addr计算公式。
在上述实施例的基础上,如图2所示,为本发明另一实施例提供的基于自共轭矩阵的下三角部分存储装置的并行读取方法的流程示意图,包括:
201、根据自共轭矩阵的共轭对称特性,将待读取的N阶自共轭矩阵的任一行或列元素转换为所述N阶自共轭矩阵下三角部分中所包含的N个元素;其中,N为正整数。
根据自共轭矩阵的复数共轭对称特性,有N阶自共轭矩阵的第i行第j列的元素的共轭与第j行第i列的元素相等,因此可以从只存储自共轭矩阵的下三角部分元素的存储装置中恢复上三角部分的元素,上三角部分元素通过对与之对称的下三角部分元素进行取共轭而得到。
若需要读取N阶自共轭矩阵的任一行或列,则根据共轭对称特性将该行或列元素中属于该自共轭矩阵上三角部分的元素转换为下三角部分元素,例如,若要并行取第j=3列{x03,x13,x23,x33,x43}五个元素,则将上三角部分元素{x03,x13,x23}转换为相对称的属于下三角部分的元素,即{x30,x31,x32},对下三角部分元素x30,x31,x32分别取共轭即可得到{x03,x13,x23}。这一步骤将待读取的N阶自共轭矩阵的任一行或列元素转换为N阶自共轭矩阵下三角部分中所包含的N个元素{x30,x31,x32,x33,x43}。
202、利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
利用存储模块选择电路确定所述N个元素各自对应的存储模块,即利用bank计算公式通过计算获得N个元素各自对应的存储模块bank;利用地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,即利用addr计算公式获得N个元素在各自对应的存储模块bank中的逻辑地址addr;然后根据bank和addr,找到N个元素各自对应的存储单元,并行读出所述N各元素所对应的数据。
203、在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
204、在所述取共轭模块中对经过混洗后的所述数据进行旁路操作和取共轭操作;
对经过混洗后的所述数据进行旁路操作和/或取共轭操作是指若是按行读取的,从存储模块中读出自共轭矩阵下三角部分的第i列元素和第i行元素,则对第i列元素进行取共轭操作,对i行元素进行旁路操作。例如,若要并行取第i=3行{x30,x31,x32,x33,x34}五个元素,那么,并行读取出的数据为{x30,x31,x32,x33,x43},其中对下三角部分的第i列元素{x43}进行取共轭操作,得到{x34}的值,对下三角部分的第i行元素{x30,x31,x32,x33}进行旁路操作。若是按列读取数据,即从存储模块中读出自共轭矩阵下三角部分的第j列元素和第j行元素,则对第j行元素进行取共轭操作,对第j列元素进行旁路操作。例如,若要并行取第j=3列{x03,x13,x23,x33,x43}五个元素,那么,并行读取出的数据为{x30,x31,x32,x33,x43},其中对下三角部分的第j行元素{x30,x31,x32}进行取共轭操作,得到{x03,x13,x23}的值,对下三角部分的第j列元素{x33,x43}进行旁路操作。
本发明实施例提出的基于自共轭矩阵的下三角部分存储装置的并行读取方法,支持从只保存下三角部分元素的自共轭矩阵中并行读取并恢复自共轭矩阵的任意行向量和列向量,能够充分利用SIMD硬件的并行计算单元,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
上式中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。通常,a的取值为零。
基于上述实施例,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
计算N个元素在各自对应的存储模块中的逻辑地址的步骤,还包括:
根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
基于上述实施例,当自共轭矩阵的阶数N等于硬件并行度m时,可以一次性地存取自共轭矩阵的一行或一列向量的全部元素;当自共轭矩阵的阶数N为m的整数倍时,由于每次最多只能并行存取m个元素,因此,自共轭矩阵的一个行向量或列向量需要分多次进行存取。
下面结合实例对本发明实施例所提供的并行读取方法作进一步解释。为了简化说明,存储模块选择电路和地址生成电路中的常量a和常量b的取值均为0。
如图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}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗,经过数据混洗操作后,对下三角部分中的第i行元素{x30,x31,x32,x33}进行旁路操作,对下三角部分中的第i列元素{x43}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数为奇数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵行向量的方法。
如图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}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗,经过数据混洗操作后,对下三角部分的第j行元素{x30,x31,x32}进行取共轭操作,对下三角部分的第j列元素{x33,x43}进行旁路操作。本发明实施例给出了自共轭矩阵的阶数为奇数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵列向量的方法。
如图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}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗,经过数据混洗操作后,对下三角部分中的第i行元素{x30,x31,x32,x33}进行旁路操作,对下三角部分中的第i列元素{x43}进行取共轭操作。本发明实施例给出了自共轭矩阵的存储装置采用另一地址计算公式时,矩阵阶数为奇数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵行向量的方法。
如图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}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的六个元素进行数据混洗,经过数据混洗操作后,对{x54}进行取共轭操作,对{x40,x41,x42,x43,x44}进行旁路操作。本发明实施例给出了自共轭矩阵的阶数为偶数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵行向量的方法。读取自共轭矩阵列向量的方法与前述实施例类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
如图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},实现无冲突读取。然后对读取出的六个元素进行数据混洗,经过数据混洗操作后,对{x54}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数N为存储装置的硬件并行度m的整数倍时,读取自共轭矩阵行向量的方法。读取自共轭矩阵列向量的方法类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
最后,本发明上述各实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
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为该元素对应的存储模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811315278.2A CN109614582B (zh) | 2018-11-06 | 2018-11-06 | 自共轭矩阵的下三角部分存储装置和并行读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811315278.2A CN109614582B (zh) | 2018-11-06 | 2018-11-06 | 自共轭矩阵的下三角部分存储装置和并行读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109614582A CN109614582A (zh) | 2019-04-12 |
CN109614582B true CN109614582B (zh) | 2020-08-11 |
Family
ID=66003020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811315278.2A Active CN109614582B (zh) | 2018-11-06 | 2018-11-06 | 自共轭矩阵的下三角部分存储装置和并行读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109614582B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111934766B (zh) * | 2020-06-15 | 2022-04-26 | 中山大学 | 一种可见光通信系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067025A (zh) * | 2013-01-01 | 2013-04-24 | 苏州威士达信息科技有限公司 | 基于块行循环的cmmb中ldpc编码器和编码方法 |
CN104981813A (zh) * | 2012-03-30 | 2015-10-14 | 爱迪德技术有限公司 | 使用动态数据识别编码来保护可访问的系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265445A1 (en) * | 2005-05-20 | 2006-11-23 | International Business Machines Corporation | Method and structure for improving processing efficiency in parallel processing machines for rectangular and triangular matrix routines |
CN101719810A (zh) * | 2009-11-13 | 2010-06-02 | 清华大学 | 一种并行化交织器的仿真生成方法 |
CN103927290A (zh) * | 2014-04-18 | 2014-07-16 | 南京大学 | 一种任意阶下三角复矩阵求逆运算方法 |
CN107590106B (zh) * | 2017-08-08 | 2020-07-28 | 北京中科睿芯科技有限公司 | 一种应用于对称矩阵与向量乘法的计算方法 |
CN109446478B (zh) * | 2018-10-30 | 2021-09-28 | 南京大学 | 一种基于迭代和可重构方式的复协方差矩阵计算系统 |
-
2018
- 2018-11-06 CN CN201811315278.2A patent/CN109614582B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104981813A (zh) * | 2012-03-30 | 2015-10-14 | 爱迪德技术有限公司 | 使用动态数据识别编码来保护可访问的系统 |
CN103067025A (zh) * | 2013-01-01 | 2013-04-24 | 苏州威士达信息科技有限公司 | 基于块行循环的cmmb中ldpc编码器和编码方法 |
Non-Patent Citations (1)
Title |
---|
基于线性结构的几种特殊矩阵的压缩存储;明廷堂;《电脑编程技巧与维护》;20140331;第9-17,30页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109614582A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Haj-Ali et al. | Efficient algorithms for in-memory fixed point multiplication using magic | |
Anderson et al. | Communication-avoiding QR decomposition for GPUs | |
CN108205519B (zh) | 矩阵乘加运算装置和方法、处理装置、芯片、电子装置 | |
JP5840994B2 (ja) | 行列演算装置 | |
US11194887B2 (en) | Data processing device and method, and digital signal processing device | |
CN109614149B (zh) | 对称矩阵的上三角部分存储装置和并行读取方法 | |
US9176929B2 (en) | Multi-granularity parallel FFT computation device | |
US9146696B2 (en) | Multi-granularity parallel storage system and storage | |
CN112464296A (zh) | 一种用于同态加密技术的大整数乘法器硬件电路 | |
US9171593B2 (en) | Multi-granularity parallel storage system | |
CN109614582B (zh) | 自共轭矩阵的下三角部分存储装置和并行读取方法 | |
CN109558567B (zh) | 自共轭矩阵的上三角部分存储装置和并行读取方法 | |
CN109635236B (zh) | 对称矩阵的下三角部分存储装置和并行读取方法 | |
Ballard et al. | Communication efficient Gaussian elimination with partial pivoting using a shape morphing data layout | |
US9268744B2 (en) | Parallel bit reversal devices and methods | |
CN109635235B (zh) | 一种自共轭矩阵的三角部分存储装置和并行读取方法 | |
US6640296B2 (en) | Data processing method and device for parallel stride access | |
WO2023065701A1 (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN109857982B (zh) | 对称矩阵的三角部分存储装置和并行读取方法 | |
CN112889072A (zh) | 用于降低功率消耗的系统、方法和装置 | |
Ma et al. | Accelerating SVD computation on FPGAs for DSP systems | |
Stathis et al. | A hierarchical sparse matrix storage format for vector processors | |
CN109669666A (zh) | 乘累加处理器 | |
US10884736B1 (en) | Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing | |
CN112149049A (zh) | 用于变换矩阵的装置和方法、数据处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210127 Address after: Room 908, block C, Kechuang headquarters building, No. 320, pubin Road, Jiangpu street, Nanjing area, Jiangsu Free Trade Zone, Nanjing City, Jiangsu Province, 211800 Patentee after: Jixin communication technology (Nanjing) Co.,Ltd. Address before: 570228 Hainan University, 58 Renmin Avenue, Meilan District, Haikou City, Hainan Province Patentee before: HAINAN University |