System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及芯片領域,特別涉及一種基于硬件的矩陣轉置方法、裝置、存儲介質及芯片。
技術介紹
1、在利用神經網絡處理單元(neuralnetworkprocessing?unit,npu)對矩陣進行轉置時,通常會配置兩個緩沖區,在轉置過程中通過兩個緩沖區對矩陣進行乒乓操作。
2、具體的,根據源地址確定待轉置的矩陣,逐行從矩陣中讀取數據,將該數據寫入第一緩沖區中;逐列從第一緩沖區中讀取數據,寫入目的地址,同時,逐行從矩陣中讀取數據,將該數據寫入第二緩沖區中;逐列從第二緩沖區中讀取數據,寫入目的地址,同時,逐行從矩陣中讀取數據,將該數據寫入第一緩沖區中;依此類推,直至將矩陣中的所有數據寫入目的地址后停止。
3、由于需要配置兩個緩沖區來讀寫矩陣數據,導致芯片的面積較大。
技術實現思路
1、本申請提供了一種基于硬件的矩陣轉置方法、裝置、存儲介質及芯片,用于解決配置兩個緩沖區來對矩陣進行乒乓操作,導致芯片的面積較大的問題。所述技術方案如下:
2、根據本申請的第一方面,提供了一種基于硬件的矩陣轉置方法,所述方法包括:
3、為待轉置的矩陣配置一個緩沖區;
4、在對所述矩陣進行轉置操作時,按照第一寫方向將從所述矩陣中讀取的數據緩存到所述緩沖區中;
5、在寫滿所述緩沖區后,按照第一讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,所述第一讀方向與所述第一寫方向相互垂直,同時,按照第二寫方向將從所述矩陣中新讀取的數據緩存到空閑區域中
6、在所述緩沖區中的數據被全部刷新后,按照第二讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,所述第二讀方向與所述第一寫方向相同,同時,按照所述第一寫方向將從所述矩陣中新讀取的數據緩存到所述空閑區域中;
7、直至將所述矩陣中的數據全部寫入所述目的地址后停止所述轉置操作。
8、在一種可能的實現方式中,所述第一寫方向和所述第二讀方向為行方向,所述第一讀方向和所述第二寫方向為列方向。
9、在一種可能的實現方式中,所述按照第一讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,包括:將所述緩沖區中的第i列數據依次讀出并寫入所述目的地址中,i為正整數;
10、所述按照第二寫方向將從所述矩陣中新讀取的數據緩存到所述空閑區域中,包括:在所述第i列數據被讀出后釋放第i列空閑區域,將從所述矩陣中新讀取的一行數據緩存到所述第i列空閑區域中。
11、在一種可能的實現方式中,所述按照第二讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,包括:將所述緩沖區中的第j行數據依次讀出并寫入所述目的地址中,j為正整數;
12、所述按照所述第一寫方向將從所述矩陣中新讀取的數據緩存到所述空閑區域中,包括:在所述第j行數據被讀出后釋放第j行空閑區域,將從所述矩陣中新讀取的一行數據緩存到所述第j行空閑區域中。
13、在一種可能的實現方式中,所述第一寫方向和所述第二讀方向為列方向,所述第一讀方向和所述第二寫方向為行方向。
14、在一種可能的實現方式中,所述按照第一讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,包括:將所述緩沖區中的第i行數據依次讀出并寫入所述目的地址中,i為正整數;
15、所述按照第二寫方向將從所述矩陣中新讀取的數據緩存到所述空閑區域中,包括:在所述第i行數據被讀出后釋放第i行空閑區域,將從所述矩陣中新讀取的一列數據緩存到所述第i行空閑區域中。
16、在一種可能的實現方式中,所述按照第二讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,包括:將所述緩沖區中的第j列數據依次讀出并寫入所述目的地址中,j為正整數;
17、所述按照所述第一寫方向將從所述矩陣中新讀取的數據緩存到所述空閑區域中,包括:在所述第j列數據被讀出后釋放第j列空閑區域,將從所述矩陣中新讀取的一列數據緩存到所述第j列空閑區域中。
18、根據本申請的第二方面,提供了一種基于硬件的矩陣轉置裝置,所述裝置包括:
19、配置模塊,用于為待轉置的矩陣配置一個緩沖區;
20、轉置模塊,用于在對所述矩陣進行轉置操作時,按照第一寫方向將從所述矩陣中讀取的數據緩存到所述緩沖區中;
21、所述轉置模塊,還用于在寫滿所述緩沖區后,按照第一讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,所述第一讀方向與所述第一寫方向相互垂直,同時,按照第二寫方向將從所述矩陣中新讀取的數據緩存到空閑區域中,所述空閑區域是數據被讀出后釋放的區域,所述第二寫方向與所述第一讀方向相同;
22、所述轉置模塊,還用于在所述緩沖區中的數據被全部刷新后,按照第二讀方向將所述緩沖區中的數據依次讀出并寫入目的地址中,所述第二讀方向與所述第一寫方向相同,同時,按照所述第一寫方向將從所述矩陣中新讀取的數據緩存到所述空閑區域中;
23、所述轉置模塊,還用于直至將所述矩陣中的數據全部寫入所述目的地址后停止所述轉置操作。
24、根據本申請的第三方面,提供了一種計算機可讀存儲介質,所述存儲介質中存儲有至少一條指令,所述至少一條指令由處理器加載并執行以實現如上所述的基于硬件的矩陣轉置方法。
25、根據本申請的第四方面,提供了一種芯片,所述芯片包括上述基于硬件的矩陣轉置裝置。
26、本申請提供的技術方案的有益效果至少包括:
27、在緩沖區中的一行數據被讀出后釋放一行空閑區域,將矩陣中新的數據寫入這行空閑區域中;然后,在緩沖區中的一列數據被讀出后釋放一列空閑區域,將矩陣中新的數據寫入這列空閑區域中,這樣,通過切換緩沖區中數據的讀寫方向,可以實現在讀出數據的同時,充分利用已經釋放的緩存空間來寫入新的數據,從而通過一個緩沖區實現乒乓操作,既提高了矩陣的轉置效率,也減小了芯片的面積,還能減小帶寬不穩定對芯片性能的影響。
本文檔來自技高網...【技術保護點】
1.一種基于硬件的矩陣轉置方法,其特征在于,所述方法包括:
2.根據權利要求1所述的基于硬件的矩陣轉置方法,其特征在于,所述第一寫方向和所述第二讀方向為行方向,所述第一讀方向和所述第二寫方向為列方向。
3.根據權利要求2所述的基于硬件的矩陣轉置方法,其特征在于,
4.根據權利要求2所述的基于硬件的矩陣轉置方法,其特征在于,
5.根據權利要求1所述的基于硬件的矩陣轉置方法,其特征在于,所述第一寫方向和所述第二讀方向為列方向,所述第一讀方向和所述第二寫方向為行方向。
6.根據權利要求5所述的基于硬件的矩陣轉置方法,其特征在于,
7.根據權利要求5所述的基于硬件的矩陣轉置方法,其特征在于,
8.一種基于硬件的矩陣轉置裝置,其特征在于,所述裝置包括:
9.一種計算機可讀存儲介質,其特征在于,所述存儲介質中存儲有至少一條指令,所述至少一條指令由處理器加載并執行以實現如權利要求1至7任一項所述的基于硬件的矩陣轉置方法。
10.一種芯片,其特征在于,芯片包括:權利要求8所述的基于硬件的矩
...【技術特征摘要】
1.一種基于硬件的矩陣轉置方法,其特征在于,所述方法包括:
2.根據權利要求1所述的基于硬件的矩陣轉置方法,其特征在于,所述第一寫方向和所述第二讀方向為行方向,所述第一讀方向和所述第二寫方向為列方向。
3.根據權利要求2所述的基于硬件的矩陣轉置方法,其特征在于,
4.根據權利要求2所述的基于硬件的矩陣轉置方法,其特征在于,
5.根據權利要求1所述的基于硬件的矩陣轉置方法,其特征在于,所述第一寫方向和所述第二讀方向為列方向,所述第一讀方向和所述第二寫方向...
【專利技術屬性】
技術研發人員:吳小鵬,孔旗,張旭琛,
申請(專利權)人:九識蘇州智能科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。