当前位置: 首页 > 专利查询>浙江大学专利>正文

一种用于FPGA的并行Jacobi计算加速实现方法技术

技术编号:21833192 阅读:45 留言:0更新日期:2019-08-10 18:12
本发明专利技术公开了一种用于FPGA的并行Jacobi计算加速实现方法。n×n维矩阵的数据输入到FPGA中利用并行Jacobi计算进行旋转变换处理,处理单元初始化,对角处理单元计算旋转角度对应的符号集并输出给非对角处理单元,对角处理单元元素更新,非对角处理单元元素更新,处理单元间元素交换,在对每个处理单元的元素进行更新后,将更新后的处理单元之间的元素进行交换。本发明专利技术能使用较少的FPGA资源,提高FPGA内部计算处理性能,能够有效地提高特征值分解在FPGA上实现的效率,在实际工程中有较高的应用价值。

A Parallel Jacobi Computing Acceleration Method for FPGA

【技术实现步骤摘要】
一种用于FPGA的并行Jacobi计算加速实现方法
本专利技术属于信号处理
的一种FPGA内部数据处理方法,涉及了一种用于FPGA的并行Jacobi计算加速实现方法。
技术介绍
雷达、无线通信、图像处理等诸多领域的许多算法都需要计算矩阵的特征值。例如,特征值的计算是子空间类DOA(DirectionofArrival,到达角度)估计算法和PCA(PrincipalComponentAnalysis,主成分分析)算法的关键步骤。目前有大量计算特征值的算法,例如QR算法、LU分解算法、代数法等。代数法由于求根步骤的复杂度随矩阵维度大大上升,不适合大规模矩阵求特征值,而LU分解算法只能用于可逆矩阵求特征值。而且,尽管QR算法比串行Jacobi计算计算特征值的速度更快,但是已有学者证明Jacobi计算比QR算法更精确。Jacobi计算是通过一系列旋转将矩阵逐渐变换为一个近似对角矩阵的过程,矩阵的对角元素即矩阵特征值。此外,Jacobi计算由于对实对称矩阵进行特征值分解有其固有的并行性,使并行Jacobi计算(Jacobi计算的一种并行实现方法)在特征值分解的FPGA实现中得到了普遍应用。目前,已有一些并行Jacobi计算的加速研究,但是大多加速方法未能做到在一个CORDIC算法周期内实现并行Jacobi计算的一步。现有的近似Jacobi计算虽然可以在一个CORDIC算法周期内实现并行Jacobi计算的一步,但由于是近似旋转,总共需要的旋转次数会增加,因此效果不佳。此外,由于FPGA总LUT(查找表)资源有限,现有算法实现时均并未考虑FPGA中LUT资源的消耗量。
技术实现思路
针对上述
技术介绍
中存在的问题,本专利技术要解决的是提出了一种用于FPGA的并行Jacobi计算加速实现方法,对并行Jacobi计算方法在FPGA内部实现设计更优异的计算处理效果的方案,解决了FPGA内部数据处理较慢、资源消耗多的技术问题,达到在一个CORDIC算法周期内实现并行Jacobi计算的仅一步的目标小,且该FPGA片上资源消耗更小。为了实现上述目的,本专利技术采用以下步骤的技术方案:1)处理单元初始化n×n维矩阵的数据输入到FPGA中利用并行Jacobi计算进行旋转变换处理,并行Jacobi计算中采用CORDIC(坐标旋转数字计算)算法进行平面旋转,平面旋转中建立二维xy坐标系;FPGA(现场可编程门阵列)内分设有多个处理单元,多个处理单元阵列排布,每个处理单元与自身相邻的处理单元通过数据接口连接,进行数据交互和元素交换,将执行并行Jacobi计算的n×n维矩阵中各元素按以下公式分配到处理单元Pij中:其中,Pij表示第i行第j列的处理单元,a2i,2j表示n×n维矩阵中第2i行第2j列的元素,n表示矩阵的维度;并且,下标i=j的处理单元Pij为对角处理单元,否则为非对角处理单元;处理单元Pij中下标满足2i=2j和2i-1=2j-1的元素为对角元素,否则为非对角元素;由于n×n维矩阵为实对称矩阵,按照上述处理获得分配仅保留右上部分,左下部分和右上部分以对角线对称。2)对角处理单元计算旋转角度2θ对应的符号集并输出给非对角处理单元用以下公式迭代求出CORDIC算法旋转角度2θ对应符号集{d2θ,k},k=1,2,...,N,迭代总次数与CORDIC算法的迭代总次数相同:θ0=2θ,tan(φk-1)=2-(k-1),k=1,2,...,N其中,k表示迭代次数的序数,N表示迭代总次数,N取为FPGA所采用的数据位数;αk表示第k次迭代的第一符号参数,βk表示第k次迭代的第二符号参数,θ0表示旋转角度初始值(即2θ),θk表示经k次迭代后的剩余旋转角度,φk-1表示第k-1次迭代的角度参数,d2θ,k表示第k次迭代下旋转角度2θ对应的符号;具体地,在符号计算模块中,d2θ,k通过αk-1和βk-1的符号位进行异或运算得到(符号位相同则d2θ,k为1,符号位相反则d2θ,k为-1)。αk-1通过移位运算得到αk-12k-1,βk-1通过移位运算得到βk-12k-1。若d2θ,k为1,则αk通过αk-12k-1和βk-1进行减法运算得到,βk通过βk-12k-1和αk-1进行加法运算得到;若d2θ,k为-1,则αk通过αk-12k-1和βk-1进行加法运算得到,βk通过βk-12k-1和αk-1进行减法运算得到。迭代计算开始,与对角处理单元中的非对角元素所对应的初始旋转角度为θ,计算为:α0=2apq,β0=app-aqq其中,apq、aqp分别表示对角处理单元中初始包含的两个非对角元素,且aqp=apq,app、app分别表示对角处理单元中初始包含的对角元素;α0表示初始的第一符号参数,β0表示初始的第二符号参数;对角处理单元的对角元素app和aqq通过减法运算得到β0=app-aqq,非对角元素apq通过移位运算得到α0=2apq,设在并行Jacobi计算中,与当前对角处理单元中的非对角元素所对应的旋转角度为θ,β0和α0作为初始值送入符号集计算模块,而符号计算模块通过迭代求出旋转角度2θ对应的符号集{d2θ,k}。最后,对角处理单元将自身计算获得的旋转角度2θ对应符号集{d2θ,k}输出到与自身处于同一行和同一列的非对角处理单元;3)对角处理单元元素更新由步骤2)中每次迭代求得的d2θ,k作为CORDIC算法中第k次迭代的旋转符号,代替传统CORDIC算法每次迭代后计算旋转符号的步骤,对第一待旋转坐标(2apq,app-aqq)执行CORDIC算法以旋转角度2θ进行平面旋转;步骤2)所有迭代完成后,将最终的平面旋转结果乘以第一补偿因子,得到旋转后的y坐标,即y1=2apqsin2θ+(app-aqq)cos2θ,第一补偿因子用以下公式求出:其中,C1表示第一补偿因子;然后对对角处理单元中的对角线元素用以下公式更新,并将非对角线元素置0:其中,a'pp、a'qq表示对角处理单元中更新后的两个对角线元素,y1表示第一待旋转坐标旋转后的y轴坐标;4)非对角处理单元元素更新4.1)非对角处理单元Pij接收来自两个对角处理单元Pii、Pjj输出的符号集,表示为和分别表示第k次迭代下旋转角度2θi和旋转角度2θj对应的符号,用以下公式分别计算两个符号和从而获得了两个符号集和其中,和分别表示旋转角度θi+θj和旋转角度θi-θj对应的符号;2θi和2θj分别表示两个对角处理单元Pii、Pjj的非对角元素对应的旋转角度的二倍角;具体地,两符号集通过对每一对符号的异或运算和数据选择器确定旋转角度θl-θm的符号集,异或运算结果为1则取作为否则取0作为通过对每一对符号的同或运算和数据选择器确定旋转角度θl+θm的符号集,同或运算结果为1则取作为否则取0作为4.2)有{-1,0,1}三种取值,用以下公式计算由两个符号集和的前个符号所有可能构成的符号组合对应的第二、第三补偿因子的取值,一个符号组合是由个符号构成,以各个不同符号组合对应的第二、第三补偿因子取值建立查找表数据,以前符号中各符号绝对值为查找地址,用BlockMemory(块随机存储器)生成查找表,查找表的地址位数取数据的深度其中,C2表示为第二补偿因子,C3表示为第三补偿因子;由于CORD本文档来自技高网
...

【技术保护点】
1.一种用于FPGA的并行Jacobi计算加速实现方法,其特征在于:包括以下方面:1)处理单元初始化n×n维矩阵的数据输入到FPGA中利用并行Jacobi计算进行旋转变换处理,并行Jacobi计算中采用CORDIC算法进行平面旋转,平面旋转中建立二维xy坐标系;FPGA内分设有多个处理单元,多个处理单元阵列排布,每个处理单元与自身相邻的处理单元通过数据接口连接,进行数据交互和元素交换,将执行并行Jacobi计算的n×n维矩阵中各元素按以下公式分配到处理单元Pij中:

【技术特征摘要】
1.一种用于FPGA的并行Jacobi计算加速实现方法,其特征在于:包括以下方面:1)处理单元初始化n×n维矩阵的数据输入到FPGA中利用并行Jacobi计算进行旋转变换处理,并行Jacobi计算中采用CORDIC算法进行平面旋转,平面旋转中建立二维xy坐标系;FPGA内分设有多个处理单元,多个处理单元阵列排布,每个处理单元与自身相邻的处理单元通过数据接口连接,进行数据交互和元素交换,将执行并行Jacobi计算的n×n维矩阵中各元素按以下公式分配到处理单元Pij中:其中,Pij表示第i行第j列的处理单元,a2i,2j表示n×n维矩阵中第2i行第2j列的元素,n表示矩阵的维度;并且,下标i=j的处理单元Pij为对角处理单元,否则为非对角处理单元;处理单元Pij中下标满足2i=2j和2i-1=2j-1的元素为对角元素,否则为非对角元素;2)对角处理单元计算旋转角度2θ对应的符号集并输出给非对角处理单元用以下公式迭代求出CORDIC算法旋转角度2θ对应符号集{d2θ,k},k=1,2,...,N,迭代总次数与CORDIC算法的迭代总次数相同:其中,k表示迭代次数的序数,N表示迭代总次数,N取为FPGA所采用的数据位数;αk表示第k次迭代的第一符号参数,βk表示第k次迭代的第二符号参数,θ0表示旋转角度初始值(即2θ),θk表示经k次迭代后的剩余旋转角度,φk-1表示第k-1次迭代的角度参数,d2θ,k表示第k次迭代下旋转角度2θ对应的符号;最后,对角处理单元将自身计算获得的旋转角度2θ对应符号集{d2θ,k}输出到与自身处于同一行和同一列的非对角处理单元;3)对角处理单元元素更新由步骤2)中每次迭代求得的d2θ,k作为CORDIC算法中第k次迭代的旋转符号,对第一待旋转坐标(2apq,app-aqq)执行CORDIC算法以旋转角度2θ进行平面旋转;步骤2)所有迭代完成后,将最终的平面旋转结果乘以第一补偿因子,得到旋转后的y坐标,即y1=2apqsin2θ+(app-aqq)cos2θ,第一补偿因子用以下公式求出:其中,C1表示第一补偿因子;然后对对角处理单元中的对角线元素用以下公式更新,并将非对角线元素置0:其中,a'pp、a'qq表示对角处理单元中更新后的两个对角线元素,y1表示第一待旋转坐标旋转后的y轴坐标;4)非对角处理单元元素更新4.1)非对角处理单元Pij接收来自两个对角处理单元Pii、Pjj输出的符号集,表示为和分别表示第k次迭代下旋转角度2θi和旋转角度2θj对应的符号,用以下公式分别计算两个符号和从而获得了两个符号集和其中,和分别表示旋转角度θi+θj和旋转角度θi-θj对应的符号;2θi和2θj分别表示两个对角处理单元Pii、Pjj的非对角元素对应的旋转角度的二倍角;4.2)用以下公式计算由两个符号集和的前个符号所有可能构成的符号组合对应的第二、第三补偿因子的取值,一个符号组合是由个符号构成,以各个不同符号组合对应的第二、第三补偿因子取值建立查找表数据,以前符号中各符号绝对值为查找地址,用BlockMemory(块随机存储器)生成查找表,查找表的地址位数取数据的深度其中,C2表示为第二补偿因子,C3表示为...

【专利技术属性】
技术研发人员:史治国何倩雯刘颖吴均峰陈积明
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1