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

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

Info

Publication number
CN109857982B
CN109857982B CN201811315320.0A CN201811315320A CN109857982B CN 109857982 B CN109857982 B CN 109857982B CN 201811315320 A CN201811315320 A CN 201811315320A CN 109857982 B CN109857982 B CN 109857982B
Authority
CN
China
Prior art keywords
symmetric matrix
triangular part
elements
matrix
accessed
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
Application number
CN201811315320.0A
Other languages
English (en)
Other versions
CN109857982A (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
Polar Core Communication Technology Xi'an 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 CN201811315320.0A priority Critical patent/CN109857982B/zh
Publication of CN109857982A publication Critical patent/CN109857982A/zh
Application granted granted Critical
Publication of CN109857982B publication Critical patent/CN109857982B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

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

Description

对称矩阵的三角部分存储装置和并行读取方法
技术领域
本发明实施例涉及矩阵运算技术领域,更具体地,涉及对称矩阵的三角部分存储装置和并行读取方法。
背景技术
对称矩阵(Symmetric Matrix)是对称的方阵,在数字信号处理领域有着广泛的使用。例如,许多信号检测算法需要利用实数自相关矩阵得到信号的二阶统计特征。对称矩阵的求解复杂度随着矩阵阶数增加而平方增加,为了减小计算复杂度,可以根据对称矩阵的对称特性,只计算对称矩阵的上(下)三角部分,对称矩阵的下(上)三角部分可以根据对称特性由上(下)三角部分求出。并且如果能够合理的安排对称矩阵元素在存储器中的位置,使得在不影响数据并行存取需求的条件下,存储器只需要保存上(下)三角部分元素的值,那么就可以节省接近一半的数据存储空间。
但是,对称矩阵运算,如对称矩阵乘法和对称矩阵与向量乘,通常需要并行读取对称矩阵的行向量或列向量。这些行列向量通常既包含上三角部分矩阵的元素又包含下三角部分矩阵的元素。对于只保存了上(下)三角部分元素的对称矩阵,由于上(下)三角矩阵无法包含需要读取的行列向量的全部元素,需要根据对称特性对矩阵运算进行特殊的优化才能完成运算功能。现有技术给出了多种矩阵运算优化的方案,具体包括:中国专利CN107590106A公开了一种应用于对称矩阵与向量乘法的计算方法,利用矩阵分块和对角矩阵数据扩展的方法进行矩阵向量乘法;第二种方法是根据BLAS(Basic Linear AlgebraSubprograms)库中的对称矩阵乘法算法,从算法的最内层循环进行循环展开,并映射到硬件的并行处理单元上;第三种方法是将对称矩阵分解为上三角矩阵和根据对称特性生成的下三角矩阵,分别进行矩阵乘法,再将结果矩阵相加。
以上方法均可以应用于对称矩阵运算。但是第一种方法将上(下)三角矩阵进行数据扩展成为对称矩阵的过程需要额外的数据搬移和时间开销。第二种方法通过对原始算法进行并行优化实现了矩阵运算,但是由于最内层循环的循环次数可变且通常较小,导致数据存取的并行度不高,从而降低了硬件利用效率和算法效率。第三种方法虽然有效地减少了计算复杂度,但是仍然受限于并行数据存取的速度,导致硬件利用率和算法的效率不高。
发明内容
为了解决现有技术中存在的受限于三角矩阵的行列向量数据存取的并行度不高,导致硬件利用率和矩阵运算算法效率不高的问题,本发明实施例提供一种对称矩阵的三角部分存储装置和并行读取方法。
根据本发明实施例的一个方面,提供一种对称矩阵的三角部分存储装置,包括:
存储模块选择电路,用于选择待存取的对称矩阵上三角部分或下三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的对称矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的对称矩阵上三角部分或下三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
其中,m为所述对称矩阵的三角部分存储装置的硬件并行度。
根据本发明实施例的另一个方面,提供一种基于第一方面所提供的对称矩阵的三角部分存储装置的并行读取方法,包括:
根据对称矩阵的对称特性,将待读取的N阶对称矩阵的任一行或列元素转换为所述N阶对称矩阵上三角部分或下三角部分中所包含的N个元素;
利用所述存储模块选择电路确定所述N个元素各自对应的存储模块,利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址,根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据;
在所述数据混洗模块中对读取出的所述N个元素所对应的数据进行数据混洗操作;
其中,N为正整数。
本发明实施例提出的一种对称矩阵的三角部分存储装置和并行读取方法,只存储对称矩阵的三角部分,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复对称矩阵的任意行向量和列向量,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
附图说明
图1为根据本发明一实施例提供的对称矩阵的三角部分存储装置的结构示意图;
图2为根据本发明另一实施例提供的基于对称矩阵的三角部分存储装置的并行读取方法的流程示意图;
图3为本发明另一实施例提供的只保存上三角部分元素的对称矩阵按行读取的实现示意图;
图4为本发明另一实施例提供的只保存上三角部分元素的对称矩阵按列读取的实现示意图;
图5为本发明另一实施例提供的只保存下三角部分元素的对称矩阵按行读取的实现示意图;
图6为本发明另一实施例提供的只保存下三角部分元素的对称矩阵按列读取的实现示意图;
图7为本发明另一实施例提供的只保存上三角部分元素的对称矩阵按行读取的实现示意图;
图8为本发明另一实施例提供的只保存上三角部分元素的对称矩阵按行读取的实现示意图;
图9为本发明另一实施例提供的只保存上三角部分元素的对称矩阵按行读取的实现示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
为了能够并行读取对称矩阵的行列向量的全部元素,提高并行处理单元利用效率,需要开发并行无冲突存取机制,使数据存取的并行度尽可能的达到计算单元的硬件并行度,那么就可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
对称矩阵是对称的方阵,根据对称矩阵的对称特性,N阶对称矩阵X的第i行第j列的元素与第j行第i列的元素相等。为了节省存储空间,将对称矩阵以主对角线为轴划分为上三角部分和下三角部分,可以只存储对称矩阵的上(下)三角部分元素,相应地,对称矩阵的下(上)三角部分元素可以利用对称特性得到。
如图1所示,为本发明一实施例提供的对称矩阵的三角部分存储装置的结构示意图,包括:存储模块选择电路101、地址生成电路102、并行的m个存储模块103和数据混洗模块104。
其中,存储模块选择电路101,用于选择待存取的对称矩阵上三角部分或下三角部分各元素对应的存储模块。
存储模块选择电路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,用于对从所述存储模块中读取出的数据进行混洗操作;
数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
本发明实施例提出的对称矩阵的三角部分存储装置,只存储对称矩阵的上三角部分或下三角部分,能够充分利用SIMD硬件的并行计算单元,并且支持并行读取并恢复对称矩阵的任意行向量和列向量,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述存储模块选择电路具体用于:
根据公式(1)分别计算所述待存取的对称矩阵上三角部分或下三角部分各元素对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
上式中,i,j分别为所述待存取的对称矩阵上三角部分或下三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
公式(1)即为bank计算公式。
基于上述实施例,所述地址生成电路具体用于:
根据公式(2)分别计算所述待存取的对称矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
Figure BDA0001856106680000061
上式中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001856106680000062
为向上取整操作,符号
Figure BDA0001856106680000063
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
所述地址生成电路计算所述待存取的对称矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址的公式还可以为:
Figure BDA0001856106680000071
上式中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001856106680000072
为向上取整操作,符号
Figure BDA0001856106680000073
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
公式(2)和公式(3)即为addr计算公式。
在上述实施例的基础上,如图2所示,为本发明另一实施例提供的对称矩阵的三角部分存储装置的并行读取方法的流程示意图,包括:
201、根据对称矩阵的对称特性,将待读取的N阶对称矩阵的任一行或列元素转换为所述N阶对称矩阵的上三角部分或下三角部分中所包含的N个元素;其中,N为正整数。
具体地,根据对称矩阵的对称特性,有N阶对称矩阵的第i行第j列的元素与第j行第i列的元素相等,因此根据对称特性,可以从只存储对称矩阵的上(下)三角部分元素的存储装置中恢复N阶对称矩阵下(上)三角部分的元素。
对于只保存上三角部分元素的N阶对称矩阵,若需要读取该N阶对称矩阵的任一行或列,则根据对称特性将该行或列元素中属于该对称矩阵下三角部分的元素转换为上三角部分元素。例如,若要并行取第i=3行{x30,x31,x32,x33,x34}五个元素,则将下三角部分元素{x30,x31,x32}转换相对称的属于上三角部分的元素,即{x03,x13,x23}。这一步骤将待读取的N阶对称矩阵的任一行或列元素转换为N阶对称矩阵上三角部分中所包含的N个元素{x03,x13,x23,x33,x34}。
对于只保存下三角部分元素的N阶对称矩阵,若需要读取该N阶对称矩阵的任一行或列,则根据对称特性将该行或列元素中属于该对称矩阵上三角部分的元素转换为下三角部分元素。例如,若要并行取第j=3列{x03,x13,x23,x33,x43}五个元素,则将上三角部分元素{x03,x13,x23}转换为相对称的属于下三角部分的元素,即{x30,x31,x32}。这一步骤将待读取的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个元素所对应的数据进行数据混洗操作。
具体地,数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是乱序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
本发明实施例提出的一种基于对称矩阵的三角部分存储装置的并行读取方法,支持从只保存上三角部分元素或下三角部分元素的对称矩阵中并行读取并恢复对称矩阵的任意行向量和列向量,能够充分利用SIMD硬件的并行计算单元,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
上式中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。通常,a的取值为零。
基于上述实施例,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
Figure BDA0001856106680000091
上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001856106680000092
为向上取整操作,符号
Figure BDA0001856106680000093
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。通常,b的取值也为零。
计算N个元素在各自对应的存储模块中的逻辑地址的步骤,还包括:
根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
Figure BDA0001856106680000094
上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001856106680000095
为向上取整操作,符号
Figure BDA0001856106680000096
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
基于上述实施例,所述根据所述逻辑地址,从存储模块中并行读取所述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。根据公式(1)可得数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)可得数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000101
对于5阶对称矩阵的存储,取第i=2行,如图3(a)所示,并行读取对称矩阵的行向量{x20,x21,x22,x23,x24}。图3(b)示出对称矩阵行向量在其上三角部分的投影,即可以根据对称矩阵的对称特性,将其转换为取对称矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素。根据bank和addr的计算公式,如图3(c)所示,将对称矩阵的下三角部分的元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。然后对读取出的五个元素进行数据混洗。本发明实施例给出了对称矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存上三角部分元素的对称矩阵行向量的读取方法。
如图4所示,为本发明另一实施例只保存上三角部分元素的对称矩阵按列读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000111
对5阶对称矩阵取第j=2列,如图4(a)所示,即为并行取{x02,x12,x22,x32,x42}五个元素。如图4(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素。根据bank和addr的计算公式,如图3(c)所示,将对称矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存上三角部分元素的对称矩阵列向量的读取方法。
如图5所示,为本发明实施例只保存下三角部分元素的对称矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000121
对5阶对称矩阵取第i=2行,如图5(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图5(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x20,x21,x22,x32,x42}五个元素。根据bank和addr的计算公式,如图5(c)所示,将对称矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x20,x21,x22,x32,x42}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存下三角部分元素的对称矩阵行向量的读取方法。
如图6所示,为本发明实施例只保存下三角部分元素的对称矩阵按列读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000122
对5阶对称矩阵取第j=2列,如图6(a)所示,即为并行取{x02,x12,x22,x32,x42}五个元素。如图6(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵下三角部分中的{x20,x21,x22,x32,x42}五个元素。根据bank和addr的计算公式,如图6(c)所示,将对称矩阵的下三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x20,x21,x22,x32,x42}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数与存储装置的硬件并行度相等的情况下,只保存下三角部分元素的对称矩阵列向量的读取方法。
如图7所示,为本发明实施例采用另一种addr计算公式的只保存上三角部分元素的对称矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的三角部分存储装置的硬件并行度m=5。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000131
对5阶对称矩阵取第i=2行,如图7(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图7(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素。根据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,数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000141
对5阶对称矩阵取第i=2行,如图8(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图8(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素。根据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,数据所在的存储模块的存储地址计算公式为
Figure BDA0001856106680000142
对5阶对称矩阵取第i=2行,如图9(a)所示,即为并行取{x20,x21,x22,x23,x24}五个元素。如图9(b)所示,可以根据对称矩阵的对称特性,将其转换为取对称矩阵上三角部分中的{x02,x12,x22,x23,x24}五个元素。根据bank和addr的计算公式,如图9(c)所示,将对称矩阵的上三角部分元素映射到所述存储模块中。可以看出,需要并行读取的五个数据{x02,x12,x22,x23,x24}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数小于存储装置的硬件并行度的情况下,只保存上三角部分元素的对称矩阵行向量的读取方法。
最后,本发明上述各实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种对称矩阵的三角部分存储装置,其特征在于,包括:
存储模块选择电路,用于选择待存取的对称矩阵上三角部分或下三角部分各元素对应的存储模块;
地址生成电路,用于计算所述待存取的对称矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;
并行的m个存储模块,用于存储所述待存取的对称矩阵上三角部分或下三角部分各元素所对应的数据;
数据混洗模块,用于对从所述存储模块中读取出的数据进行混洗操作;
其中,m为所述对称矩阵的三角部分存储装置的硬件并行度;
其中,所述地址生成电路具体用于:
根据公式(2)分别计算所述待存取的对称矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
Figure FDA0002532457070000011
其中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号
Figure FDA0002532457070000012
为向上取整操作,符号
Figure FDA0002532457070000013
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址;
或者,所述地址生成电路具体用于:
根据公式(3)分别计算所述待存取的对称矩阵上三角部分或下三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(3)为:
Figure FDA0002532457070000014
其中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵上三角部分或下三角部分任一元素所在的行和列,b为预设的标量常数,符号
Figure FDA0002532457070000021
为向上取整操作,符号
Figure FDA0002532457070000022
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
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为正整数。
4.根据权利要求3所述的方法,其特征在于,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块,m为所述对称矩阵的三角部分存储装置的硬件并行度。
5.根据权利要求3所述的方法,其特征在于,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
Figure FDA0002532457070000031
其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号
Figure FDA0002532457070000032
为向上取整操作,符号
Figure FDA0002532457070000033
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址,m为所述对称矩阵的三角部分存储装置的硬件并行度。
6.根据权利要求3所述的方法,其特征在于,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
Figure FDA0002532457070000034
其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号
Figure FDA0002532457070000035
为向上取整操作,符号
Figure FDA0002532457070000036
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址,m为所述对称矩阵的三角部分存储装置的硬件并行度。
7.根据权利要求3所述的方法,其特征在于,所述根据所述逻辑地址,从存储模块中并行读取所述N个元素所对应的数据的步骤具体为:
若所述待读取的对称矩阵的阶数N大于所述对称矩阵的三角部分存储装置的硬件并行度m,每次最多从存储模块中并行读取所述N个元素中的m个元素所对应的数据;或者,
若所述待读取的对称矩阵的阶数N小于等于所述对称矩阵的三角部分存储装置的硬件并行度m,一次性从存储模块中并行读取所述N个元素所对应的数据。
CN201811315320.0A 2018-11-06 2018-11-06 对称矩阵的三角部分存储装置和并行读取方法 Active CN109857982B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811315320.0A CN109857982B (zh) 2018-11-06 2018-11-06 对称矩阵的三角部分存储装置和并行读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811315320.0A CN109857982B (zh) 2018-11-06 2018-11-06 对称矩阵的三角部分存储装置和并行读取方法

Publications (2)

Publication Number Publication Date
CN109857982A CN109857982A (zh) 2019-06-07
CN109857982B true CN109857982B (zh) 2020-10-02

Family

ID=66889849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811315320.0A Active CN109857982B (zh) 2018-11-06 2018-11-06 对称矩阵的三角部分存储装置和并行读取方法

Country Status (1)

Country Link
CN (1) CN109857982B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN107590106A (zh) * 2017-08-08 2018-01-16 北京中科睿芯科技有限公司 一种应用于对称矩阵与向量乘法的计算方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
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
CN101398784A (zh) * 2007-09-26 2009-04-01 大唐移动通信设备有限公司 一种二维寻址方法及装置
CN104216866B (zh) * 2013-05-31 2018-01-23 深圳市海思半导体有限公司 一种数据处理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN107590106A (zh) * 2017-08-08 2018-01-16 北京中科睿芯科技有限公司 一种应用于对称矩阵与向量乘法的计算方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于线性结构的几种特殊矩阵的压缩存储;明廷堂;《电脑编程技巧与维护》;20140331(第3期);第9-17、30页 *

Also Published As

Publication number Publication date
CN109857982A (zh) 2019-06-07

Similar Documents

Publication Publication Date Title
CN107748723B (zh) 支持无冲突跨步按块访问的存储方法及访存装置
CN101655821B (zh) 一种解决地址空间映射哈希地址冲突的方法及装置
CN110163338B (zh) 具有运算阵列的芯片运算方法、装置、终端及芯片
JP2013205973A (ja) 行列演算装置
WO2021080873A1 (en) Structured pruning for machine learning model
CN109614149B (zh) 对称矩阵的上三角部分存储装置和并行读取方法
US9146696B2 (en) Multi-granularity parallel storage system and storage
US9171593B2 (en) Multi-granularity parallel storage system
CN109635236B (zh) 对称矩阵的下三角部分存储装置和并行读取方法
CN109558567B (zh) 自共轭矩阵的上三角部分存储装置和并行读取方法
CN109614582B (zh) 自共轭矩阵的下三角部分存储装置和并行读取方法
CN109857982B (zh) 对称矩阵的三角部分存储装置和并行读取方法
US6640296B2 (en) Data processing method and device for parallel stride access
CN109635235B (zh) 一种自共轭矩阵的三角部分存储装置和并行读取方法
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
WO2013097235A1 (zh) 并行位反序装置和方法
RU2005108760A (ru) Устройство аппаратной реализации вероятностных генетических алгоритмов
US20230244600A1 (en) Process for Generation of Addresses in Multi-Level Data Access
US20220188613A1 (en) Sgcnax: a scalable graph convolutional neural network accelerator with workload balancing
CN109669666A (zh) 乘累加处理器
WO2016007069A1 (en) Device and method for performing a fourier transform on a three dimensional data set
JP2021043508A (ja) 情報処理装置および情報処理方法
CN100375065C (zh) 产生预测地址值的电路和方法
CN114741352B (zh) 一种基于fpga的双线性插值重采样实现方法及装置
CN114239818B (zh) 基于tcam和lut的存内计算架构神经网络加速器

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

Effective date of registration: 20210120

Address after: Room 908, block C, Kechuang headquarters building, No. 320, pubin Road, Jiangpu street, Nanjing area, Nanjing Free Trade Zone, 211800 Jiangsu Province

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

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230703

Address after: Room 908, block C, Kechuang headquarters building, No. 320, pubin Road, Jiangpu street, Nanjing area, Nanjing Free Trade Zone, 211800 Jiangsu Province

Patentee after: Jixin communication technology (Nanjing) Co.,Ltd.

Patentee after: Polar core communication technology (Xi'an) Co.,Ltd.

Address before: Room 908, block C, Kechuang headquarters building, No. 320, pubin Road, Jiangpu street, Nanjing area, Nanjing Free Trade Zone, 211800 Jiangsu Province

Patentee before: Jixin communication technology (Nanjing) Co.,Ltd.

TR01 Transfer of patent right