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

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

Info

Publication number
CN109614149B
CN109614149B CN201811314509.8A CN201811314509A CN109614149B CN 109614149 B CN109614149 B CN 109614149B CN 201811314509 A CN201811314509 A CN 201811314509A CN 109614149 B CN109614149 B CN 109614149B
Authority
CN
China
Prior art keywords
symmetric matrix
elements
triangular part
accessed
storage
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
CN201811314509.8A
Other languages
English (en)
Other versions
CN109614149A (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 CN201811314509.8A priority Critical patent/CN109614149B/zh
Publication of CN109614149A publication Critical patent/CN109614149A/zh
Application granted granted Critical
Publication of CN109614149B publication Critical patent/CN109614149B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • 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为根据本发明另一实施例提供的只保存上三角部分元素的对称矩阵按行读取的实现示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
为了能够并行读取对称矩阵的行列向量的全部元素,提高并行处理单元利用效率,需要开发并行无冲突存取机制,使数据存取的并行度尽可能的达到计算单元的硬件并行度,那么就可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
对称矩阵是对称的方阵,根据对称矩阵的对称特性,N阶对称矩阵的第i行第j列的元素与第j行第i列的元素相等,因此可以根据对称特性,只存储对称矩阵的上三角部分元素,而下三角部分元素可以通过对称的上三角部分对应元素得到。
如图1所示,为本发明一实施例提供的对称矩阵的上三角部分存储装置的结构示意图,包括:存储模块选择电路101、地址生成电路102、并行的m个存储模块103和数据混洗模块104。
其中,存储模块选择电路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,用于对从所述存储模块中读取出的数据进行混洗操作;
数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是无序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
本发明实施例提出的对称矩阵的上三角部分存储装置,支持从只保存上三角部分元素的对称矩阵中并行读取并恢复对称矩阵的任意行向量和列向量,能够充分利用SIMD硬件的并行计算单元,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述存储模块选择电路101具体用于:
根据公式(1)分别计算所述待存取的对称矩阵上三角部分各元素对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别为所述待存取的对称矩阵上三角部分任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。
公式(1)即为bank计算公式。
基于上述实施例,所述地址生成电路102具体用于:
根据公式(2)分别计算所述待存取的对称矩阵上三角部分各元素在其对应的存储模块中的逻辑地址;其中,所述公式(2)为:
Figure BDA0001855899740000061
其中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵上三角部分任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001855899740000062
为向上取整操作,符号
Figure BDA0001855899740000063
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
所述地址生成电路102计算所述待存取的对称矩阵上三角部分各元素在其对应的存储模块中的逻辑地址的公式还可以为:
Figure BDA0001855899740000064
其中,N为所述待存取的对称矩阵的阶数,i,j分别为所述待存取的对称矩阵上三角部分任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001855899740000071
为向上取整操作,符号
Figure BDA0001855899740000072
为向下取整操作,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}。这一步骤将待读取的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个元素所对应的数据进行数据混洗操作;
数据混洗操作包括但不限于对数据进行重排序,从存储模块中并行读取出的数据通常是无序的,按照数据所在的行和列进行重排序之后才能用于进行后续的矩阵运算操作。
本发明实施例提出的基于对称矩阵的上三角部分存储装置的并行读取方法,支持从只保存对称矩阵上三角部分元素的存储装置中并行读取并恢复对称矩阵的任意行向量和列向量,能够充分利用SIMD硬件的并行计算单元,从而可以将对称矩阵运算的算法效率提升到通用矩阵运算的算法效率层次。
基于上述实施例,所述利用所述存储模块选择电路确定所述N个元素各自对应的存储模块的步骤,具体为:
根据公式(1)计算所述N个元素各自对应的存储模块;其中,所述公式(1)为:
bank=(i+j+a)mod m (1),
其中,i,j分别表示所述N个元素中任一元素所在的行和列,a为预设的标量常数,mod为取余数操作,bank为该元素对应的存储模块。通常,a的取值为零。
基于上述实施例,所述利用所述地址生成电路确定所述N个元素在各自对应的存储模块中的逻辑地址的步骤,具体为:
根据公式(2)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(2)为:
Figure BDA0001855899740000091
其中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001855899740000092
为向上取整操作,符号
Figure BDA0001855899740000093
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。通常,b的取值也为零。
计算N个元素在各自对应的存储模块中的逻辑地址的步骤,还包括:
根据公式(3)计算所述N个元素在各自对应的存储模块中的逻辑地址;其中,所述公式(3)为:
Figure BDA0001855899740000094
上式中,i,j分别为所述N个元素中任一元素所在的行和列,b为预设的标量常数,符号
Figure BDA0001855899740000095
为向上取整操作,符号
Figure BDA0001855899740000096
为向下取整操作,addr为该元素在其对应的存储模块中的逻辑地址。
基于上述实施例,当对称矩阵的阶数N等于存储装置的硬件并行度m时,可以一次性读取待读取的N阶对称矩阵的任一行或列元素。当对称矩阵的阶数N为m的整数倍时,由于每次最多只能并行读取m个元素,因此,对称矩阵的一个行向量或列向量需要分多次进行读取。
下面结合几个典型的例子对本发明实施例所提供的并行读取方法作进一步解释。存储模块选择电路和地址生成电路中的常量a和常量b的取值均为0。
如图3所示,为本发明实施例只保存上三角部分元素的对称矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的上三角部分存储装置的硬件并行度m=5。根据公式(1)可得数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000101
对于5阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 5,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000102
对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}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵行向量的方法。
如图4所示,为本发明实施例只保存上三角部分元素的对称矩阵按列读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的上三角部分存储装置的硬件并行度m=5。根据公式(1)可得数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(2)可得数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000111
对于5阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 5,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000112
对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}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵列向量的方法。
如图5所示,为本发明实施例采用另一种addr计算公式的只保存上三角部分元素的对称矩阵按行读取的实现示意图(N=5,m=5)。在本实施例中,对称矩阵的上三角部分存储装置的硬件并行度m=5。根据公式(1)可得,数据所在的存储模块计算公式为bank=(i+j)mod m,根据公式(3)可得数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000121
对于5阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 5,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000122
对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}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的存储装置采用另一地址计算公式(3)时,矩阵阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵行向量的方法。对称矩阵的存储装置采用另一地址计算公式(3)时,矩阵阶数为奇数且与存储装置的硬件并行度相等的情况下,读取对称矩阵列向量的方法与图4所示的实施例类似,在此不再赘述。
如图6所示,为本发明实施例只保存上三角部分元素的对称矩阵按行读取的实现示意图(N=6,m=6)。在本实施例中,对称矩阵的上三角部分存储装置的硬件并行度m=6。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000131
即公式(2)。对于6阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod 6,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000132
对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}分别存储在不同的存储模块中,可以实现无冲突读取。本发明实施例给出了对称矩阵的阶数为偶数且与存储装置的硬件并行度相等的情况下,读取对称矩阵行向量的方法。读取对称矩阵列向量的方法与前述实施例类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
如图7所示,为本发明实施例只保存上三角部分元素的对称矩阵按行读取的实现示意图(N=6,m=3)。在本实施例中,对称矩阵的上三角部分存储装置的硬件并行度m=3。数据所在的存储模块计算公式为bank=(i+j)mod m,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000141
即公式(2)。对于6阶对称矩阵的存储,数据所在的存储模块计算公式为bank=(i+j)mod3,数据所在的存储模块的存储地址计算公式为
Figure BDA0001855899740000142
对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},实现无冲突读取。本发明实施例给出了对称矩阵的阶数N为存储装置的硬件并行度m的整数倍时,读取对称矩阵行向量的方法。读取对称矩阵列向量的方法类似,在此不再赘述。也可以采用公式(3)计算addr,在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
最后,本发明上述各实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN109614149A CN109614149A (zh) 2019-04-12
CN109614149B true CN109614149B (zh) 2020-10-02

Family

ID=66002688

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN109614149B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110377877B (zh) * 2019-07-26 2022-12-23 苏州浪潮智能科技有限公司 一种数据处理方法、装置、设备及存储介质
WO2023206074A1 (zh) * 2022-04-26 2023-11-02 浙江凌迪数字科技有公司 一种对称矩阵与向量相乘的并行计算方法及其系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE557343T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
EP2831795B1 (en) * 2012-03-30 2019-01-09 Irdeto B.V. Securing accessible systems using variable dependent coding
CN103067025B (zh) * 2013-01-01 2017-03-01 中国传媒大学 基于块行循环的cmmb中ldpc编码器和编码方法
CN103440121B (zh) * 2013-08-20 2016-06-29 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法
CN103955904B (zh) * 2014-05-12 2017-05-24 东南大学 一种基于离散分数阶傅里叶变换相位信息的信号重建方法
CN107590106B (zh) * 2017-08-08 2020-07-28 北京中科睿芯科技有限公司 一种应用于对称矩阵与向量乘法的计算方法

Also Published As

Publication number Publication date
CN109614149A (zh) 2019-04-12

Similar Documents

Publication Publication Date Title
CN111758107B (zh) 用于基于硬件的池化的系统和方法
WO2021080873A1 (en) Structured pruning for machine learning model
CN109597647B (zh) 数据处理方法及设备
US11194887B2 (en) Data processing device and method, and digital signal processing device
CN111915001A (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN109614149B (zh) 对称矩阵的上三角部分存储装置和并行读取方法
US20140337401A1 (en) Data access method and device for parallel fft computation
WO2018027706A1 (zh) Fft处理器及运算方法
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
US9171593B2 (en) Multi-granularity parallel storage system
CN109635236B (zh) 对称矩阵的下三角部分存储装置和并行读取方法
CN109558567B (zh) 自共轭矩阵的上三角部分存储装置和并行读取方法
CN109614582B (zh) 自共轭矩阵的下三角部分存储装置和并行读取方法
JP2006157252A5 (zh)
Ballard et al. Communication efficient Gaussian elimination with partial pivoting using a shape morphing data layout
CN109857982B (zh) 对称矩阵的三角部分存储装置和并行读取方法
US6640296B2 (en) Data processing method and device for parallel stride access
CN108920097B (zh) 一种基于交织存储的三维数据处理方法
CN110018847B (zh) 可配置寄存器及基于可配置寄存器的数据存取方法
CN109635235B (zh) 一种自共轭矩阵的三角部分存储装置和并行读取方法
WO2013097235A1 (zh) 并行位反序装置和方法
CN112149049A (zh) 用于变换矩阵的装置和方法、数据处理系统
US20220215070A1 (en) Information acquisition method and information processing device
WO2023165290A1 (zh) 数据处理方法及装置、电子设备和存储介质
CN114741352B (zh) 一种基于fpga的双线性插值重采样实现方法及装置

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: 20210122

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