CN111723336A - 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 - Google Patents
一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 Download PDFInfo
- Publication number
- CN111723336A CN111723336A CN202010486502.5A CN202010486502A CN111723336A CN 111723336 A CN111723336 A CN 111723336A CN 202010486502 A CN202010486502 A CN 202010486502A CN 111723336 A CN111723336 A CN 111723336A
- Authority
- CN
- China
- Prior art keywords
- matrix
- bank
- cholesky decomposition
- data
- inversion
- 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
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 199
- 238000000354 decomposition reaction Methods 0.000 title claims abstract description 59
- 230000001133 acceleration Effects 0.000 title claims abstract description 41
- 238000004364 calculation method Methods 0.000 claims abstract description 40
- 238000003860 storage Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 22
- 238000009825 accumulation Methods 0.000 claims description 7
- 238000011065 in-situ storage Methods 0.000 claims description 2
- 230000003068 static effect Effects 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims 2
- 125000004122 cyclic group Chemical group 0.000 abstract description 8
- 238000013461 design Methods 0.000 abstract description 3
- 238000013500 data storage Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013142 basic testing Methods 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Complex Calculations (AREA)
Abstract
本发明提出了一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,包括DSP核,外部DDR存储器,AXI接口,主控制器、双DMA控制器、SRAM存储器、PE运算阵列及矩阵求逆运算模块;所述矩阵求逆模块包括cholesky分解,三角矩阵求逆和三角矩阵乘法三个子运算模块,三个子模块使用相同的数据存储方式;采用循环迭代的方法代替传统的乘累加计算,求解cholesky分解的结果以及三角矩阵的逆矩阵,降低了读写数据时的寻址复杂度;采用一种适用于三角矩阵的新型矩阵乘法算法,缩短了矩阵乘法的计算时间;本发明支持4至256阶中任意阶数复数矩阵的求逆运算,具有硬件复杂度低,存储资源利用率高的特点,实现了高阶高性能的设计目标。
Description
技术领域
本发明涉及矩阵求逆算法,具体涉及一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统。
背景技术
现代科技发展所产生的数据正呈现爆炸式增长趋势,对密集型计算的性能要求也越来越高。矩阵运算作为密集型计算的核心环节,其运算性能基本决定了系统总体性能。矩阵求逆作为一种典型的矩阵运算,支持高性能和高阶矩阵求逆的需求也渐渐显现。
作为计算与访存密集型运算,矩阵求逆算法包含大量的运算过程。随着矩阵规模的增加,矩阵求逆的计算量和时空复杂度将大幅增加,数据搬运所耗时间更长。在这种情况下,软件实现矩阵求逆在实时工作中的表现很差,因此有研究人员将注意力转移到FPGA(现场可编程门阵列)的优化上。FPGA主要依靠查找表进行计算,它的粒度很细,大量资源用于可配置的片上路由和布线,导致计算资源的利用率较低。因此,在FPGA上实现的矩阵求逆计算效率仍然不高。
为了进一步提高算法的性能,一些研究者通过ASIC硬件加速器来实现矩阵求逆,利用硬件并行计算的优势提高计算效率。在传统的cholesky分解中,矩阵L中的元素可通过以下递归式获得:
该算法直接利用公式进行cholesky分解,需要乘累加单元,资源消耗大,计算和寻址复杂度也较高,三角矩阵求逆计算过程同样需要乘累加计算以及复杂的寻址方式。受硬件资源限制,目前相关的研究成果多数是针对特定阶数或阶数较小的矩阵进行求逆。而支持任意阶数矩阵求逆的硬件实现很少,而且大多数现有的矩阵求逆过程在矩阵乘法步骤中消耗过多时间,因此有必要对传统实现进行优化,降低硬件复杂度,并根据三角矩阵的特点设计矩阵乘法模块,提高矩阵求逆的效率。
发明内容
本发明的目的在于克服以上现有技术不足,提供一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,该系统使用循环迭代方式,简化运算和寻址过程,从而有效降低了矩阵求逆的硬件复杂度;采用三角矩阵乘法,有效缩短运算时间;三种子算法以相同的方式存储数据,提高了存储空间利用率;最终可以实现4到256阶中任意阶数的复数矩阵求逆运算,具体由以下技术方案实现:
所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,包括DSP核,外部DDR存储器,AXI接口,主控制器、双DMA控制器、SRAM存储器、PE运算阵列以及矩阵求逆加速核。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,采用双端口的SRAM,一共包含129个BANK,每一个BANK是一块独立的存储单元,一个端口进行读数据的同时,另一个端口可以写数据;在本发明中,BANK0~63用于PE读,AXI写源数据;BANK65~96用于PE读、写中间结果,AXI不写;BANK97~128用于PE写、AXI读结果数据;PE和AXI不同时进行读或写,最终可以实现存储单元的并行无冲突访存。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,cholesky分解和三角矩阵求逆的结果都存放在中间结果BANK当中,三个子算法的存储空间可以共享,支持对同一个BANK同时读取和写入,提高了存储资源的利用率和数据访存效率。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,所述矩阵求逆加速核包括:
(1)cholesky分解运算模块,用循环迭代方式代替传统的复杂的公式求解法,将源矩阵A分解为下三角矩阵L和它的共轭转置矩阵LH的乘积;
(2)三角矩阵求逆模块,同样使用循环迭代法,求解出下三角矩阵L的逆矩阵S;
(3)三角矩阵乘法模块,通过公式R=(S)H*S,计算得到源矩阵A的逆矩阵。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,cholesky分解运算模块需要实数除法器组成1/SQRT部件,用于计算当前列对角线元素的平方根倒数;需要具有复数乘法部件用于当前行的更新计算;需要具有复数乘加部件用于下方列的更新计算。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,三角矩阵求逆运算模块需要具有实数除法部件,用于计算当前行对角线元素的倒数;需要具有复数乘法部件用于对当前行进行更新;需要具有复数乘加部件用于对下方列更新。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,进行矩阵乘法时,通过减少0元素与其它行或者其它列元素进行相乘的步骤,有效缩短了计算时间;计算矩阵乘法需要具有复数乘累加部件,为避免流水中断,需要1个复乘和3个复加部件组成一个流水乘累加单元。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,采用8路并行计算,每次8路并行可以同时取相邻8列的数据,并且每次并行参与计算的点数相同。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,通过循环迭代的方法,用乘法和加法操作代替原来的乘累加操作,降低了运算复杂度;源数据按列依次存放在编号0~7的BANK中,计算时源数据区需同时提供8列源数据;在对源数据进行寻址时,只需要确定对角线的地址即可,对角线下方元素的地址可依次自增0x1获得,这使得原本复杂的地址生成变得简单。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,根据BANK单元序号和地址,可以唯一确定矩阵中某个元素的存放位置;BANK单元序号和和单元地址从0开始计数,根据源数据在BANK中的存放方式,对于N阶源矩阵A中的元素Aij,通过公式Num_Bank=(j-1)%8求得单元序号;通过公式Addr_Bank=floor((j-1)/8)*N+i-1求得单元地址。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,根据寻址公式,解析出数据在下三角矩阵中的单元序号和单元地址,依次从源数据所在BANK读出下三角元素,参与计算,再按照矩阵一列存于一个BANK的规则,将计算结果原位存回中间结果区。
在进一步的实施例中,所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,结果矩阵按行存储,根据数据在BANK中的存放方式,对于N阶结果矩阵R中的元素Rmn,存入BANK的单元序号为((m-1)*N+n-1)%8+1,存入BANK的地址为floor(((m-1)*N+n-1)/8)。
一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速方法,包括如下步骤:
步骤1、DSP核通过AXI接口控制对DDR指令缓冲区写入,由主控制器将配置信息读入配置寄存器中;
步骤2、判断当前矩阵求逆加速器是否空闲,若此时矩阵求逆加速器为空闲状态,则配置DMA通过AXI接口将源数据从外部DDR存储器移入SRAM存储器;
步骤3、当源数据完全存入SRAM存储器之后,矩阵求逆控制器控制计算开始;在计算期间,数据按顺序发送到PE运算阵列,参与不同类型的计算;
步骤4、SRAM存储器中的中间结果BANK用于中间结果数据的读写,结果数据存放在结果BANK中,只能由DMA读取;
步骤5、计算结束后,DMA通过AXI数据接口将结果数据从SRAM移出到DDR,完成一次完整的矩阵求逆运算。
有益效果:
第一,本发明可实现任意阶数可配的矩阵求逆运算,适合高阶大维度矩阵,运算效率高。
第二,本发明将算法由直接公式计算改为循环迭代的计算形式,代替原本复杂的公式,简化运算与寻址过程,降低了硬件实现复杂度,从而降低整个系统的功耗。。
第三,本发明提出的利用中间结果BANK共享内存空间,通过让cholesky分解,三角矩阵求逆以及三角矩阵乘法这三种子算法中使用的源数据以相同的方式存储,在隐藏数据移动延迟的同时提高存储资源利用率。
第四,本发明支持任意配置矩阵阶数,可以实现4到256阶任意阶数的复数矩阵求逆运算,同时支持8路并行计算,充分挖掘算法并行性。
综上所述,本发明可以有效地提高矩阵求逆硬件加速系统的性能、灵活性,降低计算复杂度,满足高速,高性能,高阶矩阵求逆的设计目标。
附图说明
图1是本发明中矩阵求逆硬件加速系统整体架构图。
图2为本发明中存储阵列映射图。
图3是本发明中源数据在SRAM中的存储方式。
图4是本发明中cholesky分解流程图。
图5是本发明中cholesky分解模块PE内部计算电路结构。
图6是本发明中cholesky分解迭代循环示意图。
图7是本发明中三角矩阵求逆流程图。
图8是本发明中三角矩阵求逆模块PE内部计算电路结构。
图9是本发明中三角矩阵求逆迭代循环示意图。
图10是本发明中三角矩阵乘法8路并行计算示意图。
图11是不同方法实现矩阵求逆的性能对比图。
图12是本发明中矩阵求逆的精度分析图。
具体实施方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
如图1,该实例的采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,主要包括外部DDR存储器和DSP核,AXI接口,主控制器、双DMA控制器、SRAM存储器,矩阵求逆加速核;首先DSP通过AXI接口控制对DDR指令缓冲区的写入,由主控制器将配置信息读入配置寄存器中。若此时矩阵求逆加速器为空闲状态,则配置DMA通过AXI接口将源数据从DDR移入SRAM。当源数据完全存入SRAM之后,矩阵求逆控制器控制计算开始。在计算期间,数据按顺序发送到PE阵列,参与不同类型的计算。SRAM中的中间结果BANK可用于中间结果数据的读写,结果数据存放在结果BANK中,只能由DMA读取。计算结束后,DMA通过AXI数据接口将结果数据从SRAM移出到DDR,完成一次完整的矩阵求逆运算。
所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,采用双端口的SRAM,一共包含129个BANK,每一个BANK是一块独立的存储单元。存储阵列映射图如图2所示,BANK可用一个端口进行读,另一个端口写。对矩阵求逆的SRAM来说,BANK0~63用于PE读,AXI写源数据;BANK65~96用于PE读、写中间结果,AXI不写;BANK97~128用于PE写、AXI读结果数据。PE和AXI不同时进行读或写,这样可以实现存储单元的并行无冲突访存。
所述采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统的进一步设计在于,cholesky分解和三角矩阵求逆的结果都存放在中间结果BANK当中,三个子算法的存储空间可以共享,支持对同一个BANK同时读取和写入,提高了存储资源的利用率和数据访存效率。
根据矩阵cholesky分解的计算过程可知,归一化和数据更新是以列为单位进行操作的,因此应当以列为单位对矩阵进行划分。图3为本发明中源数据在SRAM中的存储方式,采用8路并行存储,源数据区需同时提供8组源数据,所以需要将一个源数据区中的2个BANK编组提供一组源数据供数。
下面以本发明的一个实例实现进行详细说明,该硬件加速系统基于Verilog HDL语言设计,利用VCS以及FPGA完成了基本的测试验证。
如果复矩阵A是共轭对称的正定矩阵,则可以用cholesky分解法将其分解为一个下三角矩阵L和它的共轭转置上三角矩阵LH的乘积;通过三角矩阵求逆运算,计算出下三角矩阵L的逆矩阵S;最终通过R=A-1=(S)H*S三角矩阵乘法,求得A的逆矩阵A-1。
典型的cholesky分解算法,每一个元素都需要经过复杂的乘累加运算才能计算出来。本发明为了简化计算,采用了循环迭代的方式,进一步把cholesky分解变换成如下公式:
在迭代计算过程中,k是当前迭代的次数,A(k)是第k次迭代更新的源矩阵,aij k为A(k)中i行j列的元素。A(k)更新结束后变成新矩阵A(k+1)。公式把A(k)分成三块,分别计算新的A(k+1)值。由公式可以看出,所在列数j<k的元素,保持原值;首先更新的是第k列,采用j=k的公式;第k列更新完成后,对应更新第k+1~N列,采用列数j>k的公式。cholesky分解流程图如图4所示。
根据迭代公式,需要复数乘法器完成当前列的迭代更新;需要复数乘法器和复数加法器完成右下三角矩阵的迭代更新操作。cholesky分解模块PE内部计算电路结构如图5所示。具体的流程如下:
①更新当前列,对于第n次迭代,更新从第n列开始,首先计算的是当前列的对角线元素L(n,n),公式如下,其中A(n,n)是原矩阵对角线元素的值。
接着更新第n列对角线下方的其它元素,更新公式如下:
L(:,n)=L(n,n)×A(:,n) (4)
②当前列更新完毕后,位于该列的元素将被用于右下三角矩阵的更新。n+1列至N列通过如下公式进行更新。
L(y:N,y)=A(y:N,y)-L(y,n)*×L(y∶N,n) (5)
③所有列更新完成后,将上三角元素全部置0。
整个分解过程的并行度8,第n次迭代中共需执行ceil((N-n)/PAR)次8路并行操作。为了控制方便,每次8条通路的内部运算点数相同。具体来说:
第1次并行运算,更新n+1列~n+8列的N-n点;第2次并行运算,n+9列~n+16列,N-n-8点;其余类推,图6是8路并行cholesky分解示意图。
cholesky分解完成之后,需要对L矩阵求逆,得到L的逆矩阵S。三角矩阵求逆按行进行迭代更新,当前行的元素用于当前行下方元素的更新,直到最后一行更新完成,得到下三角矩阵S。三角矩阵求逆流程图如图7所示。计算开始于第一行元素更新,因为只关注下三角矩阵,所以每一行只需要求解对角线及其左侧的元素值即可,具体流程如下:
①进行当前行的更新:假设当前更新的为第m行,将第m列数据存入一个BANK当中。首先从BANK中读出对当前第m行的对角线元素L(m,m),将它更新为倒数。
接着从中间结果BANK中读出当前行对角线左侧元素并进行更新。
invL(m,1:m-1)=L(m,1:m-1)×invL(m,m) (7)
②当一行更新完成后,该行数据被用来更新该行下方的列元素。m行下方的1至m-1列的元素依据下方公式进行更新:
invL(m+1:N,y)=invL(m+1:N,y)-invL(m,y)×invL(m+1:N,m) (8)
对m行下方第m列更新,则需要另外的公式:
invL(n+1:N,m)=-invL(m,m)×invL(m+1:N,m) (9)
最终当完成对第N行更新后,下三角矩阵求逆完成。下方列更新的并行度也是8,共需执行ceil(m/PAR)次,每次的内部运算的点数相同,具体来说:
第1次并行运算,更新1列—8列,N-m点;第2次并行运算,更新9列—16列,N-m点;以此类推,下图9是三角矩阵求逆的,下方列8路并行更新示意图。
根据上述公式,三角矩阵求逆运算模块需要具有实数除法部件,用于计算当前行对角线元素的倒数;需要具有复数乘法部件用于对当前行进行更新;需要具有复数乘加部件用于对下方列更新,运算结构如图8所示。
最后进行矩阵乘法运算。与普通矩阵相乘比,三角矩阵乘法有两个特点:一方面,参与乘法的矩阵S是下三角矩阵,对角线右上方的元素值为0,这些0与任何其它元素的乘积都为0,意味着这些零元素不需要参与计算。另一方面,由于输入矩阵A是共轭对称矩阵,它的逆矩阵A-1也是共轭对称矩阵,因此只需要求解结果矩阵A-1的下三角部分,并将其取共轭对称,即可求得相应的上三角结果矩阵。
对三角矩阵乘法来说,计算N列的结果,也需要N步。第1步首先求解第1列N个值,需要取S矩阵的1~N列值,将值取共轭,再分别与S矩阵第1列的N个值,进行乘累加操作。以输入矩阵为48阶为例,如图10所示,采取8路并行操作,具体流程如下:
①求解第1列。首先取S矩阵的1~8列,与第1列48个元素进行48阶乘累加,得到结果矩阵第1列1~8行的结果。再取9~16列的元素参与计算,在这8列中,第9列的非零元素最多,有40个,所以这一次的8路并行,只需进行40阶乘累加操作。以此类推,最后取40~48列元素,只需要做8阶乘累加。
②取2~48列值,进行乘累加操作,类似第1步。因结果矩阵按行存取,所以每次计算得到的一列结果,需要消耗一定的缓存时间。以48阶矩阵为例,最终需要5180+1275=6455cycles,单纯的计算时间5180cycles。而正常的矩阵乘法需要 才能完成,采用三角矩阵乘法算法可带来2~3倍的性能提升。
通过循环迭代的方法,用乘法和加法操作代替原来的乘累加操作,降低了运算复杂度,这使得原本复杂的地址生成变得较为简单,如图3所示,数据在BANK中以列的形式存储。BANK单元序号和地址,可以唯一确定矩阵中某个元素的存放位置;BANK单元序号和地址和单元地址从0开始计数,根据源数据在BANK中的存放方式,对于N阶源矩阵A中的元素Aij,通过公式Num_Bank=(j-1)%8求得单元序号;通过公式Addr_Bank=floor((j-1)/8)*N+i-1求得单元地址。
以cholesky分解模块为例,已知输入矩阵为N阶,正在进行第n次迭代更新,具体的源数据地址生成步骤如下:
①更新当前第n列数据:第n列数据所在的BANK单元序号为(n-1)%8,由此使能对应的BANK端口。首先读取第n列对角线元素A(n,n),其BANK单元地址为floor((n-1)/8)*N+n-1。接着取(n:N,n),将存储单元中的第n列对角线及以下元素读出,每次字节地址在对角线数的地址基础上自增0x1,直至将本列数据全部取完。
②更新右下三角元素:第1次并行计算的1~8路分别对第n+1列、第n+2列、第n+3列、第n+4列、第n+5列、第n+6列、第n+7列、第n+8列的对角线及下方元素进行数据更新操作。(n%8-1)为第n+1列元素所在的存储单元序号,floor(n/8)*N+n为第n+1列对角线数在其存储单元内的地址,对角线以下元素地址自增0x1,其余7路的地址生成方式类似。这8列更新完后,将更新第n+9~n+17列数据,以此类推直至所有的右下三角元素更新完成。
cholesky分解和三角矩阵求逆的计算结果将原位存回中间结果区,最终的结果矩阵是按行存储的。对于N阶结果矩阵R中的元素Rmn,存入BANK的单元序号为((m-1)*N+n-1)%8+1,存入BANK的地址为floor(((m-1)*N+n-1)/8)。三角矩阵乘法每一次算出一列的8行数,同时共轭结果是一行的8列数。同一列的8行数R(m,n)~R(m+7,n)所在单元序号相同,需要进行缓存。以R(m,n)为例,第一个时钟周期存入BANK号为((m-1)*N+n-1)%8+1,存入BANK的字地址floor(((m-1)*N+n-1)/8);将(m+1,n)的结果缓存一个时钟周期,第二个时钟周期存入,(m+2,n)缓存两周期,第三个时钟周期存入,其余类推。
根据上述方案进行设计验证,选取在[-1,1]和[-10,10]范围内随机共轭对称源矩阵。对32,64,128,256阶矩阵进行了结果比对与精度分析,得到的具体性能指标如图12所示。图11的时钟周期数是针对矩阵大小N=8、16、32和64和128阶给出的。
综上所述,本实施例的cholesky分解和迭代方式的任意阶矩阵求逆硬件加速系统,不仅精度满足要求,还支持矩阵阶数任意可配,资源利用率高,在高阶矩阵求逆运算中具有明显的性能优势,适用于高阶大规模的矩阵求逆运算。
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。
Claims (10)
1.一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征是包括DSP核,外部DDR存储器,AXI接口,主控制器、双DMA控制器、SRAM存储器、PE运算阵列以及矩阵求逆加速核。
2.根据权利要求1所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:该系统采用双端口的SRAM,一共包含129个BANK,每一个BANK是一块独立的存储单元,一个端口进行读的同时,另一个端口写数据;其中,BANK0~63用于PE读,AXI写源数据;BANK65~96用于PE读、写中间结果,AXI不写;BANK97~128用于PE写、AXI读结果数据;PE和AXI不同时进行读或写,最终实现存储单元的并行无冲突访存;cholesky分解和三角矩阵求逆的结果都存放在中间结果BANK中,三个子算法的存储空间共享,支持对同一个BANK同时读取和写入。
3.根据权利要求1所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:所述矩阵求逆加速核进一步包括cholesky分解运算模块、三角矩阵求逆模块、以及三角矩阵乘法模块;
其中,所述cholesky分解运算模块采用循环迭代方式分解源矩阵A:
A=L*LH
式中,A表示源矩阵,L表示下三角矩阵,LH表示源矩阵A的共轭转置矩阵;
所述三角矩阵求逆模块使用循环迭代法求解出下三角矩阵L的逆矩阵S;
所述三角矩阵乘法模块计算得到源矩阵A的逆矩阵A-1:
A-1=(S)H*S
式中,S表示下三角矩阵L的逆矩阵,(S)H表示矩阵S的共轭转置矩阵。
4.根据权利要求3所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:
所述cholesky分解运算模块由实数除法器组成1/SQRT部件,用于计算当前列对角线元素的平方根倒数;由复数乘法器完成当前列的迭代更新;由复数乘法器和复数加法器完成右下三角矩阵的迭代更新操作;
所述三角矩阵求逆运算模块由实数除法部件计算当前行对角线元素的倒数;由复数乘法部件用于当前行更新;由复数乘加部件用于下方列更新。
5.根据权利要求3所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:进行矩阵乘法时,通过减少0元素与其它行或者其它列元素进行相乘的步骤缩短计算时间;计算矩阵乘法具有复数乘累加部件;由1个复乘和3个复加部件组成一个流水乘累加单元避免流水中断。
6.根据权利要求1所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:采用8路并行计算,每次8路并行可以同时取相邻8列的数据,并且每次并行参与计算的点数相同。
7.根据权利要求2所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:根据BANK单元序号和地址唯一确定矩阵中某个元素的存放位置;BANK单元序号和单元地址从0开始计数,源数据按列依次存放在单元序号0~7的BANK中,根据源数据在BANK中的存放方式,对于N阶源矩阵A中的元素Aij,通过公式Num_Bank=(j-1)%8求得单元序号;通过公式Addr_Bank=floor((j-1)/8)*N+i-1求得单元地址。
8.根据权利要求2所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:根据寻址公式解析出数据在下三角矩阵中的单元序号和单元地址,依次从源数据所在BANK读出下三角元素参与计算,再按照矩阵一列存于一个BANK的规则,将计算结果原位存回中间结果区。
9.根据权利要求2所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于:结果矩阵按行存储,根据数据在BANK中的存放方式,对于N阶结果矩阵R中的元素Rmn,存入BANK的单元序号为((m-1)*N+n-1)%8+1,存入BANK的地址为floor(((m-1)*N+n-1)/8)。
10.根据权利要求1所述的一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统,其特征在于,包括如下加速方法:
步骤1、DSP核通过AXI接口控制对DDR指令缓冲区写入,由主控制器将配置信息读入配置寄存器中;
步骤2、判断当前矩阵求逆加速器是否空闲,若此时矩阵求逆加速器为空闲状态,则配置DMA通过AXI接口将源数据从外部DDR存储器移入SRAM存储器;
步骤3、当源数据完全存入SRAM存储器之后,矩阵求逆控制器控制计算开始;在计算期间,数据按顺序发送到PE运算阵列,参与不同类型的计算;
步骤4、SRAM存储器中的中间结果BANK用于中间结果数据的读写,结果数据存放在结果BANK中,只能由DMA读取;
步骤5、计算结束后,DMA通过AXI数据接口将结果数据从SRAM移出到DDR,完成一次完整的矩阵求逆运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010486502.5A CN111723336B (zh) | 2020-06-01 | 2020-06-01 | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010486502.5A CN111723336B (zh) | 2020-06-01 | 2020-06-01 | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723336A true CN111723336A (zh) | 2020-09-29 |
CN111723336B CN111723336B (zh) | 2023-01-24 |
Family
ID=72565737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010486502.5A Active CN111723336B (zh) | 2020-06-01 | 2020-06-01 | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723336B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112528224A (zh) * | 2020-12-28 | 2021-03-19 | 上海微波技术研究所(中国电子科技集团公司第五十研究所) | 一种矩阵特征值分解分组循环迭代流水实现方法及系统 |
CN116662730A (zh) * | 2023-08-02 | 2023-08-29 | 之江实验室 | 一种基于FPGA的Cholesky分解计算加速系统 |
CN116679988A (zh) * | 2023-08-02 | 2023-09-01 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
CN117370717A (zh) * | 2023-12-06 | 2024-01-09 | 珠海錾芯半导体有限公司 | 一种二分坐标下降的迭代优化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1098464A1 (fr) * | 1999-11-08 | 2001-05-09 | Mitsubishi Electric Information Technology Centre Europe B.V. | Procédé de détection conjointe |
CN109446478A (zh) * | 2018-10-30 | 2019-03-08 | 南京大学 | 一种基于迭代和可重构方式的复协方差矩阵计算系统 |
-
2020
- 2020-06-01 CN CN202010486502.5A patent/CN111723336B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1098464A1 (fr) * | 1999-11-08 | 2001-05-09 | Mitsubishi Electric Information Technology Centre Europe B.V. | Procédé de détection conjointe |
CN109446478A (zh) * | 2018-10-30 | 2019-03-08 | 南京大学 | 一种基于迭代和可重构方式的复协方差矩阵计算系统 |
Non-Patent Citations (2)
Title |
---|
王禹: ""基于FPGA的矩阵求逆IP核设计技术及其实验平台设计"", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
魏婵娟 等: ""一种基于Cholesky 分解的快速矩阵求逆方法设计"", 《电子设计工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112528224A (zh) * | 2020-12-28 | 2021-03-19 | 上海微波技术研究所(中国电子科技集团公司第五十研究所) | 一种矩阵特征值分解分组循环迭代流水实现方法及系统 |
CN112528224B (zh) * | 2020-12-28 | 2022-09-13 | 上海微波技术研究所(中国电子科技集团公司第五十研究所) | 一种矩阵特征值分解分组循环迭代流水实现方法及系统 |
CN116662730A (zh) * | 2023-08-02 | 2023-08-29 | 之江实验室 | 一种基于FPGA的Cholesky分解计算加速系统 |
CN116679988A (zh) * | 2023-08-02 | 2023-09-01 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
CN116662730B (zh) * | 2023-08-02 | 2023-10-20 | 之江实验室 | 一种基于FPGA的Cholesky分解计算加速系统 |
CN116679988B (zh) * | 2023-08-02 | 2023-10-27 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
CN117370717A (zh) * | 2023-12-06 | 2024-01-09 | 珠海錾芯半导体有限公司 | 一种二分坐标下降的迭代优化方法 |
CN117370717B (zh) * | 2023-12-06 | 2024-03-26 | 珠海錾芯半导体有限公司 | 一种二分坐标下降的迭代优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111723336B (zh) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111723336B (zh) | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 | |
Ramanathan et al. | Look-up table based energy efficient processing in cache support for neural network acceleration | |
Zhou et al. | Transpim: A memory-based acceleration via software-hardware co-design for transformer | |
CN100538886C (zh) | 多维数组在动态随机存取存储器上的快速读写方法和装置 | |
CN109977347B (zh) | 一种支持多模式配置的可重构fft处理器 | |
Garofalo et al. | A heterogeneous in-memory computing cluster for flexible end-to-end inference of real-world deep neural networks | |
WO2018027706A1 (zh) | Fft处理器及运算方法 | |
CN102495721A (zh) | 一种支持fft加速的simd向量处理器 | |
CN114356840A (zh) | 具有存内/近存计算模块的SoC系统 | |
US20210350846A1 (en) | Associativity-Agnostic In-Cache Computing Memory Architecture Optimized for Multiplication | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
WO2013097236A1 (zh) | 多粒度并行fft计算装置 | |
Ghasemzadeh et al. | BRDS: An FPGA-based LSTM accelerator with row-balanced dual-ratio sparsification | |
Jeong et al. | A 28nm 1.644 tflops/w floating-point computation sram macro with variable precision for deep neural network inference and training | |
US10031846B1 (en) | Transposition of two-dimensional arrays using single-buffering | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
US20230253032A1 (en) | In-memory computation device and in-memory computation method to perform multiplication operation in memory cell array according to bit orders | |
CN112989268A (zh) | 一种面向存内运算的全展开非正交布线的存算阵列设计 | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
WO2023065701A1 (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
He et al. | An LSTM acceleration engine for FPGAs based on caffe framework | |
Chen et al. | BRAMAC: Compute-in-BRAM Architectures for Multiply-Accumulate on FPGAs | |
Huang et al. | MALMM: A multi-array architecture for large-scale matrix multiplication on FPGA | |
CN113890508A (zh) | 一种批处理fir算法的硬件实现方法和硬件系统 |
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 |