一种矩阵运算中转置、转置乘和相乘的方法技术

技术编号:37487692 阅读:15 留言:0更新日期:2023-05-07 09:26
本发明专利技术公开了一种矩阵运算中转置、转置乘和相乘的方法。本发明专利技术通过矩阵转置处理单元、矩阵转置乘处理单元、输出单元和两个中间缓存实现。矩阵转置处理单元对输入数据进行转置处理;矩阵转置乘处理单元获取两个输入矩阵的数据,进行一个矩阵的转置乘另一个矩阵的处理;输出单元从中间缓存取出数据写入外部存储器;矩阵转置处理单元和矩阵转置乘处理单元共用一个输出单元;中间缓存存储处理过程中的数据,当输出单元使用一个中间缓存进行输出时,处理单元使用另一个中间缓存进行数据缓存。本发明专利技术方法使用矩阵转置乘的方式,两个矩阵相乘采用列数据运算方法,减少了数据的重复取用的次数和中间缓存的面积,并节省了总线带宽和运算时间。算时间。

【技术实现步骤摘要】
一种矩阵运算中转置、转置乘和相乘的方法


[0001]本专利技术属于集成电路设计
,尤其是人工智能
,特别涉及一种矩阵运算中转置、转置乘和相乘的方法。

技术介绍

[0002]随着人工智能技术的发展,越来越多的人工智能芯片被用于生活和生产中。矩阵运算作为人工智能技术的基础,也被大量运用。在许多小型人工智能芯片的应用场景中,矩阵运算作为其中一环,占用的硬件资源大小和运算速度制约着整个人工智能芯片的面积和性能。现有的矩阵运算的硬件均是以整行整列的方式进行运算,导致中间缓存资源或总线带宽的巨大浪费。

技术实现思路

[0003]本专利技术的目的是提供一种矩阵运算中转置、转置乘和相乘的方法,从而使整个矩阵运算的装置可以占用更少的硬件资源和节省更多的总线带宽。
[0004]本专利技术通过矩阵转置处理单元、矩阵转置乘处理单元、输出单元和两个中间缓存实现。其中:
[0005]矩阵转置处理单元,用于通过总线向外部储存单元获取要转置的输入数据,进行转置处理;
[0006]矩阵转置乘处理单元,用于通过总线向外部储存单元获取两个输入矩阵的数据,进行一个矩阵的转置乘另一个矩阵的处理;
[0007]输出单元,用于从中间缓存取出数据再通过总线写入外部存储单元;矩阵转置处理单元和矩阵转置乘处理单元共用一个输出单元;
[0008]中间缓存,用于存储处理过程中的数据;采用两个中间缓存,当输出单元使用一个中间缓存进行输出时,处理单元使用另一个中间缓存进行数据缓存。
[0009]本专利技术方法包括矩阵转置方法、矩阵转置乘方法、矩阵相乘方法。
[0010]矩阵转置方法具体如下:
[0011]步骤(1)将需要进行转置的N
a
行M
a
列矩阵按照列分割成P个子矩阵,
表示向上取整,L为划分长度。
[0012]步骤(2)将每个子矩阵按照行分割成Q个孙矩阵,对于子矩阵A
′1,其孙矩阵
[0013][0014][0015]由此
[0016]步骤(3)矩阵转置处理单元首先通过总线从外部存储单元中读取孙矩阵A

1,1
中的第一行写入第一中间缓存的第一列,然后将第二行写入第一中间缓存的第二列,以此类推,将第L行写入第一中间缓存的第L列,完成孙矩阵A

1,1
的输入处理,输出单元将处理后孙矩阵通过总线写入外部存储单元。
[0017]步骤(4)矩阵转置处理单元通过总线从外部存储单元中读取孙矩阵A1′
,
′2中的第一行写入第二中间缓存的第一列,然后将第二行写入第二中间缓存的第二列,以此类推,将将第L行写入第二中间缓存的第L列,完成孙矩阵A1′
,
′2的输入处理,输出单元将处理后孙矩
阵通过总线写入外部存储单元。
[0018]步骤(5)以此类推,完成子矩阵A1′
的所有孙矩阵处理后,继续对子矩阵A2′
的孙矩阵进行处理,最终得到转置矩阵
[0019]矩阵转置乘方法即H=B
T
×
C,矩阵B的行数N
b
与矩阵C的行数N
c
相等,N
b
=N
c
=N;具体方法如下:
[0020]步骤(A)将矩阵按照步骤(1)方法分割成K个子矩阵,
[0021][0022]将矩阵按照步骤(1)方法分割成G个子矩阵,
[0023][0024]步骤(B)将子矩阵B1′
与子矩阵C1′
进行如下处理:
[0025](B

1)矩阵转置乘处理单元首先通过总线从外部存储单元中读取子矩阵B1′
的第一行和子矩阵C1′
的第一行的数据;将子矩阵B1′
的第一行第一列的数据b
1,1
与子矩阵C1′
的第一行第一列的数据c
1,1
相乘,作为第一中间矩阵D1的第一行第一列数据,存入第一中间缓存;将子矩阵B1′
的第一行第一列的数据b
1,1
与子矩阵C1′
的第一行第二列的数据c
1,2
相乘,作为第一中间矩阵D1的第一行第二列数据,存入第一中间缓存;以此类推,得到第一中间矩阵D1的第一行数据;
[0026]将子矩阵B1′
的第一行第二列的数据b
1,2
与子矩阵C1′
的第一行第一列的数据c
1,1
相乘,作为第一中间矩阵D1的第二行第一列数据,存入第一中间缓存;将子矩阵B1′
的第一行第二列的数据b
1,2
与子矩阵C1′
的第一行第二列的数据c
1,2
相乘,作为第一中间矩阵D1的第二行第二列数据,存入第一中间缓存;以此类推,得到第一中间矩阵D1的第二行数据;
[0027]依次类推,得到中间矩阵其中
[0028](B

2)矩阵转置乘处理单元通过总线从外部存储单元中读取子矩阵B1′
的第二行和子矩阵C1′
的第二行的数据;将子矩阵B1′
的第二行第一列的数据b
2,1
与子矩阵C1′
的第二行第一列的数据c
2,1
相乘,并加上第一中间矩阵D1的第一行第一列数据作为第二中间矩阵D2的第一行第一列数据,存入第一中间缓存;将子矩阵B1′
的第二行第一列的数据b
2,1
与子矩阵C1′
的第二行第二列的数据c
2,2
相乘,并加上第一中间矩阵D1的第一行第二列数据作为第二中间矩阵D2的第一行第二列数据,存入第一中间缓存;以此类推,得到第二中间矩阵D2的第一行数据;
[0029]将子矩阵B1′
的第二行第二列的数据b
2,2
与子矩阵C1′
的第二行第一列的数据c
2,1
相乘,并加上第一中间矩阵D1的第二行第一列数据作为第二中间矩阵D2的第二行第一列数据,存入第一中间缓存;将子矩阵B1′
的第二行第二列的数据与子矩阵C1′
的第二行第二列的数据c
2,2
相乘,并加上第一中间矩阵D1的第二行第二列数据作为第二中间矩阵D2的第二行第二列数据,存入第一中间缓存;以此类推,得到第二中间矩阵D2的第二行数据;
[0030]依次类推,得到第二中间矩阵
[0031](B

3)矩阵转置乘处理单元通过总线从外部存储单元中读取子矩阵B1′
的第三行和子矩阵C1′
的第三行的数据;将子矩阵B1′
的第三行第一列的数据b
3,1
与子矩阵C1′
的第三行第一列的数据c
3,1
相乘,并加上第二中间矩阵D2的第一行第一列数据作为第三中间矩阵D3的第一行第一列数据,存入第一中间缓存;将子矩阵B1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种矩阵运算中转置、转置乘和相乘的方法,其特征在于:通过矩阵转置处理单元、矩阵转置乘处理单元、输出单元和两个中间缓存实现;其中:矩阵转置处理单元,用于通过总线向外部储存单元获取要转置的输入数据,进行转置处理;矩阵转置乘处理单元,用于通过总线向外部储存单元获取两个输入矩阵的数据,进行一个矩阵的转置乘另一个矩阵的处理;输出单元,用于从中间缓存取出数据再通过总线写入外部存储单元;矩阵转置处理单元和矩阵转置乘处理单元共用一个输出单元;中间缓存,用于存储处理过程中的数据;采用两个中间缓存,当输出单元使用一个中间缓存进行输出时,处理单元使用另一个中间缓存进行数据缓存;矩阵转置方法具体如下:步骤(1)将需要进行转置的N
a
行M
a
列矩阵按照列分割成P个子矩阵,个子矩阵,个子矩阵,个子矩阵,表示向上取整,L为划分长度;步骤(2)将每个子矩阵按照行分割成Q个孙矩阵,对于子矩阵A1′
,其孙矩阵,其孙矩阵
由此步骤(3)矩阵转置处理单元首先通过总线从外部存储单元中读取孙矩阵A1′
,
′1中的第一行写入第一中间缓存的第一列,然后将第二行写入第一中间缓存的第二列,以此类推,将第L行写入第一中间缓存的第L列,完成孙矩阵A1′
,
′1的输入处理,输出单元将处理后孙矩阵通过总线写入外部存储单元;步骤(4)矩阵转置处理单元通过总线从外部存储单元中读取孙矩阵A1′
,
′2中的第一行写入第二中间缓存的第一列,然后将第二行写入第二中间缓存的第二列,以此类推,将将第L行写入第二中间缓存的第L列,完成孙矩阵A1′
,
′2的输入处理,输出单元将处理后孙矩阵通过总线写入外部存储单元;步骤(5)以此类推,完成子矩阵A1′
的所有孙矩阵处理后,继续对子矩阵A2′
的孙矩阵进行处理,最终得到转置矩阵矩阵转置乘方法即H=B
T
×
C,矩阵B的行数N
b
与矩阵C的行数N
c
相等,N
b
=N
c
=N;具体方法如下:步骤(A)将矩阵按照步骤(1)方法分割成K个子矩阵,
将矩阵按照步骤(1)方法分割成G个子矩阵,按照步骤(1)方法分割成G个子矩阵,步骤(B)将子矩阵B1′
与子矩阵C1′
进行如下处理:(B

1)矩阵转置乘处理单元首先通过总线从外部存储单元中读取子矩阵B1′
的第一行和子矩阵C1′
的第一行的数据;将子矩阵B1′
的第一行第一列的数据b
1,1
与子矩阵C1′
的第一行第一列的数据c
1,1
相乘,作为第一中间矩阵D1的第一行第一列数据,存入第一中间缓存;将子矩阵B1′
的第一行第一列的数据b
1,1
与子矩阵C1′
的第一行第二列的数据c
1,2
相乘,作为第一中间矩阵D1的第一行第二列数据,存入第一中间缓存;以此类推,得到第一中间矩阵D1的第一行数据;将子矩阵B1′
的第一行第二列的数据b
1,2
与子矩阵C1′
的第一行第一列的数据c
1,1
相乘,作为第一中间矩阵D1的第二行第一列数据,存入第一中间缓存;将子矩阵B1′
的第一行第二列的数据b
1,2
与子矩阵C1′
的第一行第二列的数据c
1,2
相乘,作为第一中间矩阵D1的第二行第二列数据,存入第一中间缓存;以此类推,得到第一中间矩阵D1的第二行数据;依次类推,得到中间矩阵其中(B

2)矩阵转置乘处理单元通过总线从外部存储单元中读取子矩阵B1′
的第二行和子矩阵C1′
的第二行的数据;将子矩阵B1′
的第二行第一列的数据b
2,1
与子矩阵C1′
的第二行第一列的数据c
2,1
相乘,并加上第一中间矩阵D1的第一行第一列数据作为第二中间矩阵D2的第一行第一列数据,存入第一中间缓存;将子矩阵B1′
的第二行第一列的数据b
2,1
与子矩阵
C1′

【专利技术属性】
技术研发人员:龚文科黄磊应屹航胡俊王理想
申请(专利权)人:杭州国芯科技股份有限公司
类型:发明
国别省市:

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

1