System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及稀疏矩陣乘法,尤其涉及一種稀疏矩陣乘法算子的數據處理加速方法和裝置。
技術介紹
1、在計算機科學、工程和科學計算中,稀疏矩陣是一種重要的數據結構,特別是在處理大規模問題時,如社交網絡分析、圖像處理、線性方程組求解等。稀疏矩陣的特點是大部分元素為零,這使得傳統的矩陣乘法算法效率低下。因此在存儲和計算時可以采用專門的算法和數據結構來提高效率。
2、spmm(sparse?matrix-matrix?multiplication)是稀疏矩陣與稠密矩陣之間的乘法運算。在稀疏矩陣乘法(spmm)計算中,csr(compressed?sparse?row)格式的壓縮方式雖然有效減小了存儲需求,但其在數據訪問上的局限性導致了較低的數據局部性。csr格式將非零元素按行存儲,這樣在處理每一行的非零元素時可能會引起不連續的內存訪問,特別是在稀疏矩陣的行的非零元素分布不均勻時。由于稀疏矩陣的非零元素可能散布在不同的行和列之間,計算過程中的索引查找可能導致cpu頻繁地從一個內存地址跳轉到另一個。當數據訪問效率低下時,cpu會花費更多的時間等待數據從主內存加載到緩存中,降低了緩存命中率,影響了稀疏矩陣乘法的計算效率。
技術實現思路
1、鑒于此,本專利技術實施例提供了一種稀疏矩陣乘法算子的數據處理加速方法和裝置,以消除或改善現有技術中存在的現有的數據壓縮方式導致稀疏矩陣乘法算子運算時內存訪問過于頻繁使得數據處理效率低的缺陷。
2、本專利技術的第一方面提供了一種稀疏矩陣乘法
3、在數據處理過程中獲得需處理的稀疏矩陣乘法算子,所述稀疏矩陣乘法算子包括稀疏矩陣和稠密矩陣的乘法操作;
4、對所述稀疏矩陣進行壓縮以存儲所述稀疏矩陣中非零元及其對應位置;對所述稀疏矩陣進行壓縮后的存儲格式包括非零元數組、行指針數組、全局列索引數組和本地列索引數組;其中,所述非零元數組以行優先的順序記錄所述稀疏矩陣中所有非零元素;所述行指針數組依次記錄所述稀疏矩陣中每行第一個非零元素在所述非零元數組中的位置;所述全局列索引數組包括多個列索引數組,每個列索引數組包括多個全局列索引以記錄所述稀疏矩陣劃分的一組連續預設數量的稀疏行中非零元素在所述稀疏矩陣的列索引,每個列索引數組中所述全局列索引不重復;所述本地列索引數組包括多個本地列索引以記錄所述非零元數組中每個非零元素在所述全局列索引數組中的位置索引;
5、利用所述全局列索引訪問所述稠密矩陣中與所述全局索引進行相乘計算對應的行數據,將所述稠密矩陣中對應的行數據讀取到臨時緩存區;
6、利用所述本地列索引訪問所述臨時緩存區內所述稠密矩陣中相乘計算對應的行數據;
7、按照所述本地列索引訪問所述稠密矩陣中相乘計算對應的行數據的對應關系,計算所述稀疏矩陣中對應非零元素與所述稠密矩陣中相乘計算對應的行數據的乘積并累加,輸出結果矩陣。
8、在本專利技術的一些實施例中,建立所述全局列索引數組的方法包括:
9、獲取待處理的所述稀疏矩陣的列索引數組,所述列索引數組記錄非零元素在所述稀疏矩陣的列索引;
10、以所述稀疏矩陣中連續預設數量的稀疏行為一組,將所述稀疏矩陣中所有非零元素對應的所述列索引數組劃分為多個列索引數組;
11、遍歷每個列索引數組內所有非零元的列索引,刪除重復列索引,得到所述稀疏矩陣對應的所述全局列索引數組。
12、在本專利技術的一些實施例中,計算所述稀疏矩陣中對應非零元素與所述稠密矩陣中相乘計算對應的行數據的乘積并累加,包括:
13、將所述稀疏矩陣中對應非零元素與所述稠密矩陣中相乘計算對應的行數據的乘積記錄到中間計算哈希表中;
14、若后續相乘計算中相乘的非零元素與對應行數據與所述中間運算哈希表記錄的非零元素與對應行數據相同,直接調用該非零元素與對應行數據的乘積;
15、若不存在,則進行相乘計算并將計算結果存入哈希表。
16、在本專利技術的一些實施例中,還包括:
17、在計算稀疏矩陣乘法算子之前,若檢測到所述稀疏矩陣或所述稠密矩陣的大小超過預設閾值,將所述稀疏矩陣或所述稠密矩陣分為多個矩陣塊,將多個矩陣塊分配到多個線程進行并行計算。
18、在本專利技術的一些實施例中,根據所述稀疏矩陣中非零元素數量、所述稠密矩陣維度和當前執行任務可用內存大小動態調整所述臨時緩存區的大小。
19、在本專利技術的一些實施例中,利用所述全局列索引訪問所述稠密矩陣中對應的行數據,將所述稠密矩陣中對應的行數據讀取到臨時緩存區,包括:
20、將所述臨時緩存區劃分為多個子區域,多個全局列索引并行地訪問所述稠密矩陣中對應的行數據,并將所述稠密矩陣中對應的行數據讀取到對應的多個子區域。
21、在本專利技術的一些實施例中,使用哈希表存儲所述稀疏矩陣中非零元及其對應位置。
22、本專利技術的第二方面提供了一種稀疏矩陣乘法算子的數據處理加速裝置,包括處理器、存儲器及存儲在存儲器上的計算機指令,所述處理器用于執行所述計算機指令,當所述計算機指令被執行時該裝置實現如上述任一項所述方法的步驟。
23、本專利技術的第三方面提供了一種計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現如上述任一項所述方法的步驟。
24、本專利技術的第四方面提供了一種計算機程序產品,包括計算機程序,該計算機程序被處理器執行時實現如上述中任一項所述方法的步驟。
25、本專利技術的有益效果至少是:
26、本專利技術提供一種稀疏矩陣乘法算子的數據處理加速方法和裝置,該方法包括:獲取稀疏矩陣乘法算子,對其中的稀疏矩陣壓縮后的存儲形式包括非零元數組、行指針數組、全局列索引數組和本地列索引數組。全局列索引記錄稀疏矩陣劃分的一組連續預設數量的稀疏行中非零元素在稀疏矩陣的列索引,每個列索引數組中全局列索引不重復。本地列索引記錄每個非零元素在全局列索引數組中的位置索引。利用全局列索引訪問稠密矩陣中對應的行數據并讀取到臨時緩存區。利用本地列索引訪問臨時緩存區內稠密矩陣中對應的行數據。計算稀疏矩陣中對應非零元素與稠密矩陣中對應的行數據的乘積并累加,輸出結果矩陣。本專利技術提出針對稀疏矩陣的新壓縮存儲格式以及基于新壓縮存儲格式的稀疏矩陣乘法計算方法,可以顯著提升稀疏矩陣乘法計算的數據局部性,減少稀疏矩陣乘法計算時對內存中數據的訪問頻率,降低內存訪問開銷,提高數據處理效率。
27、本專利技術的附加優點、目的,以及特征將在下面的描述中將部分地加以闡述,且將對于本領域普通技術人員在研究下文后部分地變得明顯,或者可以根據本專利技術的實踐而獲知。本專利技術的目的和其它優點可以通過在說明書以及附圖中具體指出的結構實現到并獲得。
28、本領域技術人員將會理解的是,能夠用本專利技術實現的目的和優點不限于以上具體所述,并且根據以下詳細說明將更清楚地理解本專利技術能夠實現的上述和其他目的。
本文檔來自技高網...【技術保護點】
1.一種稀疏矩陣乘法算子的數據處理加速方法,其特征在于,該方法包括以下步驟:
2.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,建立所述全局列索引數組的方法包括:
3.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,計算所述稀疏矩陣中對應非零元素與所述稠密矩陣中相乘計算對應的行數據的乘積并累加,包括:
4.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,還包括:
5.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,根據所述稀疏矩陣中非零元素數量、所述稠密矩陣維度和當前執行任務可用內存大小動態調整所述臨時緩存區的大小。
6.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,利用所述全局列索引訪問所述稠密矩陣中對應的行數據,將所述稠密矩陣中對應的行數據讀取到臨時緩存區,包括:
7.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,使用哈希表存儲所述稀疏矩陣中非零元及其對應位置。
8.一
9.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,該計算機程序被處理器執行時實現如權利要求1至7中任一項所述方法的步驟。
10.一種計算機程序產品,包括計算機程序,其特征在于,該計算機程序被處理器執行時實現權利要求1至7中任一項所述方法的步驟。
...【技術特征摘要】
1.一種稀疏矩陣乘法算子的數據處理加速方法,其特征在于,該方法包括以下步驟:
2.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,建立所述全局列索引數組的方法包括:
3.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,計算所述稀疏矩陣中對應非零元素與所述稠密矩陣中相乘計算對應的行數據的乘積并累加,包括:
4.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,還包括:
5.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,根據所述稀疏矩陣中非零元素數量、所述稠密矩陣維度和當前執行任務可用內存大小動態調整所述臨時緩存區的大小。
6.根據權利要求1所述的稀疏矩陣乘法算子的數據處理加速方法,其特征在于,利用...
【專利技術屬性】
技術研發人員:李士剛,付容天,許友軒,石金梁,王雪瑩,姚文斌,吳同,
申請(專利權)人:北京郵電大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。