CN106021188B - 浮点矩阵求逆的并行硬件架构和并行计算方法 - Google Patents
浮点矩阵求逆的并行硬件架构和并行计算方法 Download PDFInfo
- Publication number
- CN106021188B CN106021188B CN201610311399.4A CN201610311399A CN106021188B CN 106021188 B CN106021188 B CN 106021188B CN 201610311399 A CN201610311399 A CN 201610311399A CN 106021188 B CN106021188 B CN 106021188B
- Authority
- CN
- China
- Prior art keywords
- matrix
- row
- memory
- pivot
- data
- 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
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本发明实施例公开了浮点矩阵求逆的并行硬件架构,用于解决现有矩阵运算通过硬件实现时矩阵维数固定的问题。本发明实施例中一种浮点矩阵求逆的并行硬件架构包括:矩阵写入模块,用于将增广矩阵的矩阵数据写入第一存储器和第二存储器中,第一存储器和第二存储器为矩阵数据动态分配存储空间;初始主元定位模块,用于定位增广矩阵的初始主元行;行交换模块,用于将增广矩阵的首行与主元行进行交换;行消除模块,用于进行归一化和行消除计算,并定位下一主元行;触发模块,用于反复交替触发行交换模块和行消除模块,直到第一存储器中存储的待求逆矩阵成为单位矩阵时,输出第二存储器中的矩阵数据。本发明实施例还提供浮点矩阵求逆的并行计算方法。
Description
技术领域
本发明涉及数字电路领域,尤其涉及浮点矩阵求逆的并行硬件架构和并行计算方法。
背景技术
矩阵运算是科学计算领域中的一个重要方面,科学计算中的核心问题往往是求解一系列大型线性方程组,这些线性方程组的求解是解决整个问题的基础和核心,其计算量占整个系统计算量的比重很高,而引入矩阵理论来处理和解决科学研究和工程技术上的方程组求解问题已经很普遍,不仅为矩阵理论和方法开辟了广阔的研究前景,也使科学与工程技术的研究发生新的变化,开拓新的研究途径。矩阵运算已成为众多学科领域的数学工具,它不仅在数值分析、最优化方法、数学模型等数学分支上有极其重要的应用,还在信号处理、图像处理、通信技术等科学领域中广泛应用。矩阵求逆是矩阵运算中重要的运算,如何有效的完成矩阵求逆也是数学领域的热点研究。
目前大部分矩阵运算都是利用软件来实现,但是随着矩阵维数的增长,软件处理的速度也会大幅度变慢。矩阵运算的硬件实现能够充分发挥硬件的速度和并行性,目前公开的设计中大部分都是固定维数的矩阵运算,尚无法完成任意维矩阵的硬件实现,尤其是大规模的矩阵求逆的硬件设计。
发明内容
本发明实施例提供了浮点矩阵求逆的并行硬件架构和并行计算方法,能够解决现有矩阵运算通过硬件实现时矩阵维数固定的问题。
本发明实施例提供的一种浮点矩阵求逆的并行硬件架构,包括:
矩阵写入模块,用于将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,所述第一存储器中写入所述增广矩阵中的待求逆矩阵,所述第二存储器中写入所述增广矩阵中的单位矩阵,所述第一存储器和第二存储器为所述矩阵数据动态分配存储空间;
初始主元定位模块,用于定位所述增广矩阵的初始主元行;
行交换模块,用于将所述增广矩阵的首行与主元行进行交换,第一次交换时,所述主元行为所述初始主元行;
行消除模块,用于对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行;
触发模块,用于反复交替触发所述行交换模块和行消除模块,直到所述第一存储器中存储的所述待求逆矩阵成为单位矩阵时,输出所述第二存储器中的矩阵数据。
可选地,还包括动态存储分配模块,用于在所述矩阵写入模块将增广矩阵的矩阵数据写入第一存储器和第二存储器时,为所述矩阵数据动态分配存储空间;
所述动态存储分配模块包括:
行分配单元,用于根据所述矩阵数据的大小将存储空间划分为m个离散块,每块所述离散块存储一行矩阵数据,所述矩阵数据的大小为m*n;
列分配单元,用于将每块所述离散块划分为个行地址空间,每个所述行地址空间存储Dp个浮点数,Dp等于运算的并行度。
可选地,所述并行硬件架构还包括:
存储重分配模块,用于若检测发现运算的并行度发生改变,则获取改变后的并行度,并重新为所述矩阵数据动态分配存储空间。
可选地,所述初始主元定位模块包括:
行首数据定位单元,用于在写入所述增广矩阵的矩阵数据时,定位所述增广矩阵每一行的首数据;
主元行确定单元,用于比较每一行的所述首数据,确定所述首数据最大的所述增广矩阵的所在行为初始主元行。
可选地,所述行消除模块包括:
归一化单元,用于对行交换后的所述增广矩阵的主元行进行归一化;
缓存单元,用于将归一化后的所述主元行的元素与主元所在列的元素分别缓存在两个第三存储器中;
行消除计算单元,用于对所述主元行以外的所有行进行行消除计算;
主元行重定位单元,用于重新定位行消除计算后的所述增广矩阵的主元行。
本发明实施例提供的一种浮点矩阵求逆的并行计算方法,包括:
步骤一、将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,所述第一存储器中写入所述增广矩阵中的待求逆矩阵,所述第二存储器中写入所述增广矩阵中的单位矩阵,所述第一存储器和第二存储器为所述矩阵数据动态分配存储空间;
步骤二、定位所述增广矩阵的初始主元行;
步骤三、将所述增广矩阵的首行与主元行进行交换,第一次交换时,所述主元行为所述初始主元行;
步骤四、对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行;
步骤五、反复交替执行所述步骤三和步骤四,直到所述第一存储器中存储的所述待求逆矩阵成为单位矩阵时,输出所述第二存储器中的矩阵数据。
可选地,将增广矩阵的矩阵数据写入第一存储器和第二存储器时,为所述矩阵数据动态分配存储空间的方法具体包括:
根据所述矩阵数据的大小将存储空间划分为m个离散块,每块所述离散块存储一行矩阵数据,所述矩阵数据的大小为m*n;
将每块所述离散块划分为个行地址空间,每个所述行地址空间存储Dp个浮点数,Dp等于运算的并行度。
可选地,所述并行计算方法还包括:
若检测发现运算的并行度发生改变,则获取改变后的并行度,并重新为所述矩阵数据动态分配存储空间。
可选地,所述定位所述增广矩阵的初始主元行具体包括:
在写入所述增广矩阵的矩阵数据时,定位所述增广矩阵每一行的首数据;
比较每一行的所述首数据,确定所述首数据最大的所述增广矩阵的所在行为初始主元行。
可选地,对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行具体包括:
对行交换后的所述增广矩阵的主元行进行归一化;
将归一化后的所述主元行的元素与主元所在列的元素分别缓存在两个第三存储器中;
对所述主元行以外的所有行进行行消除计算;
重新定位行消除计算后的所述增广矩阵的主元行。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,一种浮点矩阵求逆的并行硬件架构包括:矩阵写入模块,用于将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,所述第一存储器中写入所述增广矩阵中的待求逆矩阵,所述第二存储器中写入所述增广矩阵中的单位矩阵,所述第一存储器和第二存储器为所述矩阵数据动态分配存储空间;初始主元定位模块,用于定位所述增广矩阵的初始主元行;行交换模块,用于将所述增广矩阵的首行与主元行进行交换,第一次交换时,所述主元行为所述初始主元行;行消除模块,用于对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行;触发模块,用于反复交替触发所述行交换模块和行消除模块,直到所述第一存储器中存储的所述待求逆矩阵成为单位矩阵时,输出所述第二存储器中的矩阵数据。在本发明实施例中,通过为矩阵数据动态分配存储空间,所述并行硬件构架适用任意维数的矩阵求逆,可以满足大规模的矩阵求逆要求,在不同维数的矩阵求逆之间无需更改硬件设置。同时,配合并行处理方式,可以实现任意维度矩阵的求逆处理,提高求逆运算的速度。
附图说明
图1为本发明实施例中一种浮点矩阵求逆的并行计算方法一个实施例流程图;
图2为本发明实施例中一种浮点矩阵求逆的并行计算方法另一个实施例流程图;
图3为本发明实施例中动态存储分配算法的原理示意图;
图4为本发明实施例中一种浮点矩阵求逆的并行硬件架构一个实施例结构图;
图5为本发明实施例中一种浮点矩阵求逆的并行硬件架构另一个实施例结构图;
图6为本发明的一种浮点矩阵求逆的并行硬件架构一个应用场景下的结构示意图;
图7为本发明的一种浮点矩阵求逆的并行硬件架构的行消除模块一个应用场景下的原理示意图。
具体实施方式
本发明实施例提供了浮点矩阵求逆的并行硬件架构和并行计算方法,用于解决现有矩阵运算通过硬件实现时矩阵维数固定的问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中一种浮点矩阵求逆的并行计算方法一个实施例包括:
101、将增广矩阵的矩阵数据写入第一存储器和第二存储器中;
首先,将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,该第一存储器中写入该增广矩阵中的待求逆矩阵,该第二存储器中写入该增广矩阵中的单位矩阵,该第一存储器和第二存储器为该矩阵数据动态分配存储空间。
102、定位该增广矩阵的初始主元行;
在将增广矩阵的矩阵数据写入第一存储器和第二存储器中之后,可以定位该增广矩阵的初始主元行。
103、将该增广矩阵的首行与主元行进行交换;
在定位该增广矩阵的初始主元行之后,可以将该增广矩阵的首行与主元行进行交换,第一次交换时,该主元行为该初始主元行。
104、对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行;
在将该增广矩阵的首行与主元行进行交换之后,可以对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行。
105、反复交替执行步骤103和步骤104,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。
反复交替执行步骤103和步骤104,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。
本实施例中,首先,将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,该第一存储器中写入该增广矩阵中的待求逆矩阵,该第二存储器中写入该增广矩阵中的单位矩阵,该第一存储器和第二存储器为该矩阵数据动态分配存储空间;然后,定位该增广矩阵的初始主元行;接着,将该增广矩阵的首行与主元行进行交换,第一次交换时,该主元行为该初始主元行;再之,对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行;最后,反复交替执行该步骤三和步骤四,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。在本实施例中,通过为矩阵数据动态分配存储空间,该并行计算方法适用任意维数的矩阵求逆,可以满足大规模的矩阵求逆要求,在不同维数的矩阵求逆之间无需更改硬件设置。
为便于理解,下面对本发明实施例中的一种浮点矩阵求逆的并行计算方法进行详细描述,请参阅图2,本发明实施例中一种浮点矩阵求逆的并行计算方法另一个实施例包括:
201、将增广矩阵的矩阵数据写入第一存储器和第二存储器中;
首先,将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,该第一存储器中写入该增广矩阵中的待求逆矩阵,该第二存储器中写入该增广矩阵中的单位矩阵,该第一存储器和第二存储器为该矩阵数据动态分配存储空间。
需要说明的是,将增广矩阵的矩阵数据写入第一存储器和第二存储器时,为该矩阵数据动态分配存储空间的方法具体包括:
1、根据该矩阵数据的大小将存储空间划分为m个离散块,每块该离散块存储一行矩阵数据,该矩阵数据的大小为m*n;
2、将每块该离散块划分为个行地址空间,每个该行地址空间存储Dp个浮点数,Dp等于运算的并行度,表示向上取整n/Dp的结果。
如图3所示,将一个存储器的空间划分为m个矩阵行空间(也即离散块),然后每个矩阵行空间又被划分为个行地址空间,其中每个行地址空间存储Dp个浮点数(数据),从而每个矩阵行空间存储n个浮点数。
另外,为了保证动态分配的存储空间与运算的并行度保持匹配,存储空间分配可以根据并行度实时调整:若检测发现运算的并行度发生改变,则获取改变后的并行度,并重新为该矩阵数据动态分配存储空间。
202、在写入该增广矩阵的矩阵数据时,定位该增广矩阵每一行的首数据;
为了定位初始主元行,可以在写入该增广矩阵的矩阵数据时,定位该增广矩阵每一行的首数据。
203、比较每一行的该首数据,确定该首数据最大的该增广矩阵的所在行为初始主元行;
在定位该增广矩阵每一行的首数据之后,可以比较每一行的该首数据,确定该首数据最大的该增广矩阵的所在行为初始主元行。例如可以是,在数据写入时定位每一行的首数据,每两行之间进行大小比较并存储较大的数据,当写入结束后其存储的即为最大的首数据,从而可以确定最大首数据对应的行为初始主元行。
204、将该增广矩阵的首行与主元行进行交换;
在确定初始主元行或定位下一主元行(见步骤205)之后,可以将该增广矩阵的首行与主元行进行交换,可以理解的是,第一次交换时,该主元行为该初始主元行。
205、对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行;
在将该增广矩阵的首行与主元行进行交换之后,可以对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行。
需要说明的是,步骤205具体可以包括:
A、对行交换后的该增广矩阵的主元行进行归一化:举例说明,增广矩阵为[A|I],方阵为待求逆矩阵,aij代表第i行第j列元素,I为n×n单位矩阵,p为主元行数,j为列元素标号,k为迭代次数,首先计算出主元的倒数后将主元行元素与倒数一一相乘,这样尽可能避免了除法操作;
B、将归一化后的该主元行的元素与主元所在列的元素分别缓存在两个第三存储器中;
C、对该主元行以外的所有行进行行消除计算:
Dp、重新定位行消除计算后的该增广矩阵的主元行。
归一化和消除操作为纯流水线设计,因为步骤C中,分别来自三个存储器,所以可以同时进行运算(即并行计算)。实际上每个位置的数有Dp个,采用水平扫描操作,即同一行Dp个相邻元素参与运算,直到所有元素完成运算。
206、反复交替执行该步骤三和步骤四,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。
反复交替执行该步骤三和步骤四,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。由高斯-约当部分主元消除法(GaussJordan Elimination with Partial Pivoting)的原理可知,开始时,第一存储器存储待求逆矩阵,第二存储器存储单位矩阵,在进行求逆运算后,当原待求逆矩阵成为单位矩阵后,第二存储器中存储的单位矩阵即为待求逆矩阵的逆矩阵,输出该第二存储器中的矩阵数据即输出所需的逆矩阵。需要说明的是,所述存储待求逆矩阵和单位矩阵的存储器不是固定的,当待求逆矩阵成为单位矩阵后,下一轮存储器交替转换,由另一个存储器来存放待求逆矩阵。
上面主要描述了一种浮点矩阵求逆的并行计算方法,下面将对一种浮点矩阵求逆的并行硬件架构进行详细描述,请参阅图4,本发明实施例中一种浮点矩阵求逆的并行硬件架构一个实施例包括:
矩阵写入模块401,用于将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,该第一存储器中写入该增广矩阵中的待求逆矩阵,该第二存储器中写入该增广矩阵中的单位矩阵,该第一存储器和第二存储器为该矩阵数据动态分配存储空间;
初始主元定位模块402,用于定位该增广矩阵的初始主元行;
行交换模块403,用于将该增广矩阵的首行与主元行进行交换,第一次交换时,该主元行为该初始主元行;
行消除模块404,用于对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行;
触发模块405,用于反复交替触发该行交换模块403和行消除模块404,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。
本实施例中,矩阵写入模块401将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,该第一存储器中写入该增广矩阵中的待求逆矩阵,该第二存储器中写入该增广矩阵中的单位矩阵,该第一存储器和第二存储器为该矩阵数据动态分配存储空间;初始主元定位模块402定位该增广矩阵的初始主元行;行交换模块403将该增广矩阵的首行与主元行进行交换,第一次交换时,该主元行为该初始主元行;行消除模块404对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行;触发模块反复交替触发该行交换模块403和行消除模块404,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。在本实施例中,通过为矩阵数据动态分配存储空间,该并行硬件构架适用任意维数的矩阵求逆,可以满足大规模的矩阵求逆要求,在不同维数的矩阵求逆之间无需更改硬件设置。
为便于理解,下面对本发明实施例中的一种浮点矩阵求逆的并行硬件架构进行详细描述,请参阅图5,本发明实施例中一种浮点矩阵求逆的并行硬件架构另一个实施例包括:
矩阵写入模块501,用于将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,该第一存储器中写入该增广矩阵中的待求逆矩阵,该第二存储器中写入该增广矩阵中的单位矩阵,该第一存储器和第二存储器为该矩阵数据动态分配存储空间;
初始主元定位模块502,用于定位该增广矩阵的初始主元行;
行交换模块503,用于将该增广矩阵的首行与主元行进行交换,第一次交换时,该主元行为该初始主元行;
行消除模块504,用于对行交换后的该增广矩阵进行归一化和行消除计算,并定位下一主元行;
触发模块505,用于反复交替触发该行交换模块503和行消除模块504,直到该第一存储器中存储的该待求逆矩阵成为单位矩阵时,输出该第二存储器中的矩阵数据。
本实施例中,该并行硬件架构还包括动态存储分配模块506,用于在该矩阵写入模块将增广矩阵的矩阵数据写入第一存储器和第二存储器时,为该矩阵数据动态分配存储空间;
该动态存储分配模块506包括:
行分配单元5061,用于根据该矩阵数据的大小将存储空间划分为m个离散块,每块该离散块存储一行矩阵数据,该矩阵数据的大小为m*n;
列分配单元5062,用于将每块该离散块划分为个行地址空间,每个该行地址空间存储Dp个浮点数,Dp等于运算的并行度。
本实施例中,该并行硬件架构还包括:
存储重分配模块507,用于若检测发现运算的并行度发生改变,则获取改变后的并行度,并重新为该矩阵数据动态分配存储空间。
本实施例中,该初始主元定位模块502包括:
行首数据定位单元5021,用于在写入该增广矩阵的矩阵数据时,定位该增广矩阵每一行的首数据;
主元行确定单元5022,用于比较每一行的该首数据,确定该首数据最大的该增广矩阵的所在行为初始主元行。
本实施例中,该行消除模块504包括:
归一化单元5041,用于对行交换后的该增广矩阵的主元行进行归一化;
缓存单元5042,用于将归一化后的该主元行的元素与主元所在列的元素分别缓存在两个第三存储器中;
行消除计算单元5043,用于对该主元行以外的所有行进行行消除计算;
主元行重定位单元5044,用于重新定位行消除计算后的该增广矩阵的主元行。
需要说明的是,对于本实施例中的行消除模块504,在具体一应用场景下,如图7所示,归一化和消除操可以作为纯流水线设计,因为在行消除计算过程中,分别来自三个存储器(如图7中的归一化主元存储器、主元列存储器和矩阵存储器),所以可以同时通过可扩展浮点运算单元进行运算(即并行计算),运算后通过比较器比较重新定位主元行。实际上每个位置的数有Dp个,采用水平扫描操作,即同一行Dp个相邻元素参与运算,直到所有元素完成运算。
为便于理解,一个应用场景中的浮点矩阵求逆的并行硬件架构如图6所示。该并行硬件架构可以封装有5个接口IO信号:
1、矩阵大小:指示矩阵的规模。
2、写地址:初始时写入矩阵数据的存储地址。
3、写数据:初始时写入存储器的一个地址空间的数据。
4、读地址:逆运算完成后读出矩阵数据的存储地址。
5、读数据:逆运算完成后读出存储器的一个地址空间的数据。
此并行硬件架构支持矩阵规模大小可变,可以进行任意大小的矩阵求逆运算,唯一的限制为第一存储器和第二存储器的容量和资源大小。该并行硬件架构中的运算模块可以采用多浮点运算单元并行配置,运算单元数量可以扩展,支持不同并行度设计,加速矩阵运算。如并行度Dp=4时,同时有四个数据同时进行运算。存储器(第一存储器、第二存储器或第三存储器等)的存储空间分配可以根据并行度实时调整,存储器中内嵌如图3所示原理的动态存储分配算法。
所述硬件架构在FPGA进行仿真验证,分别设置并行度Dp为4,8,16,32,最大支持矩阵大小为256×256,最大时钟工作频率分别为208MHz,222MHz,218MHz,169MHz。完成矩阵求逆时钟数估算为:n为方阵的大小,计算复杂度由O(n3)减少为O(n3/Dp)。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种浮点矩阵求逆的并行硬件架构,其特征在于,包括:
矩阵写入模块,用于将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,所述第一存储器中写入所述增广矩阵中的待求逆矩阵,所述第二存储器中写入所述增广矩阵中的单位矩阵,所述第一存储器和第二存储器为所述矩阵数据动态分配存储空间;
初始主元定位模块,用于定位所述增广矩阵的初始主元行;
行交换模块,用于将所述增广矩阵的首行与主元行进行交换,第一次交换时,所述主元行为所述初始主元行;
行消除模块,用于对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行;
触发模块,用于反复交替触发所述行交换模块和行消除模块,直到所述第一存储器中存储的所述待求逆矩阵成为单位矩阵时,输出所述第二存储器中的矩阵数据;
还包括动态存储分配模块,用于在所述矩阵写入模块将增广矩阵的矩阵数据写入第一存储器和第二存储器时,为所述矩阵数据动态分配存储空间;
所述动态存储分配模块包括:
行分配单元,用于根据所述矩阵数据的大小将存储空间划分为m个离散块,每块所述离散块存储一行矩阵数据,所述矩阵数据的大小为m*n;
列分配单元,用于将每块所述离散块划分为个行地址空间,每个所述行地址空间存储Dp个浮点数,Dp等于运算的并行度。
2.根据权利要求1所述的并行硬件架构,其特征在于,所述并行硬件架构还包括:
存储重分配模块,用于若检测发现运算的并行度发生改变,则获取改变后的并行度,并重新为所述矩阵数据动态分配存储空间。
3.根据权利要求1所述的并行硬件架构,其特征在于,所述初始主元定位模块包括:
行首数据定位单元,用于在写入所述增广矩阵的矩阵数据时,定位所述增广矩阵每一行的首数据;
主元行确定单元,用于比较每一行的所述首数据,确定所述首数据最大的所述增广矩阵的所在行为初始主元行。
4.根据权利要求1所述的并行硬件架构,其特征在于,所述行消除模块包括:
归一化单元,用于对行交换后的所述增广矩阵的主元行进行归一化;
缓存单元,用于将归一化后的所述主元行的元素与主元所在列的元素分别缓存在两个第三存储器中;
行消除计算单元,用于对所述主元行以外的所有行进行行消除计算;
主元行重定位单元,用于重新定位行消除计算后的所述增广矩阵的主元行。
5.一种浮点矩阵求逆的并行计算方法,其特征在于,包括:
步骤一、将增广矩阵的矩阵数据写入第一存储器和第二存储器中,其中,所述第一存储器中写入所述增广矩阵中的待求逆矩阵,所述第二存储器中写入所述增广矩阵中的单位矩阵,所述第一存储器和第二存储器为所述矩阵数据动态分配存储空间;
步骤二、定位所述增广矩阵的初始主元行;
步骤三、将所述增广矩阵的首行与主元行进行交换,第一次交换时,所述主元行为所述初始主元行;
步骤四、对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行;
步骤五、反复交替执行所述步骤三和步骤四,直到所述第一存储器中存储的所述待求逆矩阵成为单位矩阵时,输出所述第二存储器中的矩阵数据;
将增广矩阵的矩阵数据写入第一存储器和第二存储器时,为所述矩阵数据动态分配存储空间的方法具体包括:
根据所述矩阵数据的大小将存储空间划分为m个离散块,每块所述离散块存储一行矩阵数据,所述矩阵数据的大小为m*n;
将每块所述离散块划分为个行地址空间,每个所述行地址空间存储Dp个浮点数,Dp等于运算的并行度。
6.根据权利要求5所述的并行计算方法,其特征在于,所述并行计算方法还包括:
若检测发现运算的并行度发生改变,则获取改变后的并行度,并重新为所述矩阵数据动态分配存储空间。
7.根据权利要求5所述的并行计算方法,其特征在于,所述定位所述增广矩阵的初始主元行具体包括:
在写入所述增广矩阵的矩阵数据时,定位所述增广矩阵每一行的首数据;
比较每一行的所述首数据,确定所述首数据最大的所述增广矩阵的所在行为初始主元行。
8.根据权利要求5所述的并行计算方法,其特征在于,对行交换后的所述增广矩阵进行归一化和行消除计算,并定位下一主元行具体包括:
对行交换后的所述增广矩阵的主元行进行归一化;
将归一化后的所述主元行的元素与主元所在列的元素分别缓存在两个第三存储器中;
对所述主元行以外的所有行进行行消除计算;
重新定位行消除计算后的所述增广矩阵的主元行。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610311399.4A CN106021188B (zh) | 2016-05-11 | 2016-05-11 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
PCT/CN2017/083682 WO2017193922A1 (zh) | 2016-05-11 | 2017-05-10 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610311399.4A CN106021188B (zh) | 2016-05-11 | 2016-05-11 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021188A CN106021188A (zh) | 2016-10-12 |
CN106021188B true CN106021188B (zh) | 2019-04-12 |
Family
ID=57099190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610311399.4A Active CN106021188B (zh) | 2016-05-11 | 2016-05-11 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106021188B (zh) |
WO (1) | WO2017193922A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021188B (zh) * | 2016-05-11 | 2019-04-12 | 广州广电运通金融电子股份有限公司 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
US10909447B2 (en) * | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
CN109558567B (zh) * | 2018-11-06 | 2020-08-11 | 海南大学 | 自共轭矩阵的上三角部分存储装置和并行读取方法 |
CN110377875B (zh) * | 2019-07-16 | 2024-01-16 | 广东省新一代通信与网络创新研究院 | 矩阵求逆方法、装置、设备及计算机可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239280A (zh) * | 2014-09-16 | 2014-12-24 | 南昌大学 | 一种快速求解电力系统节点阻抗矩阵的方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631761B (zh) * | 2012-08-29 | 2018-02-27 | 睿励科学仪器(上海)有限公司 | 并行处理架构进行矩阵运算并用于严格波耦合分析的方法 |
US9001924B1 (en) * | 2013-02-01 | 2015-04-07 | Xilinx, Inc. | Matrix inversion |
CN103678257B (zh) * | 2013-12-20 | 2016-09-28 | 上海交通大学 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
CN104360986B (zh) * | 2014-11-06 | 2017-07-25 | 江苏中兴微通信息科技有限公司 | 一种并行化矩阵求逆硬件装置的实现方法 |
CN104572588B (zh) * | 2014-12-23 | 2018-10-23 | 中国电子科技集团公司第三十八研究所 | 矩阵求逆处理方法和装置 |
CN105426345A (zh) * | 2015-12-25 | 2016-03-23 | 南京大学 | 一种矩阵求逆运算方法 |
CN105701068B (zh) * | 2016-02-19 | 2018-06-19 | 南京大学 | 基于分时复用技术的cholesky矩阵求逆系统 |
CN106021188B (zh) * | 2016-05-11 | 2019-04-12 | 广州广电运通金融电子股份有限公司 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
-
2016
- 2016-05-11 CN CN201610311399.4A patent/CN106021188B/zh active Active
-
2017
- 2017-05-10 WO PCT/CN2017/083682 patent/WO2017193922A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239280A (zh) * | 2014-09-16 | 2014-12-24 | 南昌大学 | 一种快速求解电力系统节点阻抗矩阵的方法 |
Non-Patent Citations (1)
Title |
---|
GPU并行技术在矩阵运算及正则模式分析中的应用;第6期;《中国优秀硕士论文全文数据库(信息科技辑)》;20160615(第6期);第2.2-2.3节 |
Also Published As
Publication number | Publication date |
---|---|
WO2017193922A1 (zh) | 2017-11-16 |
CN106021188A (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021188B (zh) | 浮点矩阵求逆的并行硬件架构和并行计算方法 | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
CN109117184A (zh) | 人工智能处理器及使用处理器执行平面旋转指令的方法 | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
CN101727653B (zh) | 一种基于图形处理器的多组分系统离散模拟计算方法 | |
CN102279386B (zh) | 基于fpga的sar成像信号处理数据转置方法 | |
CN103440163B (zh) | 使用gpu并行实现的基于pic模型的加速器仿真方法 | |
CN106940815A (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN106990940A (zh) | 一种向量计算装置 | |
CN111124675A (zh) | 一种面向图计算的异构存内计算设备及其运行方法 | |
CN109726441B (zh) | 体和面混合gpu并行的计算电磁学dgtd方法 | |
CN108710505A (zh) | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 | |
CN108021429A (zh) | 一种基于numa架构的虚拟机内存及网卡资源亲和度计算方法 | |
Han et al. | A novel ReRAM-based processing-in-memory architecture for graph computing | |
CN104679670A (zh) | 一种面向fft和fir的共享数据缓存结构及管理方法 | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
Wang et al. | FP-AMR: A Reconfigurable Fabric Framework for Adaptive Mesh Refinement Applications | |
RU2294561C2 (ru) | Устройство аппаратной реализации вероятностных генетических алгоритмов | |
CN101236488B (zh) | 协同分布式的处理方法及装置 | |
JP5767576B2 (ja) | システム同定のための行列格納方法、プログラム及びシステム | |
Amador et al. | CUDA-based linear solvers for stable fluids | |
CN105608341B (zh) | 基于动态数据划分和冲突消解的高通量药物虚拟筛选方法 | |
Zheng et al. | Accelerating biological sequence alignment algorithm on gpu with cuda | |
CN102981798A (zh) | 基于fpga的浮点独立源分析算法的电路结构 | |
CN109558567B (zh) | 自共轭矩阵的上三角部分存储装置和并行读取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |