CN109558567A - 自共轭矩阵的上三角部分存储装置和并行读取方法 - Google Patents

自共轭矩阵的上三角部分存储装置和并行读取方法 Download PDF

Info

Publication number
CN109558567A
CN109558567A CN201811315346.5A CN201811315346A CN109558567A CN 109558567 A CN109558567 A CN 109558567A CN 201811315346 A CN201811315346 A CN 201811315346A CN 109558567 A CN109558567 A CN 109558567A
Authority
CN
China
Prior art keywords
memory module
adjoint matrix
self adjoint
triangular portions
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.)
Granted
Application number
CN201811315346.5A
Other languages
English (en)
Other versions
CN109558567B (zh
Inventor
刘大可
刘劭晗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jixin communication technology (Nanjing) Co.,Ltd.
Original Assignee
Hainan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hainan University filed Critical Hainan University
Priority to CN201811315346.5A priority Critical patent/CN109558567B/zh
Publication of CN109558567A publication Critical patent/CN109558567A/zh
Application granted granted Critical
Publication of CN109558567B publication Critical patent/CN109558567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix 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(Basic LinearAlgebra Subprograms)库中的自共轭矩阵乘法算法,从算法的最内层循环进行循环展开,并映射到硬件的并行处理单元上;第三种方法是将自共轭矩阵分解为上三角矩阵和根据共轭对称特性生成的下三角矩阵,分别进行矩阵乘法,再将结果矩阵相加。
以上方法均可以应用于自共轭矩阵运算。但是第一种方法将上(下)三角矩阵进行数据扩展成为自共轭矩阵的过程需要额外的数据搬移和时间开销。第二种方法通过对原始算法进行并行优化实现了矩阵运算,但是由于最内层循环的循环次数可变且通常较小,导致数据存取的并行度不高,从而降低了硬件利用效率和算法效率。第三种方法虽然有效地减少了计算复杂度,但是仍然受限于并行数据存取的速度,导致硬件利用率和算法的效率不高。
发明内容
为了解决现有技术中存在的受限于三角矩阵的行列向量数据存取的并行度不高,导致硬件利用率和矩阵运算算法效率不高的问题,本发明实施例提供自共轭矩阵的上三角部分存储装置和并行读取方法。
根据本发明实施例的一个方面,提供一种自共轭矩阵的上三角部分存储装置,包括:
存储模块选择电路,用于确定待存取的自共轭矩阵上三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的自共轭矩阵上三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的自共轭矩阵上三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作;
其中,m为所述自共轭矩阵的上三角部分存储装置的硬件并行度。
根据本发明实施例的另一个方面,提供一种基于第一方面所提供的自共轭矩阵的上三角部分存储装置的并行读取方法,包括:
根据自共轭矩阵的共轭对称特性,将待读取的N阶自共轭矩阵的任一行或列元素转换为所述N阶自共轭矩阵上三角部分中所包含的N个元素;
利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
在所述取共轭模块中对经过混洗后的所述数据进行旁路操作和取共轭操作;
其中,N为正整数。
本发明实施例提出的自共轭矩阵的上三角部分存储装置和并行读取方法,只需要对自共轭矩阵的上三角部分进行存储,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复自共轭矩阵的任意行向量和列向量,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
附图说明
图1为根据本发明一实施例提供的自共轭矩阵的上三角部分存储装置的结构示意图;
图2为根据本发明另一实施例提供的基于自共轭矩阵的上三角部分存储装置的并行读取方法的流程示意图;
图3为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图;
图4为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按列读取的实现示意图;
图5为根据本发明另一实施例提供的采用另一种存储地址计算公式的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图;
图6为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图;
图7为根据本发明另一实施例提供的只保存上三角部分元素的自共轭矩阵按行读取的实现示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
为了能够并行读取自共轭矩阵的行列向量的全部元素,提高并行处理单元利用效率,需要开发并行无冲突存取机制,使数据存取的并行度尽可能的达到计算单元的硬件并行度,那么就可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
如图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等于硬件并行度m时,可以一次性地存取自共轭矩阵的一行或一列向量的全部元素;当N为m的整数倍时,由于每次最多只能并行存取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阶自共轭矩阵X的第i行第j列的元素的共轭与第j行第i列的元素相等,因此可以根据复数共轭对称特性,只存储自共轭矩阵的上三角部分元素,而下三角部分元素可以通过对与之对称的上三角部分元素进行取共轭而得到。若需要读取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}。
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}五个元素,那么,并行读取出的数据为x03,x13,x23,x33,x34,其中对第i列元素x03,x13,x23进行取共轭操作,得到x30,x31,x32的值,对第i行元素x33,x34进行旁路操作。若是按列读取数据,即从存储模块中读出自共轭矩阵上三角部分的第j列元素和第j行元素,则对第j行元素进行取共轭操作,对第j列元素进行旁路操作。例如,若要并行取第j=3列{x03,x13,x23,x33,x43}五个元素,那么,并行读取出的数据为{x03,x13,x23,x33,x34},其中对第j行元素{x34}进行取共轭操作,得到{x43}的值,对第j列元素{x03,x13,x23,x33}进行旁路操作。
本发明实施例提出的基于自共轭矩阵的上三角部分存储装置的并行读取方法,支持从只保存自共轭矩阵上三角部分元素的存储装置中并行读取并恢复自共轭矩阵的任意行向量和列向量,能够充分利用SIMD硬件的并行计算单元,从而可以将自共轭矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
上式中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。通常,a的取值为零。
基于上述实施例,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。通常,b的取值也为零。
计算N个元素在各自对应的存储模块中的逻辑地址的步骤,还包括:
根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
基于上述实施例,当自共轭矩阵的阶数N等于存储装置的硬件并行度m时,可以一次性读取待读取的N阶自共轭矩阵的任一行或列元素。当自共轭矩阵的阶数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)示出自共轭矩阵行向量在其上三角部分的投影,可以根据自共轭矩阵的复数共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x03,x13,x23,x33,x34}五个元素。根据bank和addr的计算公式,如图3(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x03,x13,x23,x33,x34}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗,经过数据混洗操作后,对{x03,x13,x23}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数为奇数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵行向量的方法。
如图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)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x03,x13,x23,x33,x34}五个元素。根据bank和addr的计算公式,如图4(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x03,x13,x23,x33,x34}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗,经过数据混洗操作后,对{x34}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数为奇数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵列向量的方法。
如图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)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x03,x13,x23,x33,x34}五个元素。根据bank和addr的计算公式,如图5(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x03,x13,x23,x33,x34}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗,经过数据混洗操作后,对{x03,x13,x23}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数为奇数,且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵列向量的方法。
如图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)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x04,x14,x24,x34,x44,x45}六个元素。根据bank和addr的计算公式,如图6(c)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的六个数据{x04,x14,x24,x34,x44,x45}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的六个元素进行数据混洗,经过数据混洗操作后,对{x04,x14,x24,x34}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数为偶数且与存储装置的硬件并行度相等的情况下,读取自共轭矩阵行向量的方法。读取自共轭矩阵列向量的方法与前述实施例类似,在此不再赘述。也可以采用公式(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)所示,可以根据自共轭矩阵的共轭对称特性,将其转换为取自共轭矩阵上三角部分中的{x04,x14,x24,x34,x44,x45}六个元素。根据bank和addr的计算公式,如图7(c)和图7(d)所示,将自共轭矩阵的上三角部分元素映射到所述存储模块中。可以看出,由于只有m=3个并行的存储模块,一个行向量的6个数据需要分两次进行读取。数据{x04,x14,x24}分别存储在不同的存储模块中,而{x34,x44,x45}存储在不同的存储模块中,可以第一次首先读取{x04,x14,x24},第二次再读取{x34,x44,x45},实现无冲突读取。然后对读取出的六个元素进行数据混洗,经过数据混洗操作后,对{x04,x14,x24,x34}进行取共轭操作。本发明实施例给出了自共轭矩阵的阶数N为存储装置的硬件并行度m的整数倍时,读取自共轭矩阵行向量的方法。读取自共轭矩阵列向量的方法类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
最后,本发明上述各实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种自共轭矩阵的上三角部分存储装置,其特征在于,包括:
存储模块选择电路,用于选择待存取的自共轭矩阵上三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的自共轭矩阵上三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的自共轭矩阵上三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
取共轭模块,用于对经过混洗后的数据进行旁路操作和取共轭操作;
其中,m为所述自共轭矩阵的上三角部分存储装置的硬件并行度。
2.根据权利要求1所述的装置,其特征在于,所述存储模块选择电路具体用于:
根据公式(1)计算所述待存取的自共轭矩阵上三角部分各元素对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别为所述待存取的自共轭矩阵上三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
3.根据权利要求1所述的装置,其特征在于,所述地址生成电路具体用于:
根据公式(2)分别计算所述待存取的自共轭矩阵上三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵上三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
4.根据权利要求1所述的装置,其特征在于,所述地址生成电路具体用于:
根据公式(3)分别计算所述待存取的自共轭矩阵上三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(3)为:
其中,N为所述待存取的自共轭矩阵的阶数,i,j分别为所述待存取的自共轭矩阵上三角部分任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
5.根据权利要求1所述的装置,其特征在于,所述待存取的自共轭矩阵的阶数等于所述自共轭矩阵的上三角部分存储装置的硬件并行度m或为所述自共轭矩阵的上三角部分存储装置的硬件并行度m的整数倍。
6.一种基于权利要求1-5任一所述自共轭矩阵的上三角部分存储装置的并行读取方法,其特征在于,包括:
根据自共轭矩阵的复数共轭对称特性,将待读取的N阶自共轭矩阵的任一行或列元素转换为所述N阶自共轭矩阵上三角部分中所包含的N个元素;
利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
在所述取共轭模块中对经过混洗后的所述数据进行旁路操作和取共轭操作;
其中,N为正整数。
7.根据权利要求6所述的方法,其特征在于,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
8.根据权利要求6所述的方法,其特征在于,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
9.根据权利要求6所述的方法,其特征在于,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号为向上取整操作,符号为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
10.根据权利要求6所述的方法,其特征在于,所述待读取的自共轭矩阵的阶数N等于所述自共轭矩阵的上三角部分存储装置的硬件并行度m或为所述自共轭矩阵的上三角部分存储装置的硬件并行度m的整数倍。
CN201811315346.5A 2018-11-06 2018-11-06 自共轭矩阵的上三角部分存储装置和并行读取方法 Active CN109558567B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811315346.5A CN109558567B (zh) 2018-11-06 2018-11-06 自共轭矩阵的上三角部分存储装置和并行读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811315346.5A CN109558567B (zh) 2018-11-06 2018-11-06 自共轭矩阵的上三角部分存储装置和并行读取方法

Publications (2)

Publication Number Publication Date
CN109558567A true CN109558567A (zh) 2019-04-02
CN109558567B CN109558567B (zh) 2020-08-11

Family

ID=65865957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811315346.5A Active CN109558567B (zh) 2018-11-06 2018-11-06 自共轭矩阵的上三角部分存储装置和并行读取方法

Country Status (1)

Country Link
CN (1) CN109558567B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948758A (zh) * 2021-02-24 2021-06-11 上海商汤智能科技有限公司 数据处理方法、装置以及芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440121A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN104298649A (zh) * 2014-09-24 2015-01-21 江苏中兴微通信息科技有限公司 一种低复杂度的快速并行矩阵求逆方法
CN106021188A (zh) * 2016-05-11 2016-10-12 广州广电运通金融电子股份有限公司 浮点矩阵求逆的并行硬件架构和并行计算方法
CN107590106A (zh) * 2017-08-08 2018-01-16 北京中科睿芯科技有限公司 一种应用于对称矩阵与向量乘法的计算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440121A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN104298649A (zh) * 2014-09-24 2015-01-21 江苏中兴微通信息科技有限公司 一种低复杂度的快速并行矩阵求逆方法
CN106021188A (zh) * 2016-05-11 2016-10-12 广州广电运通金融电子股份有限公司 浮点矩阵求逆的并行硬件架构和并行计算方法
CN107590106A (zh) * 2017-08-08 2018-01-16 北京中科睿芯科技有限公司 一种应用于对称矩阵与向量乘法的计算方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
明廷堂: "基于线性结构的几种特殊矩阵的压缩存储", 《电脑编程技巧与维护》 *
郑伟民等: "《计算机系统结构(第二版)》", 31 July 1999, 清华大学出版社 *
韩斌: "并行存储器无冲突访问探讨", 《湖北广播电视大学学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948758A (zh) * 2021-02-24 2021-06-11 上海商汤智能科技有限公司 数据处理方法、装置以及芯片

Also Published As

Publication number Publication date
CN109558567B (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
JP6736646B2 (ja) 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法
Anderson et al. General purpose molecular dynamics simulations fully implemented on graphics processing units
Peterka et al. A configurable algorithm for parallel image-compositing applications
WO2020132593A1 (en) Neural network processor
US20190347071A1 (en) Sorting for data-parallel computing devices
US20170344369A1 (en) Method and apparatus for memory access
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN111859277B (zh) 一种稀疏矩阵向量乘法向量化实现方法
CN109614149A (zh) 对称矩阵的上三角部分存储装置和并行读取方法
EP3295300A1 (en) System and method for determining concurrency factors for dispatch size of parallel processor kernels
CN109558567A (zh) 自共轭矩阵的上三角部分存储装置和并行读取方法
CN109614582A (zh) 自共轭矩阵的下三角部分存储装置和并行读取方法
Ballard et al. Communication efficient Gaussian elimination with partial pivoting using a shape morphing data layout
CN109635236A (zh) 对称矩阵的下三角部分存储装置和并行读取方法
CN109635235A (zh) 一种自共轭矩阵的三角部分存储装置和并行读取方法
CN102411557A (zh) 多粒度并行fft计算装置
CN109857982A (zh) 对称矩阵的三角部分存储装置和并行读取方法
CN115829000A (zh) 数据处理方法、装置、电子设备及存储介质
Giles Jacobi iteration for a Laplace discretisation on a 3D structured grid
CN113626080B (zh) 数据处理装置以及相关产品
CN113890508A (zh) 一种批处理fir算法的硬件实现方法和硬件系统
Egecioglu et al. Givens and Householder reductions for linear least squares on a cluster of workstations
CN113642722A (zh) 用于卷积计算的芯片及其控制方法、电子装置
CN113626079A (zh) 数据处理方法及装置以及相关产品
CN113626083B (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: 20210126

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