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

一种用于矩阵求逆和矩阵乘法的处理器制造技术

技术编号:38220777 阅读:12 留言:0更新日期:2023-07-25 17:52
本发明专利技术提供了一种用于矩阵求逆和矩阵乘法的处理器,包括处理单元PU阵列、除法器阵列、存储器和有限状态机;所述处理单元PU阵列用于进行矩阵乘法运算和矩阵求逆运算;所述处理单元PU阵列包括脉动阵列,本发明专利技术中的脉动阵列既可以实现矩阵乘法,也可以实现矩阵的LU分解和上下三角矩阵求逆,进而实现任意矩阵求逆,而非利用两块不同的硬件资源来分别实现矩阵乘法和矩阵求逆,显著提高了硬件的利用率。显著提高了硬件的利用率。显著提高了硬件的利用率。

【技术实现步骤摘要】
一种用于矩阵求逆和矩阵乘法的处理器


[0001]本专利技术涉及一种用于矩阵求逆和矩阵乘法的处理器。

技术介绍

[0002]近些年来,随着移动通信技术的快速发展,人类进入5G时代。通信技术发展最主要的追求是提升通信速率,但是由于光纤中的非线性效应等问题不适用于传统的香农信道模型,缺乏完善的理论研究,是限制通信速率进一步提高的主要因素之一;另一方面,目前许多传统的通信问题解决方案鲁棒性比较差,是目前通信技术发展的另一个瓶颈。深度学习的核心思想是通过大量的数据来拟合目标映射,具有鲁棒性高、学习能力强等优点,因此,基于深度学习的信道估计等基于深度学习的通信问题解决方案被广泛关注。但是由于矩阵求逆运算的高复杂度,该方案也面临硬件实现难的问题。
[0003]由于矩阵乘法和矩阵求逆运算在算法上无法互相推导,即我们无法利用矩阵乘法来求得矩阵的逆,同样也无法通过矩阵求逆来得到矩阵的乘积,在许多现有的需要同时具有矩阵乘法和矩阵求逆功能的方案中,只能分别设计矩阵乘法模块和矩阵求逆模块。目前广泛使用的矩阵乘法模块均是基于脉动阵列来实现的。对于矩阵求逆模块,由于基于伴随矩阵的算法复杂度很高,目前通信领域广泛使用的大规模矩阵的求逆均是基于LU分解+上下三角矩阵求逆算法。目前还没有任何一个设计复用同一块硬件资源来实现矩阵乘法和矩阵求逆。

技术实现思路

[0004]专利技术目的:基于深度学习的通信问题解决方案,因其具有学习能力强、鲁棒性好、可移植性强等优点,目前被广泛关注。在该类方案中,除了前向推理需要用到的矩阵乘法运算之外,为了更好地拟合通信问题以提高精度,在训练过程中通常要用到矩阵求逆运算。这将为硬件实现带来极高的复杂度。本专利技术就是针对该瓶颈问题,提出了一种有效的解决方案,能够复用有限的硬件资源实现矩阵乘法和矩阵求逆两种运算,提高了硬件的利用率。
[0005]本专利技术具体提供了一种用于矩阵求逆和矩阵乘法的处理器,包括处理单元PU阵列、除法器阵列、存储器和有限状态机;
[0006]所述处理单元PU阵列用于进行矩阵乘法运算和矩阵求逆运算;
[0007]所述处理单元PU阵列在进行矩阵乘法运算和矩阵求逆运算时,先将矩阵划分为两个以上的子块,所述子块在空间上的排列是二维的;由于对于不同的子块,PU阵列会有不同的操作,为了便于后续的描述,并对子块的编号作出如下设定:
[0008]当处理单元PU阵列进行如下实数矩阵乘法运算C=A
×
B时,子块的总行数BLOCK_ROW_NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关:
[0009][0010][0011][0012][0013]其中,R
m
×
n
表示m
×
n的实数空间;a
i,p
表示矩阵A中第i行第p列的元素;b
p,
表示矩阵B中第p行第j列的元素;c
i,j
表示矩阵C中第i行第j列的元素。
[0014]所述子块的总行数BLOCK_ROW_NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关,用如下公式表示:
[0015]BLOCK_ROW_NUM=n/N,BLOCK_ROW_NUM=k/N
[0016]其中,N为处理单元PU阵列的行数或列数(本专利技术中PU阵列的行数等于列数);
[0017]当处理单元PU阵列进行矩阵求逆运算D=E
‑1时,子块的总行数BLOCK_ROW_NUM、总列数BLOCK_COL_NUM和原矩阵E的行数有关,用如下公式表示:
[0018]BLOCK_ROW_NUM=BLOCK_ROW_NUM=m/N
[0019]其中,E、D分别为一个方阵,E∈R
m
×
m
,D∈R
m
×
m

[0020]所述处理单元PU阵列当前所处理的子块用子块所在的行数block_row_idx和列数block_col_idx来标识;子块的迭代按从上到下、从左往右、列优先于行的顺序进行,首先进行迭代的是第一列的子块,每一列的子块按照从上到下的顺序,然后是第二列,直到最后一列迭代完成;对于同一列的子块,上一行的输出即为下一行的输入,最后一行的子块的输出即为最终的输出。
[0021]所述处理单元PU阵列包括N
×
N的脉动阵列PU
ij
,1≤i,j≤N;
[0022]所述脉动阵列PU
ij
在纵向上是脉动的,在横向上是广播的;
[0023]所述处理单元PU阵列包括处理单元PU,处理单元PU是处理单元PU阵列的基本组成单元,en是处理单元PU的使能信号,X
in
和Y
in
是两个数据输入端口;
[0024]所述处理单元PU内部有一个寄存器reg,当处理单元PU阵列执行矩阵乘法操作时,寄存器reg中存放右矩阵B的一个元素b
i,
,1≤i≤n,1≤j≤k,处理单元PU输出的数据Y
out
是Z1与数据输入端口Y
in
输入的数据相加后的和,Z1指数据输入端口X
in
输入的数据和寄存器reg中存放数据的乘积X
in
·
reg,对应公式(1),简记为乘加;
[0025]当处理单元PU阵列执行矩阵求逆操作时,有两种情况,第一种情况下,寄存器reg中存放除法器的一个输出数据,处理单元PU将数据输入端口Y
in
输入的数据减去Z2后进行输出,Z2指数据输入端口X
in
输入的数据和寄存器reg中存放数据的乘积,对应公式(2),简记为乘减;第二种情况,处理单元PU将数据输入端口Y
in
输入的数据存入寄存器reg,同时输出数据输入端口Y
in
输入的数据,对应公式(3),简记为传递;选择信号sel用于选择PU
ij
需要执行的操作:
[0026]Y
out
=Y
in
+X
in
·
reg; (1)
[0027]Y
out
=Y
in

X
in
·
reg; (2)
[0028]Y
out
=Y
in
,reg=Y
in
; (3)
[0029]其中,在矩阵相乘时PU
ij
执行操作(1),右矩阵的各列预先存放在处理单元PU阵列的各行中,左矩阵A的元素按如下顺序一拍一拍地从处理单元PU阵列的X
in
端口并行输入:
[0030]以N=4为例:
[0031]第1个时钟周期:[a
1,
,0,0,0],
[0032]第2个时钟周期:[a
2,
,a本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,包括处理单元PU阵列、除法器阵列、存储器和有限状态机;所述处理单元PU阵列用于进行矩阵乘法运算和矩阵求逆运算;所述处理单元PU阵列在进行矩阵乘法运算和矩阵求逆运算时,先将矩阵划分为两个以上的子块,所述子块在空间上的排列是二维的;对子块的编号作出如下设定:当处理单元PU阵列进行如下实数矩阵乘法运算C=A
×
B时,子块的总行数BLOCK_ROW_NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关:NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关:NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关:NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关:其中,R
m
×
n
表示m
×
n的实数空间;a
i,p
表示矩阵A中第i行第p列的元素;b
p,
表示矩阵B中第p行第j列的元素;c
i,j
表示矩阵C中第i行第j列的元素。2.根据权利要求1所述的一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,所述子块的总行数BLOCK_ROW_NUM、总列数BLOCK_COL_NUM和右矩阵B的行数和列数有关,用如下公式表示:BLOCK_ROW_NUM=n/N,BLOCK_ROW_NUM=k/N其中,N为处理单元PU阵列的行数或列数。3.根据权利要求2所述的一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,当处理单元PU阵列进行矩阵求逆运算D=E
‑1时,子块的总行数BLOCK_ROW_NUM、总列数BLOCK_COL_NUM和原矩阵E的行数有关,用如下公式表示:BLOCK_ROW_NUM=BLOCK_ROW_NUM=m/N其中,E、D分别为一个方阵,E∈R
m
×
m
,D∈R
m
×
m
。4.根据权利要求3所述的一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,所述处理单元PU阵列当前所处理的子块用子块所在的行数block_row_idx和列数block_col_idx来标识;子块的迭代按从上到下、从左往右、列优先于行的顺序进行,首先进行迭代的是第一列的子块,每一列的子块按照从上到下的顺序,然后是第二列,直到最后一列迭代完成;对于同一列的子块,上一行的输出即为下一行的输入,最后一行的子块的输出即为最终的输出。
5.根据权利要求4所述的一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,所述处理单元PU阵列包括N
×
N的脉动阵列PU
ij
,1≤i,j≤N;所述脉动阵列PU
ij
在纵向上是脉动的,在横向上是广播的;所述处理单元PU阵列包括处理单元PU,en是处理单元PU的使能信号,X
in
和Y
in
是两个数据输入端口;所述处理单元PU内部有一个寄存器reg,当处理单元PU阵列执行矩阵乘法操作时,寄存器reg中存放右矩阵B的一个元素b
i,
,1≤i≤n,1≤j≤k,处理单元PU输出的数据Y
out
是Z1与数据输入端口Y
in
输入的数据相加后的和,Z1指数据输入端口X
in
输入的数据和寄存器reg中存放数据的乘积X
in
·
reg,对应公式(1),简记为乘加;当处理单元PU阵列执行矩阵求逆操作时,有两种情况,第一种情况下,寄存器reg中存放除法器的一个输出数据,处理单元PU将数据输入端口Y
in
输入的数据减去Z2后进行输出,Z2指数据输入端口X
in
输入的数据和寄存器reg中存放数据的乘积,对应公式(2),简记为乘减;第二种情况,处理单元PU将数据输入端口Y
in
输入的数据存入寄存器reg,同时输出数据输入端口Y
in
输入的数据,对应公式(3),简记为传递;选择信号sel用于选择PU
ij
需要执行的操作:Y
out
=Y
in
+X
in
·
reg; (1)Y
out
=Y
in

X
in
·
reg; (2)Y
out
=Y
in
,reg=Y
in
; (3)其中,在矩阵相乘时PU
ij
执行操作(1),右矩阵的各列预先存放在处理单元PU阵列的各行中,左矩阵A的元素按顺序一拍一拍地从处理单元PU阵列的X
in
端口并行输入。6.根据权利要求5所述的一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,所述处理器基于LU上下三角分解和上下三角矩阵求逆算法实现矩阵求逆,其中所述LU上下三角分解基于right

looking算法,在LU上下三角分解时,处理单元PU执行操作(2)或者(3),其中(3)中的除法通过外部的除法器阵列实现;从待更新列j的角度看,1≤j≤N,列j更新完成成为已更新列,就是从已更新列1开始,从左到右接受已更新列k对该待更新列j进行数据更新处理,1≤k<j,然后列j主元以下元素除以主元,列j就成为已更新列,因此处理单元PU阵列执行LU上下三角分解时,就是一个N级流水线,阵列的一行存放一个已更新列,待更新列依次从阵列上方输入,具体实现步骤包括:在填充流水线阶段,矩阵的第1列作为待更新列1并行进入处理单元PU阵列,由于第1列之前没有已更新列,因此第1行处理单元PU对第1列执行操作(3),并将结果存放在第1行处理单元PU中,成为已更新列,对之后流经第1列的待更新列进行数据更新,即操作(2);然后矩阵的第2列作为待更新列2进入处理单元PU阵列,第1行处理单元PU对待更新列2进行数据更新,数据到达第2行处理单元PU时,待更新列2执行操作(3)后,结果存放在第2行处理单元PU中,成为已更新列,直到所有的处理单元PU全部填充完成;在流水阶段,待更新列k经过PU
ij
时,1≤i<k,1≤j≤N,会被第i个已更新列处理;填充流水线和流水阶段交替进行,每次迭代得到N个已更新列,迭代两次以上后,最终得到全部的已更新列;所述上下三角矩阵求逆算法基于高斯消元法,在上下三角矩阵求逆时,处理单元PU执行操作(2)或者(3);上三角矩阵按行从PU阵列的X
in
端口并行输入,后一行的比前一行延迟一个周期;对于下三角矩阵,先进行转置变成上三角矩阵,按照高斯消元法求逆后,再转置
就得到了原下三角矩阵的输出。7.根据权利要求6所述的一种用于矩阵求逆和矩阵乘法的处理器,其特征在于,所述除法器阵列的功能是为一行处理单元PU的数据输入端口Y
in
输入的数据执行除法操作;所述除法器阵列包括N
×
1的除法器和两组选择器;所述两组选择器分别用来生成除法器的两个输入,即除数和被除数;第一组选择器用于生成除法器阵列的除数,第一组选择器的大小是N
×
1,第一组选择器中每个选择器有N个输入,能够替换为log2(N)级二选一选择器,row_sel是第一组选择器的控制信...

【专利技术属性】
技术研发人员:林军郭梦王中风
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1