System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實現(xiàn)步驟摘要】
本申請涉及計算機體系結(jié)構(gòu),具體而言,涉及一種gpu自適應(yīng)內(nèi)存優(yōu)化方法、裝置、設(shè)備及介質(zhì)。
技術(shù)介紹
1、稀疏矩陣向量乘(spmv)和稀疏矩陣乘法(spmm)是在計算科學和工程領(lǐng)域中廣泛使用的重要數(shù)學運算。在這兩種運算中,矩陣被表示為稀疏矩陣,即大部分元素為零。這種稀疏矩陣的特點使得在處理大規(guī)模數(shù)據(jù)時能夠有效地節(jié)省內(nèi)存和計算資源。而由于spmv和spmm操作的不規(guī)則性以及相關(guān)存儲器存儲帶寬的有限性,導致在gpu上實現(xiàn)更快并行的spmv以及spmm操作具有很大的挑戰(zhàn)性,現(xiàn)有技術(shù)目前主要通過分塊處理稀疏矩陣進行spmv和spmm的加速計算。
2、雖然分塊處理稀疏矩陣具備提高密集向量的數(shù)據(jù)局限性、更容易實現(xiàn)負載均衡以及更加簡便和靈活等優(yōu)勢,但是也存在如下問題:
3、首先,將稀疏矩陣劃分為多個較小的分塊可以更細膩地分配任務(wù),容易實現(xiàn)負載均衡,但會增加通信開銷。
4、其次,spmv和spmm等函數(shù)的子塊內(nèi)部的稀疏格式的數(shù)據(jù)結(jié)構(gòu)通常包括多個數(shù)組,現(xiàn)有技術(shù)均是將多個數(shù)組分別進行malloc,而由于子塊通常很小以及子塊通常是稀疏矩陣,所以,每個數(shù)組所需要的內(nèi)存大小實際上很小,都會遠小于所申請的內(nèi)存單元;這導致生成的多個gpu內(nèi)存單元內(nèi)部存在巨大的內(nèi)存碎片,極大的浪費了gpu寶貴的內(nèi)存資源,同時還很大程度上降低了子塊內(nèi)數(shù)據(jù)的數(shù)據(jù)局部性。
5、最后,在不同品牌的gpu上所造成的空間浪費也不同,比如,在nvidia?gpu上,每次申請分配內(nèi)存,都是以512b為基本內(nèi)存單位去進行分配的,在國產(chǎn)dcu上,每次
技術(shù)實現(xiàn)思路
1、本申請實施例的目的在于提供一種gpu自適應(yīng)內(nèi)存優(yōu)化方法、裝置、設(shè)備及介質(zhì),用以解決了現(xiàn)有技術(shù)存在的上述問題,可實現(xiàn)gpu負載均衡,在避免內(nèi)存空間浪費的前提下,最大化計算的并行性,在gpu上提高基于分塊矩陣的相關(guān)計算性能。
2、第一方面,提供了一種gpu自適應(yīng)內(nèi)存優(yōu)化方法,該方法可以包括:
3、獲取目標稀疏矩陣;其中,所述目標稀疏矩陣中的每一個元素包含所述元素的值以及所述元素在所述目標稀疏矩陣中的橫坐標和縱坐標;
4、對所述目標稀疏矩陣進行優(yōu)化,得到多個優(yōu)化后的子塊矩陣;其中,任一優(yōu)化后的子塊矩陣包含至少兩個數(shù)組;
5、針對任一優(yōu)化后的子塊矩陣,基于gpu包含的多個最小內(nèi)存單元,為所述優(yōu)化后的子塊矩陣對應(yīng)的各數(shù)組均分配同一個目標最小內(nèi)存單元;其中,所述最小內(nèi)存單元為gpu分配內(nèi)存時的最小虛擬內(nèi)存間隔;
6、針對任一優(yōu)化后的子塊矩陣的任一數(shù)組,計算所述數(shù)組在相應(yīng)的目標最小內(nèi)存單元中的內(nèi)存起始地址和內(nèi)存終止地址,得到所述數(shù)組的目標存儲地址;
7、將各個數(shù)組存儲到相應(yīng)的目標存儲地址,得到優(yōu)化后的gpu內(nèi)存。
8、在一個可選的實現(xiàn)中,對所述目標稀疏矩陣進行優(yōu)化,得到多個優(yōu)化后的子塊矩陣,包括:
9、基于gpu線程束中包含的線程數(shù)量和所述最小內(nèi)存單元的容量,對所述目標稀疏矩陣進行分塊,得到多個子塊矩陣;其中,任一子塊矩陣的行數(shù)和列數(shù)均與所述線程數(shù)量相等;
10、提取每個子塊矩陣的矩陣特征;
11、針對任一子塊矩陣,將所述子塊矩陣的矩陣特征輸入預(yù)先訓練好的數(shù)據(jù)存儲格式選擇模型中,得到所述子塊矩陣對應(yīng)的最優(yōu)數(shù)據(jù)存儲格式;其中,所述數(shù)據(jù)存儲格式選擇模型是基于多個不同歷史子塊矩陣以及相應(yīng)歷史子塊矩陣的最優(yōu)數(shù)據(jù)存儲格式訓練得到的;
12、根據(jù)所述最優(yōu)數(shù)據(jù)存儲格式,對所述子塊矩陣中數(shù)據(jù)的存儲格式進行優(yōu)化,得到優(yōu)化后的子塊矩陣。
13、在一個可選的實現(xiàn)中,根據(jù)所述最優(yōu)數(shù)據(jù)存儲格式,對所述子塊矩陣中數(shù)據(jù)的存儲格式進行優(yōu)化,得到優(yōu)化后的子塊矩陣,包括:
14、將所述子塊矩陣中各橫坐標和各縱坐標在所述子塊矩陣中的存儲格式,轉(zhuǎn)換為所述最優(yōu)數(shù)據(jù)存儲格式,得到所述子塊矩陣的位置量行;
15、提取所述子塊矩陣中各元素的值,作為所述子塊矩陣的元素值行;
16、若所述位置量行中任一位置量的數(shù)據(jù)類型所需的內(nèi)存容量大于所述元素值行中任一元素值的數(shù)據(jù)類型所需的內(nèi)存容量,則將所述元素值行作為優(yōu)化后的子塊矩陣的第一行,將所述位置量行作為優(yōu)化后的子塊矩陣的第二行;
17、若所述位置量行中任一位置量的數(shù)據(jù)類型所需的內(nèi)存容量小于所述元素值行中任一元素值的數(shù)據(jù)類型所需的內(nèi)存容量,則將所述元素值行作為優(yōu)化后的子塊矩陣的第二行,將所述位置量行作為優(yōu)化后的子塊矩陣的第一行。
18、在一個可選的實現(xiàn)中,所述方法還包括:
19、獲取gpu的配置信息;其中,所述gpu的配置信息包括:所述目標最小內(nèi)存單元的內(nèi)存首地址和gpu對齊規(guī)則;
20、計算所述數(shù)組在相應(yīng)的目標最小內(nèi)存單元中的內(nèi)存起始地址和內(nèi)存終止地址,得到所述數(shù)組的目標存儲地址,包括:
21、若所述數(shù)組為所述優(yōu)化后的子塊矩陣的第一行對應(yīng)的數(shù)組,則將相應(yīng)的目標最小內(nèi)存單元的內(nèi)存首地址作為所述數(shù)組的內(nèi)存起始地址;
22、將所述內(nèi)存首地址、所述優(yōu)化后的子塊矩陣的第一行所需的內(nèi)存容量和所述數(shù)組的內(nèi)存補位量的和值,作為所述數(shù)組的內(nèi)存終止地址;其中,所述數(shù)組的內(nèi)存補位量是基于所述數(shù)組中數(shù)據(jù)的數(shù)據(jù)類型和所述gpu對齊規(guī)則確定的;
23、若所述數(shù)組不是所述優(yōu)化后的子塊矩陣的第一行對應(yīng)的數(shù)組,則將所述數(shù)組對應(yīng)行的上一行對應(yīng)的內(nèi)存終止地址,作為所述數(shù)組的內(nèi)存起始地址;
24、將所述內(nèi)存起始地址、所述數(shù)組對應(yīng)行所需的內(nèi)存容量和所述數(shù)組的內(nèi)存補位量的加和值,作為所述數(shù)組的內(nèi)存終止地址。
25、在一個可選的實現(xiàn)中,所述目標最小內(nèi)存單元為多個最小內(nèi)存單元中的任意一個,或者為多個連續(xù)的最小內(nèi)存單元。
26、在一個可選的實現(xiàn)中,其中,所述gpu的配置信息還包括:所述目標最小內(nèi)存單元的內(nèi)存容量;
27、在得到多個子塊矩陣之后,所述方法還包括:
28、計算每個子塊矩陣占用的內(nèi)存容量;
29、從得到的多個子塊矩陣中,選取占用內(nèi)存容量最大的子塊矩陣,作為目標子塊矩陣;
30、將所述目標最小內(nèi)存單元的內(nèi)存容量與預(yù)設(shè)內(nèi)存容量閾值相乘,得到內(nèi)存容量分塊閾值;
31、若所述目標子塊矩陣占用的內(nèi)存容量不大于所述內(nèi)存容量分塊閾值,則執(zhí)行步驟:提取每個子塊矩陣的矩陣特征。
32、在一個可選的實現(xiàn)中,所述方法還包括:
33、若所述目標子塊矩陣占用的內(nèi)存容量大于所述內(nèi)存容量分塊閾值,則將所述線程數(shù)量除預(yù)設(shè)線程閾值,得到分塊參數(shù);
34、將所述分塊參數(shù)作為各子塊矩陣的行數(shù)和列數(shù),對所述目標稀疏矩陣進行分塊,得到多個子塊矩陣,返回執(zhí)行本文檔來自技高網(wǎng)...
【技術(shù)保護點】
1.一種GPU自適應(yīng)內(nèi)存優(yōu)化方法,其特征在于,所述方法包括:
2.如權(quán)利要求1所述的方法,其特征在于,對所述目標稀疏矩陣進行優(yōu)化,得到多個優(yōu)化后的子塊矩陣,包括:
3.如權(quán)利要求2所述的方法,其特征在于,根據(jù)所述最優(yōu)數(shù)據(jù)存儲格式,對所述子塊矩陣中數(shù)據(jù)的存儲格式進行優(yōu)化,得到優(yōu)化后的子塊矩陣,包括:
4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
5.如權(quán)利要求1所述的方法,其特征在于,所述目標最小內(nèi)存單元為多個最小內(nèi)存單元中的任意一個,或者為多個連續(xù)的最小內(nèi)存單元。
6.如權(quán)利要求2所述的方法,其特征在于,其中,所述GPU的配置信息還包括:所述最小內(nèi)存單元的內(nèi)存容量;
7.如權(quán)利要求6所述的方法,其特征在于,所述方法還包括:
8.一種GPU自適應(yīng)內(nèi)存優(yōu)化裝置,其特征在于,所述裝置包括:
9.一種電子設(shè)備,其特征在于,所述電子設(shè)備包括處理器、通信接口、存儲器和通信總線,其中,處理器,通信接口,存儲器通過通信總線完成相互間的通信;
10.一種計算機可讀存儲介質(zhì),其特征
...【技術(shù)特征摘要】
1.一種gpu自適應(yīng)內(nèi)存優(yōu)化方法,其特征在于,所述方法包括:
2.如權(quán)利要求1所述的方法,其特征在于,對所述目標稀疏矩陣進行優(yōu)化,得到多個優(yōu)化后的子塊矩陣,包括:
3.如權(quán)利要求2所述的方法,其特征在于,根據(jù)所述最優(yōu)數(shù)據(jù)存儲格式,對所述子塊矩陣中數(shù)據(jù)的存儲格式進行優(yōu)化,得到優(yōu)化后的子塊矩陣,包括:
4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
5.如權(quán)利要求1所述的方法,其特征在于,所述目標最小內(nèi)存單元為多個最小內(nèi)存單元中的任意一個,或者為多個連續(xù)的最小內(nèi)存單元。
6.如權(quán)利...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:解晨浩,叢興,劉軼,錢德沛,楊海龍,
申請(專利權(quán))人:北京航空航天大學,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。