本發(fā)明涉及gpgpu,具體涉及一種基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法、裝置及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、在現(xiàn)代并行計(jì)算中,gpgpu作為一種強(qiáng)大的計(jì)算資源,廣泛應(yīng)用于科學(xué)計(jì)算和深度學(xué)習(xí)等領(lǐng)域。然而,現(xiàn)有數(shù)據(jù)預(yù)取技術(shù)在gpgpu中的應(yīng)用存在顯著局限性。傳統(tǒng)的數(shù)據(jù)預(yù)取方法往往基于簡(jiǎn)單的預(yù)測(cè)模型,未能充分考慮gpgpu中線程執(zhí)行的動(dòng)態(tài)特性和數(shù)據(jù)訪問的空間局部性。這導(dǎo)致在執(zhí)行過程中,緩存命中率不高,內(nèi)存訪問延遲成為制約性能提升的關(guān)鍵因素。尤其是在處理大規(guī)模并行任務(wù)時(shí),線程塊之間的資源競(jìng)爭(zhēng)和緩存未命中問題尤為突出。此外,現(xiàn)有預(yù)取技術(shù)缺乏對(duì)線程塊調(diào)度策略的考慮,未能有效利用gpgpu的硬件資源,從而未能實(shí)現(xiàn)最優(yōu)的數(shù)據(jù)訪問模式。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明為了克服以上技術(shù)的不足,提供了一種降低系統(tǒng)的能耗、提高系統(tǒng)訪存效率的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法、裝置及存儲(chǔ)介質(zhì)。適用于需要處理大量并行任務(wù)和數(shù)據(jù)密集型操作的高性能計(jì)算環(huán)境。
2、本發(fā)明克服其技術(shù)問題所采用的技術(shù)方案是:
3、一種基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,包括:
4、s1.gpgpu啟動(dòng)程序并初始化所需的硬件資源;
5、s2.將計(jì)算任務(wù)分解為多個(gè)線程,得到二維網(wǎng)格化分布的線程塊;
6、s3.對(duì)每個(gè)線程塊進(jìn)行數(shù)據(jù)追蹤與分析;
7、s4.判斷各個(gè)線程塊之間是否具有空間局部性,如果有則執(zhí)行步驟s5,如果沒有則執(zhí)行步驟s6;
8、s5.將具有空間局部性的線程塊分配到gpgpu的同一處理核心上執(zhí)行;
9、s6.線程塊執(zhí)行計(jì)算任務(wù)并對(duì)當(dāng)前內(nèi)存訪問模式進(jìn)行監(jiān)控,選擇硬件控制策略或軟件控制策略;
10、s7.根據(jù)硬件控制策略或軟件控制策略的結(jié)果,從主內(nèi)存或其它慢速存儲(chǔ)介質(zhì)中將數(shù)據(jù)加載到gpgpu的高速緩存中;
11、s8.判斷線程塊的計(jì)算任務(wù)是否執(zhí)行完畢,如果否則返回步驟s6。
12、進(jìn)一步的,步驟s1中所需的硬件資源包括核心、緩存、內(nèi)存控制器。
13、進(jìn)一步的,步驟s2中將分解的線程組織成線程束(warp),將線程束組成二維網(wǎng)格化分布的線程塊(cta)。
14、進(jìn)一步的,步驟s3中對(duì)每個(gè)線程塊進(jìn)行數(shù)據(jù)追蹤與分析包括:追蹤并記錄每個(gè)線程塊的啟動(dòng)時(shí)間、執(zhí)行時(shí)間、完成時(shí)間;分析每個(gè)線程塊對(duì)內(nèi)存的訪問模式。進(jìn)一步的,上述內(nèi)存的訪問模式包括訪問的地址、訪問的頻率、數(shù)據(jù)大小。
15、進(jìn)一步的,上述硬件控制策略為基于對(duì)歷史記錄的在線預(yù)測(cè)的硬件控制策略。
16、進(jìn)一步的,上述軟件控制策略為編程人員或編譯器提前制定的硬件控制策略。
17、另一方面,本發(fā)明還涉及一種基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取裝置,包括:
18、處理器、通信接口、存儲(chǔ)器和通信總線,其中,所述處理器,所述通信接口,所述存儲(chǔ)器通過所述通信總線完成相互間的通信;其中:
19、所述存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
20、所述處理器,用于通過運(yùn)行所述存儲(chǔ)器上所存放的程序來(lái)執(zhí)行:
21、gpgpu啟動(dòng)程序并初始化所需的硬件資源;
22、將計(jì)算任務(wù)分解為多個(gè)線程,得到二維網(wǎng)格化分布的線程塊;
23、對(duì)每個(gè)線程塊進(jìn)行數(shù)據(jù)追蹤與分析;
24、判斷各個(gè)線程塊之間是否具有空間局部性;
25、將具有空間局部性的線程塊分配到gpgpu的同一處理核心上執(zhí)行;
26、線程塊執(zhí)行計(jì)算任務(wù)并對(duì)當(dāng)前內(nèi)存訪問模式進(jìn)行監(jiān)控,選擇硬件控制策略或軟件控制策略;
27、根據(jù)硬件控制策略或軟件控制策略的結(jié)果,從主內(nèi)存或其它慢速存儲(chǔ)介質(zhì)中將數(shù)據(jù)加載到gpgpu的高速緩存中;
28、判斷線程塊的計(jì)算任務(wù)是否執(zhí)行完畢。
29、另一方面,本發(fā)明還涉及一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn):
30、gpgpu啟動(dòng)程序并初始化所需的硬件資源;
31、將計(jì)算任務(wù)分解為多個(gè)線程,得到二維網(wǎng)格化分布的線程塊;
32、對(duì)每個(gè)線程塊進(jìn)行數(shù)據(jù)追蹤與分析;
33、判斷各個(gè)線程塊之間是否具有空間局部性;
34、將具有空間局部性的線程塊分配到gpgpu的同一處理核心上執(zhí)行;
35、線程塊執(zhí)行計(jì)算任務(wù)并對(duì)當(dāng)前內(nèi)存訪問模式進(jìn)行監(jiān)控,選擇硬件控制策略或軟件控制策略;
36、根據(jù)硬件控制策略或軟件控制策略的結(jié)果,從主內(nèi)存或其它慢速存儲(chǔ)介質(zhì)中將數(shù)據(jù)加載到gpgpu的高速緩存中;
37、判斷線程塊的計(jì)算任務(wù)是否執(zhí)行完畢。
38、本發(fā)明的有益效果是:將區(qū)塊cta調(diào)度方法于數(shù)據(jù)預(yù)取相結(jié)合,利用bcs策略將具有空間局部性的線程塊分配到同一處理核心中,增加了預(yù)取數(shù)據(jù)被實(shí)際訪問的可能性,預(yù)取的數(shù)據(jù)更有可能被實(shí)際使用,減少了緩存中無(wú)效數(shù)據(jù)的比例,從而提高了預(yù)取命中率、降低了數(shù)據(jù)被污染的可能;同時(shí),bcs策略的應(yīng)用可以使得預(yù)取算法和操作簡(jiǎn)單化,減少不必要的預(yù)取操作和數(shù)據(jù)訪問模式的優(yōu)化,在預(yù)測(cè)較穩(wěn)定的同時(shí)有效降低了系統(tǒng)的能耗;再次,空間局部性的增強(qiáng)意味著內(nèi)存訪問延遲的降低,大大提高了系統(tǒng)訪存的效率。
1.一種基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于:步驟s1中所需的硬件資源包括核心、緩存、內(nèi)存控制器。
3.根據(jù)權(quán)利要求1所述的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于:步驟s2中將分解的線程組織成線程束,將線程束組成二維網(wǎng)格化分布的線程塊。
4.根據(jù)權(quán)利要求1所述的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于,步驟s3中對(duì)每個(gè)線程塊進(jìn)行數(shù)據(jù)追蹤與分析包括:追蹤并記錄每個(gè)線程塊的啟動(dòng)時(shí)間、執(zhí)行時(shí)間、完成時(shí)間;分析每個(gè)線程塊對(duì)內(nèi)存的訪問模式。
5.根據(jù)權(quán)利要求4所述的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于:所述內(nèi)存的訪問模式包括訪問的地址、訪問的頻率、數(shù)據(jù)大小。
6.根據(jù)權(quán)利要求6所述的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于:所述硬件控制策略為基于對(duì)歷史記錄的在線預(yù)測(cè)的硬件控制策略。
7.根據(jù)權(quán)利要求6所述的基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于:所述軟件控制策略為編程人員或編譯器提前制定的硬件控制策略。
8.一種基于區(qū)塊cta調(diào)度的gpgpu內(nèi)存數(shù)據(jù)預(yù)取裝置,其特征在于,包括:
9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn):