魏雄 王秋嫻 胡倩 閆坤 許萍萍
摘要:圖形處理器(GPU)因其高并發(fā)和高吞吐量的特性被廣泛應(yīng)用于大數(shù)據(jù)和人工智能等高性能計(jì)算領(lǐng)域,隨著超大規(guī)模集成電路技術(shù)的發(fā)展,片上集成的處理單元越來越多,高功耗在增加設(shè)備運(yùn)行成本的同時(shí),降低電池的使用時(shí)間和集成電路芯片的可靠性。針對(duì)功耗問題,提出一種基于數(shù)據(jù)依賴的GPU功耗管理方法(DDPM),通過優(yōu)化線程分配和緩存置換策略減少GPU系統(tǒng)功耗。實(shí)驗(yàn)結(jié)果表明,DDPM相較于共享感知數(shù)據(jù)管理方法,L1緩存命中率提高了7%,DRAM數(shù)據(jù)傳輸量降低了8.1%;MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb方法能效分別提高了2.7%,2.65%,8.67%。
關(guān)鍵詞:數(shù)據(jù)依賴;線程調(diào)度;緩存置換;功耗優(yōu)化
中圖分類號(hào):TP338.6文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2021)15-66-7
0引言
圖形處理器(Graphics Processing Unit,GPU)在新材料研究、生物信息、大氣海洋與氣候研究、石油勘探與加工等大規(guī)模計(jì)算領(lǐng)域起到關(guān)鍵性的加速作用,特別是在人工智能和大數(shù)據(jù)等數(shù)據(jù)密集型和計(jì)算密集型行業(yè)中得到了廣泛應(yīng)用[1-2]。超大規(guī)模集成電路技術(shù)可以將數(shù)百億個(gè)晶體管集成到一個(gè)芯片上,集成度的快速提升給GPU帶來了巨大的計(jì)算能力的同時(shí)也產(chǎn)生了較高的功耗。對(duì)于超級(jí)計(jì)算機(jī)而言,高性能意味著龐大的能源開支,天河二號(hào)峰值計(jì)算速度每秒達(dá)5.49億億次、持續(xù)計(jì)算速度每秒3.39億億次,但是它的電力消耗達(dá)到了17.81 MW,工作一小時(shí)的電費(fèi)高達(dá)1 000萬(wàn)以上[3]。功耗增加的同時(shí)會(huì)帶來溫度的考驗(yàn),進(jìn)而影響處理器總體性能,降低系統(tǒng)的可靠性,因此,GPU功耗問題是GPU廣泛應(yīng)用必須解決的問題之一。
目前國(guó)內(nèi)外學(xué)者針對(duì)GPU功耗提出了不同的降耗方法。文獻(xiàn)[4]提出空閑感知電源管理技術(shù)—ITAP,根據(jù)估測(cè)的執(zhí)行單元空閑周期長(zhǎng)度采用不同的靜態(tài)降耗技術(shù)以降低功耗。文獻(xiàn)[5]提出基于CPU-GPU混合集群的高效實(shí)時(shí)任務(wù)調(diào)度方案,將動(dòng)態(tài)電壓頻率調(diào)整技術(shù)與調(diào)度算法結(jié)合,達(dá)到節(jié)能效果。文獻(xiàn)[6]提出基于存儲(chǔ)計(jì)算融合架構(gòu)的電源管理方法,通過減少架構(gòu)中的電源故障,提高能效。總的來說,上述方法從不同的角度對(duì)GPU功耗問題進(jìn)行處理,但是也存在復(fù)雜性較高、具有一定局限性、實(shí)現(xiàn)成本較高、較少考慮數(shù)據(jù)鏈路和緩存管理的影響等缺陷。針對(duì)上述問題,本文基于線程調(diào)度和緩存管理2個(gè)方面,提出了DDPM方法。在線程調(diào)度方面,通過分析線程和數(shù)據(jù)塊之間的依賴關(guān)系,對(duì)同一數(shù)據(jù)進(jìn)行讀寫的不同線程進(jìn)行規(guī)劃。在緩存管理方面,考慮數(shù)據(jù)塊大小和最近被訪問時(shí)間,以減少緩存置換次數(shù),降低緩存爭(zhēng)用情況發(fā)生,達(dá)到降耗目的。
1 DDPM功耗管理
GPU在并行執(zhí)行應(yīng)用程序過程中,線程和數(shù)據(jù)在片上網(wǎng)絡(luò)傳輸和頻繁訪存導(dǎo)致功耗增加。因此,研究減少數(shù)據(jù)在鏈路的傳輸和訪存次數(shù)的方法降低系統(tǒng)的功耗。
1.1 DDPM的線程調(diào)度
數(shù)據(jù)密集型并行計(jì)算在線程分配到處理核的同時(shí)需要進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)在片上鏈路傳輸是系統(tǒng)功耗產(chǎn)生的主要原因之一,DDPM將共享相同數(shù)據(jù)的線程分配到一個(gè)流多處理器(Streaming Multiprocessor,SM)中,以保證線程不會(huì)跨多個(gè)SM訪問。
1.2 DDPM的緩存管理
眾核系統(tǒng)的多級(jí)高速緩存為系統(tǒng)提供了較強(qiáng)的并行處理能力,現(xiàn)有的緩存管理方法成本代價(jià)高、復(fù)雜性高,命中率低,容易發(fā)生緩存爭(zhēng)用。比如,LRU緩存置換策略只考慮數(shù)據(jù)塊最近被訪問時(shí)間,當(dāng)緩存沒有空閑時(shí),為了進(jìn)一步減少數(shù)據(jù)傳輸,會(huì)根據(jù)數(shù)據(jù)塊最近被訪問時(shí)間置換出最近最少訪問的數(shù)據(jù)塊。
以上置換策略沒有考慮到數(shù)據(jù)塊大小,存在訪問的數(shù)據(jù)塊需要置換多個(gè)數(shù)據(jù)塊,導(dǎo)致緩存爭(zhēng)用發(fā)生的情況。針對(duì)這個(gè)問題,設(shè)計(jì)了一種高效的緩存替換策略。當(dāng)在緩存置換過程中,首先考慮緩存剩余空間與插入的數(shù)據(jù)塊的大小比較,如果大于插入的數(shù)據(jù)塊則直接插入,否則考慮緩存中每個(gè)數(shù)據(jù)塊最近訪問的時(shí)間,選擇被訪問時(shí)間最久的數(shù)據(jù)塊標(biāo)記為即將淘汰的數(shù)據(jù)塊。其次考慮數(shù)據(jù)塊的大小,比較即將淘汰的數(shù)據(jù)塊與插入的數(shù)據(jù)塊的大小,如果大于插入數(shù)據(jù)塊,則直接進(jìn)行置換,如果小于插入的數(shù)據(jù)塊,放棄淘汰這個(gè)塊,并按照緩存空間中數(shù)據(jù)塊最近被訪問的時(shí)間順序依次比較緩存中數(shù)據(jù)塊與插入數(shù)據(jù)塊的大小。當(dāng)某一數(shù)據(jù)塊滿足其大于插入數(shù)據(jù)塊大小的條件時(shí),標(biāo)記為淘汰數(shù)據(jù)塊并與插入的數(shù)據(jù)塊進(jìn)行置換,以滿足插入的數(shù)據(jù)塊擁有足夠的緩存空間,同時(shí)減少緩存置換次數(shù),降低緩存爭(zhēng)用,增加緩存管理方法的命中率。
2 DDPM模型
2.1線程調(diào)度
3實(shí)驗(yàn)
使用GPGPU-Sim3.2.2[7]搭建實(shí)驗(yàn)所需的GPU架構(gòu)平臺(tái),并用GPUWattch[8]評(píng)估和比較DDPM方法的性能與功耗。GPGPU-Sim搭建的架構(gòu)與GPU GTX480類似,共有32個(gè)SM,每個(gè)SM包含48個(gè)線程束,48 KB的共享內(nèi)存,16 KB的一級(jí)數(shù)據(jù)緩存和2 KB的一級(jí)指令緩存。詳細(xì)的架構(gòu)配置如表2所示?;€架構(gòu)與上述架構(gòu)配置相同,在線程調(diào)度方面使用了輪詢調(diào)度,在緩存置換方面使用了LRU策略。使用的基準(zhǔn)測(cè)試集主要為Parboil[9],Rodinia[10],ISPASS[7],CUDA SDK[11]等。
基于上述環(huán)境,首先利用基準(zhǔn)測(cè)試程序BLK與GPUWattch來驗(yàn)證數(shù)據(jù)傳輸和緩存置換是產(chǎn)生GPU功耗的主要因素。實(shí)驗(yàn)得到的結(jié)果如表3所示。
由表3可知,計(jì)算核產(chǎn)生的功耗是最多的,在基準(zhǔn)測(cè)試程序BLK上的功耗占比約為46%,但是數(shù)據(jù)傳輸和緩存置換產(chǎn)生的功耗也不容忽視,在基準(zhǔn)測(cè)試程序BLK上,占比約為23%,12%,這是因?yàn)镚PU除了擁有成百上千的計(jì)算單元外,還擁有多層次的存儲(chǔ)結(jié)構(gòu),程序在計(jì)算執(zhí)行過程中也會(huì)進(jìn)行一定的訪存消耗,并且在降耗研究中,更多的研究者主要專注于計(jì)算開銷能耗的降低,而忽略了訪存能量的消耗。因此,針對(duì)數(shù)據(jù)傳輸和緩存置換這兩方面進(jìn)行降耗處理是十分必要的,并且在這兩方面提出降耗方法的優(yōu)化空間也很大。
其次,本文與文獻(xiàn)[12]提出的共享感知數(shù)據(jù)管理方法進(jìn)行L1緩存未命中率和DRAM功耗的比較。共享感知數(shù)據(jù)管理方法主要是將數(shù)據(jù)塊分為共享塊和私有塊,并將共享塊放在L2緩存中,私有塊放入L1緩存中,以減少線程跨SM訪問數(shù)據(jù)塊產(chǎn)生的功耗。由于DDPM方法不僅包含數(shù)據(jù)傳輸方面的降耗,也包含緩存管理方面的降耗,所以對(duì)L1緩存未命中率進(jìn)行實(shí)驗(yàn)十分重要。當(dāng)L1緩存未命中率提高時(shí),容易出現(xiàn)線程在L1緩存中并未找到所需要的緩存塊,從而需要訪問L2緩存或者主存的情況,這不僅降低了GPU的性能,同時(shí)也增加了GPU的數(shù)據(jù)傳輸能耗。另外,良好的數(shù)據(jù)管理策略能夠減少DRAM額外讀寫的操作次數(shù),從而降低片上流量,進(jìn)一步達(dá)成降低功耗的目的,因此對(duì)DRAM進(jìn)行數(shù)據(jù)傳輸量的檢測(cè)也十分必要。實(shí)驗(yàn)得到的L1緩存未命中率和DRAM數(shù)據(jù)傳輸量結(jié)果比較如圖2和圖3所示。
圖2顯示了DDPM與共享感知數(shù)據(jù)管理方法的L1緩存未命中率對(duì)比。由圖可知,DDPM方法的L1緩存未命中率相比于共享感知數(shù)據(jù)管理方法的L1緩存未命中率下降了7%。其中,在測(cè)試程序BFS-rodinia中,DDPM比共享感知數(shù)據(jù)管理方法的L1緩存未命中率降低了17%,是因?yàn)镈PPM相比較于共享感知數(shù)據(jù)管理方法,盡可能地將共享同一個(gè)數(shù)據(jù)塊的線程放入相同的SM中,這種集中式的放置不僅延長(zhǎng)了這個(gè)數(shù)據(jù)塊在L1中的留存時(shí)間,還降低了L1緩存未命中率,而共享感知數(shù)據(jù)管理方法除了將數(shù)據(jù)放在L1中,還有一部分放到了L2緩存中,這將導(dǎo)致部分線程并不能在L1中訪問到數(shù)據(jù),從而增加L1緩存未命中率。而在測(cè)試程序CP中,共享感知數(shù)據(jù)管理方法比DDPM下降了15%,除了基準(zhǔn)測(cè)試程序特征上的差異性外,還存在訪存請(qǐng)求上的差異,過于頻繁的訪存請(qǐng)求可能導(dǎo)致DDPM中的L1緩存數(shù)據(jù)更新加快,從而加劇緩存丟失,提高其緩存未命中率。但是從整體上而言,DDPM方法對(duì)L1緩存命中效果更好。
圖3顯示了DDPM與共享感知數(shù)據(jù)管理方法的DRAM數(shù)據(jù)傳輸量對(duì)比。由圖可知,DDPM比共享感知數(shù)據(jù)管理方法的DRAM數(shù)據(jù)傳輸量下降了8.1%。其中,在測(cè)試程序NN中,DDPM比共享感知數(shù)據(jù)管理方法的DRAM數(shù)據(jù)傳輸量下降了21%,這是由于DDPM相比較于共享感知數(shù)據(jù)管理方法將訪問同一個(gè)數(shù)據(jù)塊的線程集中放置,而非分散在L2緩存中,使得數(shù)據(jù)傳輸操作主要集中于L1緩存,進(jìn)一步降低了數(shù)據(jù)傳輸功耗和DRAM額外讀寫的操作次數(shù),而后者并沒有對(duì)數(shù)據(jù)塊的放置做出限制。而在測(cè)試程序Lud中,共享感知數(shù)據(jù)管理方法比DDPM的DRAM數(shù)據(jù)傳輸量降低了7%,可能是因?yàn)楫?dāng)在DRAM找到數(shù)據(jù)后,共享感知數(shù)據(jù)管理方法采用了緩存繞過的策略,將數(shù)據(jù)存放在緩存中用于數(shù)據(jù)交換。但是,從整體上而言,DDPM比共享感知數(shù)據(jù)管理方法對(duì)降低DRAM數(shù)據(jù)傳輸量的效果更好。
最后,本文與文獻(xiàn)[13]提出的MC-aware-ORI(原始內(nèi)存爭(zhēng)用感知方法)、MC-aware-LoSe(局部敏感性的內(nèi)存爭(zhēng)用感知方法)以及MC-aware-SiOb(基于信號(hào)阻塞方案的內(nèi)存爭(zhēng)用感知方法)3種方法進(jìn)行能效和性能的比較。這3種方法主要是通過判斷內(nèi)存爭(zhēng)用的嚴(yán)重程度來利用SMU對(duì)SM的狀態(tài)進(jìn)行更改以達(dá)成降耗目的。而DDPM的緩存置換策略同樣是為了降低緩存抖動(dòng),減少緩存爭(zhēng)用情況的發(fā)生而提出的。實(shí)驗(yàn)得到的能效和性能比較如圖4和圖5所示。
圖4顯示了DDPM與MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb以及基線的能效對(duì)比。由圖可知,DDPM提高能效是最高的,達(dá)15.4%,而MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb分別提高了12.7%,12.75%,6.73%,其中,在VA,BFS,GE,BP等測(cè)試程序中,DDPM比MC系列的3種方法的能效提升都要高,這是因?yàn)獒槍?duì)爭(zhēng)用問題,DDPM相比較于MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb這3種方法并沒有過多犧牲性能來降低系統(tǒng)功耗,前者通過提出的緩存置換策略來降低緩存抖動(dòng),減少緩存爭(zhēng)用的發(fā)生,而后者主要是通過將SM的狀態(tài)從正常模式改變?yōu)樗吣J剑瑥亩_(dá)到降低GPU系統(tǒng)功耗的目的,但是這種方式同樣也降低了系統(tǒng)的性能,同時(shí)這3種方法需要額外的SMU(SM管理單元)協(xié)調(diào)對(duì)SM的操作,這在另一方面增加了GPU的系統(tǒng)功耗。而在API,SQRNG,MUM等測(cè)試程序中,DDPM的能效相比于MC系列的3種方法提升效果并不明顯,是因?yàn)镈DPM相比較于MC系列需要進(jìn)行更多的計(jì)算,當(dāng)遇到計(jì)算指令較多的基準(zhǔn)測(cè)試時(shí),其功耗產(chǎn)出也十分明顯,也會(huì)降低方法的性能優(yōu)化效果。但是,從整體上而言,DDPM對(duì)GPU能效的優(yōu)化效果更好。
圖5顯示了DDPM方法與MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb以及基線的性能對(duì)比。由圖可知,與基線相比,MC-aware-ORI的性能損失為2.2%,MC-aware-LoSe的性能損失為2.6%,MC-aware-SiOb的性能損失為0.9%,DDPM方法的性能損失為0.7%,在各個(gè)基準(zhǔn)測(cè)試程序中,DDPM相比較于MC系列的3種方法性能損失是極小的。這是因?yàn)镈DPM并不需要額外的單元進(jìn)行計(jì)算和監(jiān)控,同時(shí)也并沒有因?yàn)闋?zhēng)用問題,而讓元件處于休眠狀態(tài),因此DDPM對(duì)性能的損失更小。
總的來說,本文提出的DDPM方法可以達(dá)到節(jié)能的目的,同時(shí)性能損失可以忽略不計(jì)。與MC-aware-ORI方法相比,它的能效增加了2.7%,性能損失減少了1.5 %;與MC-aware-LoSe方法相比,它的能效增加了2.65%,性能損失減少了1.9%;與MC-aware-SiOb方法相比,它的能效增加了8.67%,性能損失減少了0.2%。通過以上對(duì)實(shí)驗(yàn)結(jié)果的比較,可以得出DDPM方法是可行的,并對(duì)能耗有良好的降低效果。
4結(jié)束語(yǔ)
在不同SM中的線程可能共享大量數(shù)據(jù),當(dāng)線程要訪問數(shù)據(jù)時(shí),需要跨SM或緩存層次將數(shù)據(jù)復(fù)制到SM的L1緩存中,導(dǎo)致數(shù)據(jù)移動(dòng)功耗的增加。針對(duì)以上問題,提出了DDPM方法,通過線程調(diào)度將訪問相同數(shù)據(jù)塊的線程放入同一個(gè)SM當(dāng)中,以減少數(shù)據(jù)傳輸功耗;隨后通過緩存置換策略來進(jìn)一步提升降耗效果。實(shí)驗(yàn)結(jié)果表明,DDPM相比較于共享感知數(shù)據(jù)管理方法,其L1緩存命中率提高了7%,DRAM數(shù)據(jù)傳輸量降低了8.1%;相比MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb方法能效分別提高了2.7%,2.65%,8.67%,性能損失可忽略不計(jì)。
參考文獻(xiàn)
[1] NAGALAKSHMI K,GOMATHI N.Analysis of Power Management Techniques in Multicore Processors[C]// Artificial Intelligence and Evolutionary Computations in Engineering Systems.Singapore: Springer, 2017: 397-418.
[2] LI JK,LI MJ,WANG GY,et al. Task Scheduling Approach to Save Energy of Heterogeneous Computing Systems[C]//2019 International Conference on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData). Atlanta: IEEE, 2019: 1-10.
[3] SADROSADATI M,EHSANI S B,F(xiàn)ALAHATI H, et al. ITAP: Idle-Time-Aware Power Management for GPU Execution Units [J].ACM Transactions on Architecture and Code Optimization (TACO),2019,16(1):3.
[4] MEI XX,CHU XW,LIU H, et al. Energy Efficient Real-time Task Scheduling on CPU-GPU Hybrid Clusters[C]//IEEE INFOCOM 2017-IEEE Conference on Computer Communications. Atlanta: IEEE, 2017: 1-9.
[5] ZHANG C, MENG T, SUN GY. Pm3: Power Modeling and Power Management for Processing-in-Memory[C]//2018 IEEE International Symposium on High Performance Computer Architecture (HPCA). Vienna: IEEE, 2018: 558-570.
[6] BAKHODA A, YUAN G L, FUNG W W L, et al. Analyzing CUDA Workloads Using A Detailed GPU Simulator[C]//2009 IEEE International Symposium on Performance Analysis of Systems and Software.Boston: IEEE, 2009: 163-174.
[7] LENG J,HETHERINGTON T,ELTANTAWY A,et al. GPUWattch: Enabling Energy Optimizations in GPGPUs[J]. ACM SIGARCH Computer Architecture News,2013,41(3): 487-498.
[8] STRATTON J A, RODRIGUES C, SUNG I J, et al. Parboil: A Revised Benchmark Suite for Scientific and Commercial Throughput Computing[J]. Center for Reliable and High-Performance Computing,2012,127:1-7.
[9] CHE S,BOYER M,MENG JY, et al.Rodinia: A Benchmark Suite for Heterogeneous Computing[C]//2009 IEEE International Symposium on Workload Characterization(IISWC).Austin: IEEE, 2009: 44-54.
[10] Yu Z , Hai J , Goswami N , et al. Hierarchically characterizing CUDA program behavior. IEEE, 2011.
[11] TABBAKH A, ANNAVARAM M, QIAN X. Power Efficient Sharing-Aware GPU Data Management[C]// 2017 IEEE International Parallel & Distributed Processing Symposium. Orlando, FL:IEEE, 2017:1-10.
[12] CHOI H J, SON D O, KIM C H. Memory Contention Aware Power Management for High Performance GPUs[C]// International Conference on Parallel and Distributed Computing: Applications and Technologies.Singapore : Springer,2018: 220-229.