CN109635235B - 一种自共轭矩阵的三角部分存储装置和并行读取方法 - Google Patents
一种自共轭矩阵的三角部分存储装置和并行读取方法 Download PDFInfo
- Publication number
- CN109635235B CN109635235B CN201811314439.6A CN201811314439A CN109635235B CN 109635235 B CN109635235 B CN 109635235B CN 201811314439 A CN201811314439 A CN 201811314439A CN 109635235 B CN109635235 B CN 109635235B
- Authority
- CN
- China
- Prior art keywords
- self
- conjugate
- conjugate matrix
- elements
- matrix
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供自共轭矩阵的三角部分存储装置和并行读取方法,所述装置包括:存储模块选择电路,用于选择待存取的自共轭矩阵三角部分各元素对应的存储模块;地址生成电路,用于计算所述待存取的自共轭矩阵三角部分各元素在其对应的存储模块中的逻辑地址;并行的m个存储模块,用于存储所述待存取的自共轭矩阵三角部分各元素所对应的数据;数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作。本发明实施例只需对自共轭矩阵的三角部分进行存储,并支持并行读取并恢复自共轭矩阵的任意行向量和列向量,能充分利用硬件的并行计算单元,提高矩阵运算算法效率。
Description
技术领域
本发明实施例涉及矩阵运算技术领域,更具体地,涉及自共轭矩阵的三角部分存储装置和并行读取方法。
背景技术
自共轭矩阵(Hermitian Matrix)是共轭对称的方阵,在数字信号处理领域有着广泛的使用。例如,许多信号检测算法需要利用实数自相关矩阵得到信号的二阶统计特征。自共轭矩阵的求解复杂度随着矩阵阶数增加而平方增加,为了减小计算复杂度,可以根据自共轭矩阵的复数共轭对称特性,只计算自共轭矩阵的上(下)三角部分,自共轭矩阵的下(上)三角部分可以根据复数共轭对称特性由上(下)三角部分求出。并且如果能够合理的安排自共轭矩阵元素在存储器中的位置,使得在不影响数据并行存取需求的条件下,存储器只需要保存上(下)三角部分元素的值,那么就可以节省接近一半的数据存储空间。
但是,自共轭矩阵运算,如自共轭矩阵乘法和自共轭矩阵与向量乘,通常需要并行读取自共轭矩阵的行向量或列向量。这些行列向量通常既包含下三角部分矩阵的元素又包含上三角部分矩阵的元素。对于只保存了上(下)三角部分元素的自共轭矩阵,由于上(下)三角矩阵无法包含需要读取的行列向量的全部元素,需要根据复数共轭对称特性对矩阵运算进行特殊的优化才能完成运算功能。现有技术给出了多种矩阵运算优化的方案,具体包括:中国专利CN107590106A公开了一种应用于对称矩阵与向量乘法的计算方法,利用矩阵分块和对角矩阵数据扩展的方法进行矩阵向量乘法;第二种方法是根据BLAS(BasicLinear Algebra Subprograms)库中的自共轭矩阵乘法算法,从算法的最内层循环进行循环展开,并映射到硬件的并行处理单元上;第三种方法是将自共轭矩阵分解为上三角矩阵和根据共轭对称特性生成的下三角矩阵,分别进行矩阵乘法,再将结果矩阵相加。
以上方法均可以应用于自共轭矩阵运算。但是应用第一种方法将上(下)三角矩阵进行数据扩展成为自共轭矩阵的过程需要额外的数据搬移和时间开销。第二种方法通过对原始算法进行并行优化实现了矩阵运算,但是由于最内层循环的循环次数可变且通常较小,导致数据存取的并行度不高,从而降低了硬件利用效率和算法效率。第三种方法虽然有效地减少了计算复杂度,但是仍然受限于并行数据存取的速度,导致硬件利用率和算法的效率不高。
发明内容
为了解决现有技术中存在的受限于三角矩阵的行列向量数据存取的并行度不高,导致硬件利用率和矩阵运算算法效率不高的问题,本发明实施例提供自共轭矩阵的三角部分存储装置和并行读取方法。
根据本发明实施例的一个方面,提供一种自共轭矩阵的三角部分存储装置,包括:
存储模块选择电路,用于选择待存取的自共轭矩阵上三角部分或下三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的自共轭矩阵上三角部分或下三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作;
其中,m为所述自共轭矩阵的三角部分存储装置的硬件并行度。
根据本发明实施例的另一个方面,提供一种基于第一方面所提供的自共轭矩阵的三角部分存储装置的并行读取方法,包括:
根据自共轭矩阵的复数共轭对称特性,将待读取的N阶自共轭矩阵的任一行或列元素转换为所述N阶自共轭矩阵上三角部分或下三角部分中所包含的N个元素;
利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
在所述取共轭模块中对经过混洗后的所述数据进行旁路操作和取共轭操作;
其中,N为正整数。
本发明实施例提出的自共轭矩阵的三角部分存储装置和并行读取方法,只需要对自共轭矩阵的三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复自共轭矩阵的任意行向量和列向量,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
附图说明
图1为根据本发明一实施例提供的自共轭矩阵的三角部分存储装置的结构示意图;
图2为根据本发明另一实施例提供的基于自共轭矩阵的三角部分存储装置的并行读取方法的流程示意图;
图3为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图;
图4为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按列读取的实现示意图;
图5为根据本发明另一实施例提供的只保存下三角部分元素的自共轭矩阵按行读取的实现示意图;
图6为根据本发明另一实施例提供的只保存下三角部分元素的自共轭矩阵按列读取的实现示意图;
图7为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图;
图8为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图;
图9为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
为了能够并行读取自共轭矩阵的行列向量的全部元素,提高并行处理单元利用效率,需要开发并行无冲突存取机制,使数据存取的并行度尽可能的达到计算单元的硬件并行度,那么就可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
自共轭矩阵是相对其主对角线以复数共轭对称的矩阵。自共轭矩阵主对角线上的元素必须是实数,实对称阵是自共轭矩阵的特例。根据自共轭矩阵的复数共轭对称特性,有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时,可以一次性地存取自共轭矩阵的一行或一列向量的全部元素;当待存取的自共轭矩阵的阶数N大于硬件并行度m时,每次最多可以存取m个元素。
在确定存储装置的硬件并行度时,可以参考待存取的自共轭矩阵的阶数,在待存取的自共轭矩阵的阶数N等于硬件并行度m或者是m的整数倍时,存储装置的存储单元利用效率最高。
数据混洗模块104,用于对从所述存储模块中读取出的数据进行混洗操作,
数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
取共轭模块105,用于对经过混洗后的数据进行旁路操作和取共轭操作;
具体地,对经过混洗后的所述数据进行旁路操作和/或取共轭操作是指:若按行读取数据,即从存储模块中读出自共轭矩阵上(下)三角部分的第i行元素和第i列元素,则对第i列元素进行取共轭操作,对i行元素进行旁路操作;若按列读取数据,即从存储模块中读出自共轭矩阵上(下)三角部分的第j列元素和第j行元素,则对第j行元素进行取共轭操作,对第j列元素进行旁路操作。
本发明实施例提出的自共轭矩阵的三角部分存储装置,只需要对自共轭矩阵的三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复自共轭矩阵的任意行向量和列向量,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述存储模块选择电路101具体用于:
根据公式(1)分别计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别为所述待存取的自共轭矩阵上三角部分或下三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
公式(1)即为bank计算公式。
基于上述实施例,所述地址生成电路102具体用于:
根据公式(2)分别计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
所述地址生成电路102计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址的公式还可以为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
公式(2)和公式(3)即为addr计算公式。
在上述实施例的基础上,如图2所示,为本发明另一实施例提供的基于自共轭矩阵的三角部分存储装置的并行读取方法的流程示意图,包括:
201、根据自共轭矩阵的共轭对称特性,将待读取的N阶自共轭矩阵的任一行或列元素转换为所述N阶自共轭矩阵上三角部分或下三角部分中所包含的N个元素;其中,N为正整数。
根据自共轭矩阵的复数共轭对称特性,有N阶自共轭矩阵的第i行第j列的元素的共轭与第j行第i列的元素相等,因此可以从只存储自共轭矩阵的上(下)三角部分元素的存储装置中恢复下(上)三角部分的元素,下(上)三角部分元素通过对与之对称的上(下)三角部分元素进行取共轭而得到。
对于只保存上三角部分元素的N阶自共轭矩阵,若需要读取该N阶自共轭矩阵的任一行或列,则根据共轭对称特性将该行或列元素中属于该自共轭矩阵下三角部分的元素转换为上三角部分元素。例如,若要并行取第i=3行{x30,x31,x32,x33,x34}五个元素,则将下三角部分元素{x30,x31,x32}转换为相对称的属于上三角部分的元素,即{x03,x13,x23},对{x03,x13,x23}取共轭即可得到{x30,x31,x32}。这一步骤将待读取的N阶自共轭矩阵的任一行或列元素转换为N阶自共轭矩阵上三角部分中所包含的N个元素{x03,x13,x23,x33,x34}。
对于只保存下三角部分元素的N阶自共轭矩阵,若需要读取该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个元素所对应的数据的步骤具体为:
若所述待读取的自共轭矩阵的阶数N大于所述自共轭矩阵的三角部分存储装置的硬件并行度m,每次最多从存储模块中并行读取所述N个元素中的m个元素所对应的数据;或者,
若所述待读取的自共轭矩阵的阶数N小于等于所述自共轭矩阵的三角部分存储装置的硬件并行度m,一次性从存储模块中并行读取所述N个元素所对应的数据。
具体地,当自共轭矩阵的阶数N大于存储装置的硬件并行度m时,一次最多只能从存储模块中并行读取m个元素所对应的数据。特别地,当自共轭矩阵的阶数N为m的整数倍时,由于每次最多只能并行读取m个元素,因此,自共轭矩阵的一个行向量或列向量需要分多次进行读取。
若所述待读取的自共轭矩阵的阶数N小于等于所述自共轭矩阵的三角部分存储装置的硬件并行度m,由于可以一次性最多读取m个数据,故可从存储模块中一次性地并行读取所述N个元素所对应的数据。
下面结合实例对本发明实施例所提供的并行读取方法作进一步解释。为了简化说明,存储模块选择电路和地址生成电路中的常量a和常量b的取值均为0。
如图3所示,为本发明一实施例只保存上三角部分元素的自共轭矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第i=2行,如图3(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图3(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素,然后对{x02,x12}进行取共轭操作。根据bank和addr的计算公式,如图3(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了自共轭矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存上三角部分元素的自共轭矩阵行向量的读取方法。
如图4所示,为本发明一实施例只保存上三角部分元素的自共轭矩阵按列读取的实现示意图(N=5,m=5)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第j=2列,如图4(a)所示,即为并行取{x02,x12,x22,x32,x42}五个元素。如图4(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素,然后对{x23,x24}进行取共轭操作。根据bank和addr的计算公式,如图4(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了自共轭矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存上三角部分元素的自共轭矩阵列向量的读取方法。
如图5所示,为本发明一实施例只保存下三角部分元素的自共轭矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第i=2行,如图5(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图5(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵下三角部分中的{x20,x21,x22,x32,x42}五个元素,然后对{x32,x42}进行取共轭操作。根据bank和addr的计算公式,如图5(c)所示,将自共轭矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x20,x21,x22,x32,x42}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了自共轭矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存下三角部分元素的自共轭矩阵行向量的读取方法。
如图6所示,为本发明一实施例只保存下三角部分元素的自共轭矩阵按列读取的实现示意图(N=5,m=5)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第j=2列,如图6(a)所示,即为并行取{x02,x12,x22,x32,x42}五个元素。如图6(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵下三角部分中的{x20,x21,x22,x32,x42}五个元素,然后对{x20,x21}进行取共轭操作。根据bank和addr的计算公式,如图6(c)所示,将自共轭矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x20,x21,x22,x32,x42}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了自共轭矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存下三角部分元素的自共轭矩阵列向量的读取方法。
如图7所示,为本发明一实施例采用公式(3)计算addr时只保存下三角部分元素的自共轭矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(3)可得数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第i=2行,如图7(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图7(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素,然后对{x02,x12}进行取共轭操作。根据bank和addr的计算公式,如图7(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了自共轭矩阵的存储装置采用另一存储地址计算公式(3)时,自共轭矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存上三角部分元素的自共轭矩阵行向量的读取方法。自共轭矩阵的存储装置采用另一存储地址计算公式(3)时,只保存上三角部分元素的自共轭矩阵列向量的读取方法,只保存下三角部分元素的自共轭矩阵行向量的读取方法,只保存下三角部分元素的自共轭矩阵列向量的读取方法,与上述实施例中自共轭矩阵的存储装置采用公式(2)计算addr地址的方法类似,在此不再赘述。
如图8所示,为本发明一实施例只保存上三角部分元素的自共轭矩阵按行读取的实现示意图(N=5,m=4)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=4。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第i=2行,如图8(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图8(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素,然后对{x02,x12}进行取共轭操作。根据bank和addr的计算公式,如图8(c)和图8(d)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,由于只有m=4个并行的存储模块,一个行向量的5个数据需要分两次进行读取。数据{x02,x12,x22,x23}分别存储在不同的存储模块中,而{x24}与{x02}存储在同一个存储模块中,可以第一次首先读取{x02,x12,x22,x23},第二次再读取{x24},实现无冲突读取。本发明实施例给出了自共轭矩阵的阶数大于存储装置的硬件并行度的情况下,只保存上三角部分元素的自共轭矩阵行向量的读取方法。
如图9所示,为本发明一实施例只保存上三角部分元素的自共轭矩阵按行读取的实现示意图(N=5,m=6)。在本实施例中,自共轭矩阵的三角部分存储装置的硬件并行度m=6。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为对5阶自共轭矩阵取第i=2行,如图9(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图9(b)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素,然后对{x02,x12}进行取共轭操作。根据bank和addr的计算公式,如图9(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了自共轭矩阵的阶数小于存储装置的硬件并行度的情况下,只保存上三角部分元素的自共轭矩阵行向量的读取方法。
最后,本发明上述各实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种自共轭矩阵的三角部分存储装置,其特征在于,包括:
存储模块选择电路,用于选择待存取的自共轭矩阵上三角部分或下三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的自共轭矩阵上三角部分或下三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作;
其中,m为所述自共轭矩阵的三角部分存储装置的硬件并行度;
其中,所述地址生成电路具体用于:
根据公式(2)分别计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址;
或者,所述地址生成电路具体用于:
根据公式(3)分别计算所述待存取的自共轭矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(3)为:
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)为:
4.根据权利要求3所述的方法,其特征在于,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
5.根据权利要求3所述的方法,其特征在于,所述根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据的步骤具体为:
若所述待读取的自共轭矩阵的阶数N大于所述自共轭矩阵的三角部分存储装置的硬件并行度m,每次最多从存储模块中并行读取所述N个元素中的m个元素所对应的数据;或者,
若所述待读取的自共轭矩阵的阶数N小于等于所述自共轭矩阵的三角部分存储装置的硬件并行度m,一次性从存储模块中并行读取所述N个元素所对应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811314439.6A CN109635235B (zh) | 2018-11-06 | 2018-11-06 | 一种自共轭矩阵的三角部分存储装置和并行读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811314439.6A CN109635235B (zh) | 2018-11-06 | 2018-11-06 | 一种自共轭矩阵的三角部分存储装置和并行读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109635235A CN109635235A (zh) | 2019-04-16 |
CN109635235B true CN109635235B (zh) | 2020-09-25 |
Family
ID=66067393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811314439.6A Active CN109635235B (zh) | 2018-11-06 | 2018-11-06 | 一种自共轭矩阵的三角部分存储装置和并行读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109635235B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298649A (zh) * | 2014-09-24 | 2015-01-21 | 江苏中兴微通信息科技有限公司 | 一种低复杂度的快速并行矩阵求逆方法 |
CN107590106A (zh) * | 2017-08-08 | 2018-01-16 | 北京中科睿芯科技有限公司 | 一种应用于对称矩阵与向量乘法的计算方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006085619A (ja) * | 2004-09-17 | 2006-03-30 | Fujitsu Ltd | 帯係数行列を持つ連立1次方程式の解法プログラム |
CN102541749B (zh) * | 2011-12-31 | 2014-09-17 | 中国科学院自动化研究所 | 多粒度并行存储系统 |
JP2014035620A (ja) * | 2012-08-08 | 2014-02-24 | International Business Maschines Corporation | 業務要素に関する情報を提供する装置及び方法 |
CN104699624B (zh) * | 2015-03-26 | 2018-01-23 | 中国人民解放军国防科学技术大学 | 面向fft并行计算的无冲突存储访问方法 |
CN107748723B (zh) * | 2017-09-28 | 2020-03-20 | 中国人民解放军国防科技大学 | 支持无冲突跨步按块访问的存储方法及访存装置 |
-
2018
- 2018-11-06 CN CN201811314439.6A patent/CN109635235B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298649A (zh) * | 2014-09-24 | 2015-01-21 | 江苏中兴微通信息科技有限公司 | 一种低复杂度的快速并行矩阵求逆方法 |
CN107590106A (zh) * | 2017-08-08 | 2018-01-16 | 北京中科睿芯科技有限公司 | 一种应用于对称矩阵与向量乘法的计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109635235A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Haj-Ali et al. | Efficient algorithms for in-memory fixed point multiplication using magic | |
CN108205519B (zh) | 矩阵乘加运算装置和方法、处理装置、芯片、电子装置 | |
US9965386B2 (en) | Method for generating row transposed architecture based on two-dimensional FFT processor | |
CN107748723B (zh) | 支持无冲突跨步按块访问的存储方法及访存装置 | |
US11194887B2 (en) | Data processing device and method, and digital signal processing device | |
JP2013205973A (ja) | 行列演算装置 | |
US9146696B2 (en) | Multi-granularity parallel storage system and storage | |
CN109614149B (zh) | 对称矩阵的上三角部分存储装置和并行读取方法 | |
WO2023065701A1 (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
US20140344515A1 (en) | Multi-granularity parallel storage system | |
CN109614582B (zh) | 自共轭矩阵的下三角部分存储装置和并行读取方法 | |
CN109558567B (zh) | 自共轭矩阵的上三角部分存储装置和并行读取方法 | |
WO1992022873A1 (en) | High performance array processor | |
CN109635236B (zh) | 对称矩阵的下三角部分存储装置和并行读取方法 | |
CN109635235B (zh) | 一种自共轭矩阵的三角部分存储装置和并行读取方法 | |
US6640296B2 (en) | Data processing method and device for parallel stride access | |
CN109857982B (zh) | 对称矩阵的三角部分存储装置和并行读取方法 | |
CN109672524B (zh) | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 | |
Schwiegelshohn | A shortperiodic two-dimensional systolic sorting algorithm | |
WO2013097235A1 (zh) | 并行位反序装置和方法 | |
CN109669666A (zh) | 乘累加处理器 | |
WO2020059156A1 (en) | Data processing system, method, and program | |
CN112445752B (zh) | 一种基于乔列斯基分解的矩阵求逆装置 | |
CN114741352B (zh) | 一种基于fpga的双线性插值重采样实现方法及装置 | |
CN118210755A (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: 20210129 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 |