一种规模可扩展的矩阵求逆方法和装置制造方法及图纸

技术编号:38431876 阅读:14 留言:0更新日期:2023-08-11 14:19
本发明专利技术公开了一种规模可扩展的矩阵求逆方法和装置,该方法采用LU分解(L代表上三角矩阵,U代表下三角矩阵)算法进行矩阵求逆。主要包括数据输入、矩阵初始化与LU分解、存储LU分解结果、线性方程组求解、逆矩阵计算与存储以及输出逆矩阵结果等阶段。该装置用于执行该方法。本发明专利技术通过适配矩阵求逆的阶数可配置性,设计了硬件数据结构,优化了迭代求解过程,并实现了分解结果数据存储,从而提高了矩阵求逆的效率和灵活性,适用于各种大小的矩阵求逆运算场景。算场景。算场景。

【技术实现步骤摘要】
一种规模可扩展的矩阵求逆方法和装置


[0001]本专利技术涉及一种规模可扩展的矩阵求逆方法和装置。

技术介绍

[0002]矩阵求逆是计算机科学中重要的研究问题之一,应用广泛,例如信号处理、图像处理、通信系统等领域。在实际应用中,矩阵的大小及其精度需求往往是多样化的,因此,如何实现矩阵求逆的高效率、可配置性和精度控制成为了研究的难点之一。特别是对于基于深度神经网络的三维重建技术,其网络包含了矩阵求逆步骤,该步骤在计算场景中通常由中央处理器完成,缺乏并行处理,导致速度处理较慢,使矩阵求逆成为整个三维重建流程的瓶颈之一。
[0003]FPGA作为一种可编程逻辑器件,其硬件资源和并行计算能力使得它在矩阵计算中具有很大的优势。同时LU分解法因为其稳定性和高效性被广泛应用。因此,将LU分解算法应用于FPGA上实现矩阵求逆是一种具有实际意义的研究方向。但在硬件设计当中,并行度的调整灵活度较低,面对多变的矩阵规模,常规硬件设计会导致硬件利用率低、重新设计硬件工程量大等问题。

技术实现思路

[0004]专利技术目的:本专利技术旨在通过Chisel(Constructing Hardware In a Scala Embedded Language,基于Scala嵌入式语言构建硬件,其中Scala是一门多范式编程语言)语言构建可修改定点计算位宽以及可配置矩阵阶数的矩阵求逆模块,以满足不同应用场景下对高性能矩阵求逆计算的需求。特别是对于基于深度神经网络的三维重建技术其中的矩阵求逆计算步骤。
[0005]本专利技术第一方面公开一种规模可扩展的矩阵求逆方法,包括以下步骤:
[0006]对待处理的矩阵进行并行LU(上下三角矩阵)分解,获得L(上三角)矩阵,U(下三角)矩阵和P(换行信息)向量;
[0007]对所述L矩阵,U矩阵,P向量进行存储;
[0008]对所述LU矩阵进行并行的正向与反向迭代线性方程组求解;
[0009]对求解之后的矩阵,根据P向量进行顺序的调整;
[0010]对顺序调整后的矩阵,按列顺序存入最终逆矩阵结果存储模块。
[0011]可选地,待进行矩阵求逆处理的矩阵必须是可逆矩阵,且矩阵的阶数大于等于2。、
[0012]可选地,可按照以下顺序进行矩阵的预存储:
[0013]按行存储,所述按行存储为按行优先顺序将矩阵元素依次放入存储单元作为输入;
[0014]按列存储,所述按列存储为按列优先顺序将矩阵元素依次放入存储单元作为输入。
[0015]可选地,所述将所述不同顺序预存储的矩阵进行求逆时,输出单元的存储顺序将
对应发生变化,包括:
[0016]如果通过按行存储将输入放入存储单元,输出时按列的优先顺序进行读取;
[0017]如果通过按列存储将输入放入存储单元,输出时按行的优先顺序进行读取;
[0018]有益效果:本专利技术提出了一种高并行度的矩阵阶数可修的改矩阵求逆装置。与现有技术方案相比,本设计以并行方式加速阶数可任意调整的矩阵求逆计算,部署相对于设计时固定并行度的装置更便捷,相对于串行基于循环处理的装置吞吐率更高。
附图说明
[0019]为了更清楚地说明本专利技术的技术方案,下面对实施例中所需要使用的附图作简单介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为本专利技术提供的一种规模可扩展的矩阵求逆方法的流程图;
[0021]图2为本专利技术提供的一种规模可扩展的矩阵求逆方法示例图;
[0022]图3为本专利技术提供的一种规模可扩展的矩阵求逆装置结构示例图。
具体实施方式
[0023]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以介绍本申请,并不用于限定本申请。
[0024]本申请第一实施例公开了一种规模可扩展的矩阵求逆装置,用于加速基于深度神经网络的三维重建技术中矩阵求逆步骤的执行,其中所述待处理的矩阵为A,阶数为N,本实施例中所述矩阵为实可逆矩阵,所述矩阵阶数设置为3。
[0025]参见图1,所述规模可扩展的矩阵求逆方法包括以下步骤:
[0026]步骤S1,对待处理矩阵进行LU分解,获取LU两个矩阵,以下为3阶矩阵LU分解含义,包含下标的“a,l,u”分别代表“A,L,U”矩阵对应位置的元素:
[0027][0028]所述基于并行计算的N阶LU分解有N+1个阶段,其中第1个阶段的执行与存储阶段同时完成,因此所述LU分解需要额外N个周期完成,本实施例中所述3阶矩阵的并行LU分解的4个阶段为以下形式,其中“/”代表定点实数除法:
[0029]u
11
=a
11
,u
12
=a
12
,u
13
=a
13
,l
11
=l
22
=l
33
,l
21
=a
21
/a
11
,l
31
=a
31
/a
11

[0030]u
22
=a
22

l
21
u
12
,u
22
=a
22

l
21
u
12
,u
23
=a
23

l
21
u
13

[0031]l
31
=(a
31

l
31
u
12
)/u
22

[0032]u
33
=a
33

l
31
u
13

l
32
u
23

[0033]步骤S2,将所述分解所得LU矩阵保存进相应的存储单元;
[0034]步骤S3,将所述LU矩阵分别进行正向求解和反向求解,所述正向求解为以下形式,其中y向量为求解目标,包含下标的y代表向量对应位置元素,以下所述求解目标为最终结果第一列的正向求解结果,即列号i=1,第i列的求解结果需要将等式右边向量的1放置到
第i行,其余元素为0:
[0035][0036]y1=1;
[0037]y2=0

l
21
y1;
[0038]y3=0

l
31
y1‑
l
32
y2;
[0039]所述反向求解为以下形式,其中x向量为求解目标,包含下标的x代本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于规模可扩展的矩阵求逆方法,其特征在于,对待处理的矩阵进行并行LU(上下三角矩阵)分解,获得L(上三角)矩阵,U(下三角)矩阵和P(换行信息)向量;对所述L矩阵,U矩阵,P向量进行存储;对所述LU矩阵进行并行的正向与反向迭代线性方程组求解;对求解之后的矩阵,根据P向量进行顺序的调整;对顺序调整后的矩阵,按列顺序存入最终逆矩阵结果存储模块。2.根据权利要求1所述的矩阵LU分解方法,其特征在于,基于并行设计的高斯消元迭代实现LU分解,所述实现方法包括:采用Chisel(ConstructingHardwareInaScalaEmbeddedLanguage,基于Scala嵌入式语言构建硬件)模块中的Bundle(打包,一种Chisel数据结构形式)类数据结构集成模块的输入输出端口;配置数据流动及搭建硬件逻辑运算方式以完成算法的功能需求;同时保证硬件迭代更新过程中矩阵运算中间结果的正确覆盖与缓存;所述LU分解的并行层级与矩阵阶数N相同。3.根据权利要求2所述的一种数据结构,其特征在于,通过模块内部例化的计数器实现输入行数的记录及状态跳转,以便于矩阵初始化、迭代求解和存储子步骤的执行。4.根据权利要求1所述的一种用于线性方程组求解的模块,其特征在于,设计正向与反向迭代求解模块,...

【专利技术属性】
技术研发人员:王中风施禹伯
申请(专利权)人:南京风兴科技有限公司
类型:发明
国别省市:

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

1