本技術涉及片上網絡,特別涉及一種基于片上網絡的可重構脈動陣列方法、裝置、設備及介質。
背景技術:
1、人工智能等算法通常包含大規模矩陣乘法運算,即一個矩陣各行(或列)的各個元素和另外一個矩陣各列(或行)的各個元素對應相乘再相加,從而得到一個新的矩陣。矩陣乘法天然具有并行計算的特點,其包含的所有乘法運算可以同時計算,加法也可以同時計算。
2、在傳統計算機的中央處理器(central?processing?unit,cpu)中,矩陣乘法串行進行,即各個乘法和加法運算依次執行,效率很低。相比之下,在大規模用于人工智能等算法的圖形處理器(graphics?processing?unit,gpu)中,多個計算核并行計算,大大加速了矩陣乘法。此外張量處理器(tensor?processing?unit,tpu)等專用集成電路(applicationspecificintegratedcircuits,asic)采用大規模脈動陣列加速矩陣乘法,以犧牲一定的通用性為代價,提高了能量效率和面積效率。
3、相關技術通常通過以下手段進行矩陣運算:(1)采用cpu實現矩陣乘法運算,串行執行乘法和加法運算,速度慢,效率低;(2)采用gpu實現矩陣乘法運算,并行執行乘法和加法運算,但乘法和加法運算并非同步執行,需要通過指令控制,增大了控制電路面積,并且數據在計算單元之間的搬運增大了能量消耗;(3)采用tpu實現矩陣乘法運算,用固定的脈動陣列和數據流執行乘法和加法運算,不適合片上網絡架構。
技術實現思路
1、本技術提供一種基于片上網絡的可重構脈動陣列方法、裝置、電子設備及存儲介質,以解決矩陣運算速度慢、效率低、能量效率和面積效率低、通用性不強的問題,保留了較高的能量效率和面積效率的同時,通過可重構方式提高了矩陣乘法運算的通用性和靈活性。
2、本技術第一方面實施例提供一種基于片上網絡的可重構脈動陣列方法,所述方法采用可重構脈動陣列電路,所述可重構脈動陣列電路包括第一至第n行節點和第一至第m列節點,n和m均為整數,其中,所述方法包括以下步驟:
3、獲取輸入數據和輸出數據相對位置關系;
4、若所述相對位置關系為平行關系,則從所述第一至第n行節點中確定輸入數據行,并從所述第一至第n行節點中確定第一輸出數據行;
5、根據所述第一輸出數據行的行數和每個輸入數據行的行數確定所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點,并基于所述每個輸入數據行節點的輸入數據,利用所述可重構脈動陣列電路進行乘法運算和/或加法運算,以在所述第一輸出數據行的目的節點進行數據輸出。
6、可選地,在一些實施例中,所述根據所述第一輸出數據行的行數和每個輸入數據行的行數確定所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點,包括:
7、根據所述輸入數據行的行數和所述輸入數據行上方行的中線確定第一分界線;
8、若所述第一輸出數據行的行數在所述第一分界線上方,則所述每個輸入數據行節點在所述第一輸出數據行的目的節點與所述每個輸入數據行節點對應的列序號相等;
9、以及,若所述第一輸出數據行的行數在所述第一分界線下方,則計算所述每個輸入數據行節點對應的行序號和列序號的第一和值,并計算總行數與第一預設值的第二和值,并分別計算所述第二和值與所述每個輸入數據行節點對應的第一和值得到所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點。
10、可選地,在一些實施例中,所述根據所述第一輸出數據行的行數和每個輸入數據行的行數確定所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點,包括:
11、根據所述輸入數據行的行數和所述輸入數據行下方行的中線確定第二分界線;
12、若所述第一輸出數據行的行數在所述第一分界線下方,則所述每個輸入數據行節點在所述第一輸出數據行的目的節點與所述每個輸入數據行節點對應的列序號相等;
13、以及,若所述第一輸出數據行的行數在所述第一分界線上方,則計算所述每個輸入數據行節點對應的行序號和列序號的第三和值,并計算總行數與第一預設值的第四和值,并分別計算所述第四和值與所述每個輸入數據行節點對應的第三和值得到所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點。
14、可選地,在一些實施例中,在獲取輸入數據和輸出數據相對位置關系之后,還包括:
15、若所述相對位置關系為垂直關系,則從所述第一至第m列節點中確定輸入數據列,并從所述第一至第n行節點中確定第二輸出數據行;
16、確定所述輸入數據列中每個輸入數據列節點的數據發送時間,并利用所述可重構脈動陣列電路根據所述數據發送時間進行乘法運算和/或加法運算,以在所述第二輸出數據行進行數據輸出。
17、本技術第二方面實施例提供一種基于片上網絡的可重構脈動陣列裝置,所述裝置采用可重構脈動陣列電路,所述可重構脈動陣列電路包括第一至第n行節點和第一至第m列節點,n和m均為整數,其中,所述裝置包括:
18、獲取模塊,用于獲取輸入數據和輸出數據相對位置關系;
19、確定模塊,用于在所述相對位置關系為平行關系的情況下,從所述第一至第n行節點中確定輸入數據行,并從所述第一至第n行節點中確定第一輸出數據行;
20、輸出模塊,用于根據所述第一輸出數據行的行數和每個輸入數據行的行數確定所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點,并基于所述每個輸入數據行節點的輸入數據,利用所述可重構脈動陣列電路進行乘法運算和/或加法運算,以在所述第一輸出數據行的目的節點進行數據輸出。
21、可選地,在一些實施例中,所述輸出模塊,包括:
22、第一確定單元,用于根據所述輸入數據行的行數和所述輸入數據行上方行的中線確定第一分界線;
23、第二確定單元,若所述第一輸出數據行的行數在所述第一分界線上方,則所述每個輸入數據行節點在所述第一輸出數據行的目的節點與所述每個輸入數據行節點對應的列序號相等;
24、第一計算單元,用于在所述第一輸出數據行的行數在所述第一分界線下方的情況下,則計算所述每個輸入數據行節點對應的行序號和列序號的第一和值,并計算總行數與第一預設值的第二和值,并分別計算所述第二和值與所述每個輸入數據行節點對應的第一和值得到所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點。
25、可選地,在一些實施例中,所述輸出模塊,包括:
26、第三確定單元,用于根據所述輸入數據行的行數和所述輸入數據行下方行的中線確定第二分界線;
27、第四確定單元,若所述第一輸出數據行的行數在所述第一分界線下方,則所述每個輸入數據行節點在所述第一輸出數據行的目的節點與所述每個輸入數據行節點對應的列序號相等;
28、第二計算單元,用于在所述第一輸出數據行的行數在所述第一分界線上方的情況下,計算所述每個輸入數據行節點對應的行序號和列序號的第三和值,并計算總行數與第一預設值的第四和值,并分別計算所述第四和值與所述每個輸入數據行節點對應的第三和值得到所述輸入數據行中每個輸入數據行節點在所述第一輸出數據行的目的節點。
29、可選地,在一些實施例中,在獲取輸入數據和輸出數據相對位置關系之后,所述獲取模塊,還包括:
30、第五確定單元,用于在所述相對位置關系為垂直關系的情況下,從所述第一至第m列節點中確定輸入數據列,并從所述第一至第n行節點中確定第二輸出數據行;
31、第六確定單元,用于確定所述輸入數據列中每個輸入數據列節點的數據發送時間,并利用所述可重構脈動陣列電路根據所述數據發送時間進行乘法運算和/或加法運算,以在所述第二輸出數據行進行數據輸出。
32、本技術第三方面實施例提供一種電子設備,包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執行所述程序,以實現如上述實施例所述的基于片上網絡的可重構脈動陣列方法。
33、本技術第四方面實施例提供一種計算機可讀存儲介質,其上存儲有計算機程序,該程序被處理器執行,以用于實現如上述實施例所述的基于片上網絡的可重構脈動陣列方法。
34、由此,通過獲取輸入數據和輸出數據相對位置關系,若相對位置關系為平行關系,則從第一至第n行節點中確定輸入數據行,并從第一至第n行節點中確定第一輸出數據行,根據第一輸出數據行的行數和每個輸入數據行的行數確定輸入數據行中每個輸入數據行節點在第一輸出數據行的目的節點,并基于每個輸入數據行節點的輸入數據,利用可重構脈動陣列電路進行乘法運算和/或加法運算,以在第一輸出數據行的目的節點進行數據輸出。由此,解決了矩陣運算速度慢、效率低、能量效率和面積效率低、通用性不強的問題,保留了較高的能量效率和面積效率的同時,通過可重構方式提高了矩陣乘法運算的通用性和靈活性。
35、本技術附加的方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本技術的實踐了解到。