本技術(shù)涉及計算,特別涉及一種稀疏矩陣的運算方法、處理器和計算設(shè)備。
背景技術(shù):
1、矩陣乘法被廣泛應(yīng)用在各類科學計算場景。其中,不同計算場景中涉及矩陣的稠密度存在差異,矩陣乘法主要劃分為稠密矩陣乘法以及稀疏矩陣乘法。一般稠密矩陣乘法主要應(yīng)用在傳統(tǒng)機器學習、神經(jīng)網(wǎng)絡(luò)模型的計算等場景,稀疏矩陣乘法主要應(yīng)用在圖計算、圖神經(jīng)網(wǎng)絡(luò)以及多重網(wǎng)格求解等場景。
2、由于稀疏矩陣中包括大量的零元素,所以在執(zhí)行稀疏矩陣乘法的過程中,會存在大量的零元素參與矩陣乘法運算,進而導致矩陣運算的效率較低。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供了一種稀疏矩陣的運算方法、處理器和計算設(shè)備,能夠提高稀疏矩陣乘法的執(zhí)行效率,相應(yīng)的技術(shù)方案如下:
2、第一方面,提供了一種稀疏矩陣的運算方法,該方法由包括稀疏矩陣處理單元和稀疏向量運算單元的處理器執(zhí)行,該方法包括:
3、稀疏矩陣處理單元向稀疏向量運算單元輸入經(jīng)過稀疏矩陣處理單元處理得到的第一稀疏矩陣對應(yīng)的第一數(shù)值矩陣和第一索引矩陣、第二稀疏矩陣對應(yīng)的第二數(shù)值矩陣和第二索引矩陣,其中,第一索引矩陣中的每個非零元素用于指示第一數(shù)值矩陣中相同位置的非零元素對應(yīng)的列號,第二索引矩陣中的每個非零元素用于指示第二數(shù)值矩陣中相同位置的非零元素對應(yīng)的行號。稀疏向量運算單元基于第一索引矩陣每行非零元素和第二索引矩陣中包括的每列非零元素,確定第一數(shù)值矩陣每行非零元素和第二數(shù)值矩陣的每列非零元素中需要進行點積運算的目標元素,并對目標元素執(zhí)行點積運算,得到第一稀疏矩陣和第二稀疏矩陣執(zhí)行稀疏乘法運算的第一結(jié)果矩陣。
4、其中,第一數(shù)值矩陣是對第一稀疏矩陣中的非零元素在行方向上進行壓縮后得到的,第二數(shù)值矩陣是對第二稀疏矩陣中的非零元素在列方向上進行壓縮后得到的。在本技術(shù)提供的方案中,稀疏矩陣處理單元可以根據(jù)第一索引矩陣的每行和第二索引矩陣每列的非零元素分別指示的行號和列號,確定第一數(shù)值矩陣和第二數(shù)據(jù)矩陣中需要進行點積運算的目標元素,并對目標元素執(zhí)行點積運算,進而得到第一稀疏矩陣和第二稀疏矩陣執(zhí)行稀疏乘法運算的第一結(jié)果矩陣??梢?,本技術(shù)所示的方案能夠避免稀疏乘法運算過程中,對大量零元素的運算,可以提高處理器執(zhí)行稀疏乘法運算的效率。
5、在一種可實現(xiàn)的方式中,稀疏向量運算單元基于第一索引矩陣和第二索引矩陣中包括的每行元素,確定第一數(shù)值矩陣和第二數(shù)值矩陣的每行元素中需要進行點積運算的目標元素,并對目標元素執(zhí)行點積運算,得到第一稀疏矩陣和第二稀疏矩陣執(zhí)行稀疏乘法運算的第一結(jié)果矩陣,包括:
6、稀疏向量運算單元確定第一索引矩陣第m行與第二索引矩陣第n列中包括的相同非零元素分別在第m行中的第一位置以及在第n列中的第二位置。對第一數(shù)據(jù)矩陣第m行第一位置的目標元素以及第二數(shù)據(jù)矩陣第n列第二位置的目標元素進行點積運算,得到第一結(jié)果矩陣中第m行第n列的元素。
7、在一種可實現(xiàn)的方式中,該方法還包括:稀疏矩陣處理單元獲取第三稀疏矩陣對應(yīng)的第三數(shù)值矩陣和第三索引矩陣、第四稀疏矩陣對應(yīng)的第四數(shù)值矩陣和第四索引矩陣,其中,第三數(shù)值矩陣包括多個第一數(shù)值矩陣塊,第三索引矩陣包括與每個第一數(shù)值矩陣塊對應(yīng)的第一索引矩陣塊,第四數(shù)值矩陣包括多個第二數(shù)值矩陣塊,第四索引矩陣包括與每個第二數(shù)值矩陣塊對應(yīng)的多個第二索引矩陣塊。稀疏矩陣處理單元確定第三數(shù)值矩陣第i行中非零矩陣塊的第一數(shù)值矩陣塊與第四數(shù)值矩陣第j列中非零矩陣塊的第二數(shù)值矩陣塊的笛卡爾乘積。
8、稀疏矩陣處理單元向稀疏向量運算單元輸入經(jīng)過稀疏矩陣處理單元處理得到的第一稀疏矩陣對應(yīng)的第一數(shù)值矩陣和第一索引矩陣、第二稀疏矩陣對應(yīng)的第二數(shù)值矩陣和第二索引矩陣之前,還包括:稀疏矩陣處理單元確定笛卡爾乘積中一組數(shù)值矩陣塊包括的第一數(shù)值矩陣塊和第二數(shù)值矩陣塊分別為第一數(shù)值矩陣和第二數(shù)值矩陣,確定第一數(shù)值矩陣塊對應(yīng)的第一索引矩陣塊為第一索引矩陣,確定第二數(shù)值矩陣塊對應(yīng)的第二索引矩陣塊為第二索引矩陣。
9、在一種可實現(xiàn)的方式中,該方法還包括:稀疏矩陣處理單元對笛卡爾乘積中包括的每組數(shù)值矩陣塊對應(yīng)的第一結(jié)果矩陣進行求和,得到第三稀疏矩陣和第四稀疏矩陣執(zhí)行稀疏乘法運算的第二結(jié)果矩陣中第i行第j列的矩陣塊。
10、在本技術(shù)所示的方案中,稀疏矩陣處理單元通過將執(zhí)行稀疏乘法運算的第三稀疏矩陣和第四稀疏矩陣分別壓縮為第三數(shù)值矩陣、第三索引矩陣、第四數(shù)值矩陣和第四索引矩陣,并對第三數(shù)值矩陣、第三索引矩陣、第四數(shù)值矩陣和第四索引矩陣進行分塊,得到多個第一數(shù)值矩陣塊、第二數(shù)值矩陣塊、第一索引矩陣塊以及第二索引矩陣塊,如此通過上述數(shù)值矩陣塊和索引矩陣塊分別計算第二結(jié)果矩陣,可以避免零矩陣塊參與到稀疏乘法運算過程中,能夠提高處理器執(zhí)行稀疏乘法運算的效率。
11、另外,對于笛卡爾乘積中包括的每組數(shù)值矩陣塊,即為進行矩陣乘法運算的第一數(shù)值矩陣塊和第二數(shù)值矩陣塊。將第一數(shù)值矩陣塊確定為上述第一數(shù)值矩陣,將第二數(shù)值矩陣塊確定為上述第二數(shù)值矩陣,按照上述計算第一數(shù)值矩陣和第二數(shù)值矩陣的運算方法,執(zhí)行第一數(shù)值矩陣塊和第二數(shù)值矩陣塊的運算,可以進一步提高處理器執(zhí)行稀疏乘法運算的效率。
12、在一種可實現(xiàn)的方式中,第三數(shù)值矩陣包括l×m個第一數(shù)值矩陣區(qū),每個第一數(shù)值矩陣區(qū)包括至少一個第一數(shù)值矩陣塊,第三索引矩陣包括l×m個第三索引矩陣區(qū),每個第一索引矩陣區(qū)包括至少一個第一索引矩陣塊。第四數(shù)值矩陣包括m×n個第二數(shù)值矩陣區(qū),每個第二數(shù)值矩陣區(qū)中包括的至少一個第二數(shù)值矩陣塊,第四索引矩陣包括m×n個第二索引矩陣區(qū),每個第二索引矩陣區(qū)中包括的至少一個第二索引矩陣塊。
13、在本技術(shù)所示的方案中,可以對第三數(shù)值矩陣、第三索引矩陣、第四數(shù)值矩陣和第四索引矩陣進行分區(qū),進而可以根據(jù)第一數(shù)值矩陣區(qū)、第一索引矩陣區(qū)、第二數(shù)值矩陣區(qū)、第二索引矩陣區(qū)分別計算第三稀疏矩陣和第四稀疏矩陣對應(yīng)的第二結(jié)果矩陣。對于第一數(shù)值矩陣區(qū)和第二數(shù)值矩陣區(qū)中的零矩陣區(qū)可以不參與運算,進而能夠提高處理器執(zhí)行稀疏乘法運算的效率。
14、在一種可實現(xiàn)的方式中,該方法還包括:稀疏矩陣處理單元基于l×m個第一數(shù)值矩陣區(qū)中零矩陣區(qū)在第三數(shù)值矩陣中的第一位置、非零矩陣區(qū)在第三數(shù)值矩陣中的第二位置、以及m×n個第二數(shù)值矩陣區(qū)中零矩陣區(qū)在第四數(shù)值矩陣中的第三位置、非零矩陣區(qū)在第四數(shù)值矩陣中的第四位置,確定第二結(jié)果矩陣中包括的l×n個矩陣區(qū)中非零矩陣區(qū)的數(shù)目。基于非零矩陣區(qū)的數(shù)目在內(nèi)存中為第二結(jié)果矩陣申請存儲空間。
15、在本技術(shù)所示的方案中,根據(jù)第二結(jié)果矩陣中包括的非零矩陣區(qū)的數(shù)目,在內(nèi)存中為第二結(jié)果矩陣申請存儲空間,一方面可以降低第二結(jié)果矩陣占用的存儲空間,另一方面,按照第一數(shù)值矩陣區(qū)以及第二數(shù)值矩陣區(qū)零矩陣區(qū)和非零矩陣區(qū)的位置進行對位判斷,確定第二結(jié)果矩陣中包括的非零矩陣區(qū)的數(shù)目,可以降低對位判斷的復雜度。
16、在一種可實現(xiàn)的方式中,稀疏矩陣處理單元確定第三數(shù)值矩陣第i行中非零矩陣塊的第一數(shù)值矩陣塊與第四數(shù)值矩陣第j列中非零矩陣塊的第二數(shù)值矩陣塊的笛卡爾乘積,包括:稀疏矩陣處理單元如果確定第i行中第k個第一數(shù)值矩陣塊組與第j列中第k個第二數(shù)值矩陣塊組滿足運算條件,則確定第k個第一數(shù)值矩陣塊組和第k個第二數(shù)值矩陣塊組包括的每個非零矩陣塊的第一數(shù)值矩陣塊和每個非零矩陣塊的第二數(shù)值矩陣塊的笛卡爾乘積。其中,第一數(shù)值矩陣塊組包括第i行中在同一第一數(shù)值矩陣區(qū)中的第一數(shù)值矩陣塊,第二數(shù)值矩陣塊組包括第j列中在同一第二數(shù)值矩陣區(qū)中的第二數(shù)值矩陣塊,運算條件為第一數(shù)值矩陣塊組和第二數(shù)值矩陣塊組中均包括非零矩陣塊。
17、在本技術(shù)所示的方案中,稀疏矩陣處理單元通過對數(shù)值矩陣塊組進行對位判斷,可以避免不包括非零數(shù)值矩陣塊的數(shù)值矩陣塊參與稀疏乘法運算,可以能夠提高處理器執(zhí)行稀疏乘法運算的效率。
18、第二方面,提供了一種處理器,處理器包括稀疏矩陣處理單元和稀疏向量運算單元,其中:
19、稀疏矩陣處理單元,用于向稀疏向量運算單元輸入經(jīng)過稀疏矩陣處理單元處理得到的第一稀疏矩陣對應(yīng)的第一數(shù)值矩陣和第一索引矩陣、第二稀疏矩陣對應(yīng)的第二數(shù)值矩陣和第二索引矩陣,其中,第一索引矩陣中的每個非零元素用于指示第一數(shù)值矩陣中相同位置的非零元素對應(yīng)的列號,第二索引矩陣中的每個非零元素用于指示第二數(shù)值矩陣中相同位置的非零元素對應(yīng)的行號;
20、稀疏向量運算單元,用于基于第一索引矩陣和第二索引矩陣中包括的每行元素,確定第一數(shù)值矩陣和第二數(shù)值矩陣的每行元素中需要進行點積運算的目標元素,并對目標元素執(zhí)行點積運算,得到第一稀疏矩陣和第二稀疏矩陣執(zhí)行稀疏乘法運算的第一結(jié)果矩陣。
21、在一種可實現(xiàn)的方式中,稀疏向量運算單元,用于確定第一索引矩陣第m行與第二索引矩陣第n行中包括的相同元素分別在第m行中的第一位置以及在第n行中的第二位置;
22、稀疏向量運算單元,用于對第一數(shù)據(jù)矩陣第m行第一位置的目標元素以及第二數(shù)據(jù)矩陣第n行第二位置的目標元素進行點積運算,得到第一結(jié)果矩陣中第m行第n列的元素。
23、在一種可實現(xiàn)的方式中,稀疏矩陣處理單元,用于獲取第三稀疏矩陣對應(yīng)的第三數(shù)值矩陣和第三索引矩陣、第四稀疏矩陣對應(yīng)的第四數(shù)值矩陣和第四索引矩陣,其中,第三數(shù)值矩陣包括多個第一數(shù)值矩陣塊,第三索引矩陣包括與每個第一數(shù)值矩陣塊對應(yīng)的第一索引矩陣塊,第四數(shù)值矩陣包括多個第二數(shù)值矩陣塊,第四索引矩陣包括與每個第二數(shù)值矩陣塊對應(yīng)的多個第二索引矩陣塊;
24、稀疏矩陣處理單元,用于確定第三數(shù)值矩陣第i行中非零矩陣塊的第一數(shù)值矩陣塊與第四數(shù)值矩陣第j列中非零矩陣塊的第二數(shù)值矩陣塊的笛卡爾乘積。
25、稀疏矩陣處理單元,還用于稀疏矩陣處理單元確定笛卡爾乘積中一組數(shù)值矩陣塊包括的第一數(shù)值矩陣塊和第二數(shù)值矩陣塊分別為第一數(shù)值矩陣和第二數(shù)值矩陣,確定第一數(shù)值矩陣塊對應(yīng)的第一索引矩陣塊為第一索引矩陣,確定第二數(shù)值矩陣塊對應(yīng)的第二索引矩陣塊為第二索引矩陣。
26、稀疏矩陣處理單元,還用于對笛卡爾乘積中包括的每組數(shù)值矩陣塊對應(yīng)的第一結(jié)果矩陣進行求和,得到第三稀疏矩陣和第四稀疏矩陣執(zhí)行稀疏乘法運算的第二結(jié)果矩陣中第i行第j列的矩陣塊。
27、在一種可實現(xiàn)的方式中,第三數(shù)值矩陣包括l×m個第一數(shù)值矩陣區(qū),每個第一數(shù)值矩陣區(qū)包括至少一個第一數(shù)值矩陣塊,第三索引矩陣包括l×m個第三索引矩陣區(qū),每個第一索引矩陣區(qū)包括至少一個第一索引矩陣塊;
28、第四數(shù)值矩陣包括m×n個第二數(shù)值矩陣區(qū),每個第二數(shù)值矩陣區(qū)中包括的至少一個第二數(shù)值矩陣塊,第四索引矩陣包括m×n個第二索引矩陣區(qū),每個第二索引矩陣區(qū)中包括的至少一個第二索引矩陣塊。
29、在一種可實現(xiàn)的方式中,稀疏矩陣處理單元,用于基于l×m個第一數(shù)值矩陣區(qū)中零矩陣區(qū)在第三數(shù)值矩陣中的第一位置、非零矩陣區(qū)在第三數(shù)值矩陣中的第二位置、以及m×n個第二數(shù)值矩陣區(qū)中零矩陣區(qū)在第四數(shù)值矩陣中的第三位置、非零矩陣區(qū)在第四數(shù)值矩陣中的第四位置,確定第二結(jié)果矩陣中包括的l×n個矩陣區(qū)中非零矩陣區(qū)的數(shù)目;
30、稀疏矩陣處理單元,用于基于非零矩陣區(qū)的數(shù)目在內(nèi)存中為第二結(jié)果矩陣申請存儲空間。
31、在一種可實現(xiàn)的方式中,稀疏矩陣處理單元,用于確定第三數(shù)值矩陣第i行中非零矩陣塊的第一數(shù)值矩陣塊與第四數(shù)值矩陣第j列中非零矩陣塊的第二數(shù)值矩陣塊的笛卡爾乘積,包括:
32、稀疏矩陣處理單元,用于如果確定第i行中第k個第一數(shù)值矩陣塊組與第j列中第k個第二數(shù)值矩陣塊組滿足運算條件,則確定第k個第一數(shù)值矩陣塊組和第k個第二數(shù)值矩陣塊組包括的每個非零矩陣塊的第一數(shù)值矩陣塊和每個非零矩陣塊的第二數(shù)值矩陣塊的笛卡爾乘積;其中,
33、第一數(shù)值矩陣塊組包括第i行中在同一第一數(shù)值矩陣區(qū)中的第一數(shù)值矩陣塊,第二數(shù)值矩陣塊組包括第j列中在同一第二數(shù)值矩陣區(qū)中的第二數(shù)值矩陣塊,運算條件為第一數(shù)值矩陣塊組和第二數(shù)值矩陣塊組中均包括非零矩陣塊。
34、第三方面,提供了一種計算設(shè)備,計算設(shè)備包括存儲器和如上第二方面處理器,存儲器中存儲至少一條指令,該處理器執(zhí)行至少一條指令,用于執(zhí)行上述第一方面和/或第一方面中任一可實現(xiàn)的方式所述的方法。
35、第四方面,提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機程序代碼,當所述計算機程序代碼被計算機設(shè)備執(zhí)行時,使得所述計算機設(shè)備執(zhí)行上述第一方面和/或第一方面中任一可實現(xiàn)的方式所述的方法。
36、第五方面,提供了一種包含指令的計算機程序產(chǎn)品,當所述計算機程序產(chǎn)品在計算設(shè)備上運行時,使得所述計算設(shè)備執(zhí)行上述第一方面和/或第一方面中任一可實現(xiàn)的方式所述的方法。