魏雄 王秋嫻 胡倩 閆坤 許萍萍
摘要:圖形處理器(GPU)因其高并發(fā)和高吞吐量的特性被廣泛應用于大數據和人工智能等高性能計算領域,隨著超大規(guī)模集成電路技術的發(fā)展,片上集成的處理單元越來越多,高功耗在增加設備運行成本的同時,降低電池的使用時間和集成電路芯片的可靠性。針對功耗問題,提出一種基于數據依賴的GPU功耗管理方法(DDPM),通過優(yōu)化線程分配和緩存置換策略減少GPU系統功耗。實驗結果表明,DDPM相較于共享感知數據管理方法,L1緩存命中率提高了7%,DRAM數據傳輸量降低了8.1%;MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb方法能效分別提高了2.7%,2.65%,8.67%。
關鍵詞:數據依賴;線程調度;緩存置換;功耗優(yōu)化
中圖分類號:TP338.6文獻標志碼:A文章編號:1008-1739(2021)15-66-7
0引言
圖形處理器(Graphics Processing Unit,GPU)在新材料研究、生物信息、大氣海洋與氣候研究、石油勘探與加工等大規(guī)模計算領域起到關鍵性的加速作用,特別是在人工智能和大數據等數據密集型和計算密集型行業(yè)中得到了廣泛應用[1-2]。超大規(guī)模集成電路技術可以將數百億個晶體管集成到一個芯片上,集成度的快速提升給GPU帶來了巨大的計算能力的同時也產生了較高的功耗。對于超級計算機而言,高性能意味著龐大的能源開支,天河二號峰值計算速度每秒達5.49億億次、持續(xù)計算速度每秒3.39億億次,但是它的電力消耗達到了17.81 MW,工作一小時的電費高達1 000萬以上[3]。功耗增加的同時會帶來溫度的考驗,進而影響處理器總體性能,降低系統的可靠性,因此,GPU功耗問題是GPU廣泛應用必須解決的問題之一。
目前國內外學者針對GPU功耗提出了不同的降耗方法。文獻[4]提出空閑感知電源管理技術—ITAP,根據估測的執(zhí)行單元空閑周期長度采用不同的靜態(tài)降耗技術以降低功耗。文獻[5]提出基于CPU-GPU混合集群的高效實時任務調度方案,將動態(tài)電壓頻率調整技術與調度算法結合,達到節(jié)能效果。文獻[6]提出基于存儲計算融合架構的電源管理方法,通過減少架構中的電源故障,提高能效??偟膩碚f,上述方法從不同的角度對GPU功耗問題進行處理,但是也存在復雜性較高、具有一定局限性、實現成本較高、較少考慮數據鏈路和緩存管理的影響等缺陷。針對上述問題,本文基于線程調度和緩存管理2個方面,提出了DDPM方法。在線程調度方面,通過分析線程和數據塊之間的依賴關系,對同一數據進行讀寫的不同線程進行規(guī)劃。在緩存管理方面,考慮數據塊大小和最近被訪問時間,以減少緩存置換次數,降低緩存爭用情況發(fā)生,達到降耗目的。
1 DDPM功耗管理
GPU在并行執(zhí)行應用程序過程中,線程和數據在片上網絡傳輸和頻繁訪存導致功耗增加。因此,研究減少數據在鏈路的傳輸和訪存次數的方法降低系統的功耗。
1.1 DDPM的線程調度
數據密集型并行計算在線程分配到處理核的同時需要進行數據傳輸,數據在片上鏈路傳輸是系統功耗產生的主要原因之一,DDPM將共享相同數據的線程分配到一個流多處理器(Streaming Multiprocessor,SM)中,以保證線程不會跨多個SM訪問。
1.2 DDPM的緩存管理
眾核系統的多級高速緩存為系統提供了較強的并行處理能力,現有的緩存管理方法成本代價高、復雜性高,命中率低,容易發(fā)生緩存爭用。比如,LRU緩存置換策略只考慮數據塊最近被訪問時間,當緩存沒有空閑時,為了進一步減少數據傳輸,會根據數據塊最近被訪問時間置換出最近最少訪問的數據塊。
以上置換策略沒有考慮到數據塊大小,存在訪問的數據塊需要置換多個數據塊,導致緩存爭用發(fā)生的情況。針對這個問題,設計了一種高效的緩存替換策略。當在緩存置換過程中,首先考慮緩存剩余空間與插入的數據塊的大小比較,如果大于插入的數據塊則直接插入,否則考慮緩存中每個數據塊最近訪問的時間,選擇被訪問時間最久的數據塊標記為即將淘汰的數據塊。其次考慮數據塊的大小,比較即將淘汰的數據塊與插入的數據塊的大小,如果大于插入數據塊,則直接進行置換,如果小于插入的數據塊,放棄淘汰這個塊,并按照緩存空間中數據塊最近被訪問的時間順序依次比較緩存中數據塊與插入數據塊的大小。當某一數據塊滿足其大于插入數據塊大小的條件時,標記為淘汰數據塊并與插入的數據塊進行置換,以滿足插入的數據塊擁有足夠的緩存空間,同時減少緩存置換次數,降低緩存爭用,增加緩存管理方法的命中率。
2 DDPM模型
2.1線程調度
3實驗
使用GPGPU-Sim3.2.2[7]搭建實驗所需的GPU架構平臺,并用GPUWattch[8]評估和比較DDPM方法的性能與功耗。GPGPU-Sim搭建的架構與GPU GTX480類似,共有32個SM,每個SM包含48個線程束,48 KB的共享內存,16 KB的一級數據緩存和2 KB的一級指令緩存。詳細的架構配置如表2所示?;€架構與上述架構配置相同,在線程調度方面使用了輪詢調度,在緩存置換方面使用了LRU策略。使用的基準測試集主要為Parboil[9],Rodinia[10],ISPASS[7],CUDA SDK[11]等。
基于上述環(huán)境,首先利用基準測試程序BLK與GPUWattch來驗證數據傳輸和緩存置換是產生GPU功耗的主要因素。實驗得到的結果如表3所示。
由表3可知,計算核產生的功耗是最多的,在基準測試程序BLK上的功耗占比約為46%,但是數據傳輸和緩存置換產生的功耗也不容忽視,在基準測試程序BLK上,占比約為23%,12%,這是因為GPU除了擁有成百上千的計算單元外,還擁有多層次的存儲結構,程序在計算執(zhí)行過程中也會進行一定的訪存消耗,并且在降耗研究中,更多的研究者主要專注于計算開銷能耗的降低,而忽略了訪存能量的消耗。因此,針對數據傳輸和緩存置換這兩方面進行降耗處理是十分必要的,并且在這兩方面提出降耗方法的優(yōu)化空間也很大。
其次,本文與文獻[12]提出的共享感知數據管理方法進行L1緩存未命中率和DRAM功耗的比較。共享感知數據管理方法主要是將數據塊分為共享塊和私有塊,并將共享塊放在L2緩存中,私有塊放入L1緩存中,以減少線程跨SM訪問數據塊產生的功耗。由于DDPM方法不僅包含數據傳輸方面的降耗,也包含緩存管理方面的降耗,所以對L1緩存未命中率進行實驗十分重要。當L1緩存未命中率提高時,容易出現線程在L1緩存中并未找到所需要的緩存塊,從而需要訪問L2緩存或者主存的情況,這不僅降低了GPU的性能,同時也增加了GPU的數據傳輸能耗。另外,良好的數據管理策略能夠減少DRAM額外讀寫的操作次數,從而降低片上流量,進一步達成降低功耗的目的,因此對DRAM進行數據傳輸量的檢測也十分必要。實驗得到的L1緩存未命中率和DRAM數據傳輸量結果比較如圖2和圖3所示。
圖2顯示了DDPM與共享感知數據管理方法的L1緩存未命中率對比。由圖可知,DDPM方法的L1緩存未命中率相比于共享感知數據管理方法的L1緩存未命中率下降了7%。其中,在測試程序BFS-rodinia中,DDPM比共享感知數據管理方法的L1緩存未命中率降低了17%,是因為DPPM相比較于共享感知數據管理方法,盡可能地將共享同一個數據塊的線程放入相同的SM中,這種集中式的放置不僅延長了這個數據塊在L1中的留存時間,還降低了L1緩存未命中率,而共享感知數據管理方法除了將數據放在L1中,還有一部分放到了L2緩存中,這將導致部分線程并不能在L1中訪問到數據,從而增加L1緩存未命中率。而在測試程序CP中,共享感知數據管理方法比DDPM下降了15%,除了基準測試程序特征上的差異性外,還存在訪存請求上的差異,過于頻繁的訪存請求可能導致DDPM中的L1緩存數據更新加快,從而加劇緩存丟失,提高其緩存未命中率。但是從整體上而言,DDPM方法對L1緩存命中效果更好。
圖3顯示了DDPM與共享感知數據管理方法的DRAM數據傳輸量對比。由圖可知,DDPM比共享感知數據管理方法的DRAM數據傳輸量下降了8.1%。其中,在測試程序NN中,DDPM比共享感知數據管理方法的DRAM數據傳輸量下降了21%,這是由于DDPM相比較于共享感知數據管理方法將訪問同一個數據塊的線程集中放置,而非分散在L2緩存中,使得數據傳輸操作主要集中于L1緩存,進一步降低了數據傳輸功耗和DRAM額外讀寫的操作次數,而后者并沒有對數據塊的放置做出限制。而在測試程序Lud中,共享感知數據管理方法比DDPM的DRAM數據傳輸量降低了7%,可能是因為當在DRAM找到數據后,共享感知數據管理方法采用了緩存繞過的策略,將數據存放在緩存中用于數據交換。但是,從整體上而言,DDPM比共享感知數據管理方法對降低DRAM數據傳輸量的效果更好。
最后,本文與文獻[13]提出的MC-aware-ORI(原始內存爭用感知方法)、MC-aware-LoSe(局部敏感性的內存爭用感知方法)以及MC-aware-SiOb(基于信號阻塞方案的內存爭用感知方法)3種方法進行能效和性能的比較。這3種方法主要是通過判斷內存爭用的嚴重程度來利用SMU對SM的狀態(tài)進行更改以達成降耗目的。而DDPM的緩存置換策略同樣是為了降低緩存抖動,減少緩存爭用情況的發(fā)生而提出的。實驗得到的能效和性能比較如圖4和圖5所示。
圖4顯示了DDPM與MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb以及基線的能效對比。由圖可知,DDPM提高能效是最高的,達15.4%,而MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb分別提高了12.7%,12.75%,6.73%,其中,在VA,BFS,GE,BP等測試程序中,DDPM比MC系列的3種方法的能效提升都要高,這是因為針對爭用問題,DDPM相比較于MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb這3種方法并沒有過多犧牲性能來降低系統功耗,前者通過提出的緩存置換策略來降低緩存抖動,減少緩存爭用的發(fā)生,而后者主要是通過將SM的狀態(tài)從正常模式改變?yōu)樗吣J剑瑥亩_到降低GPU系統功耗的目的,但是這種方式同樣也降低了系統的性能,同時這3種方法需要額外的SMU(SM管理單元)協調對SM的操作,這在另一方面增加了GPU的系統功耗。而在API,SQRNG,MUM等測試程序中,DDPM的能效相比于MC系列的3種方法提升效果并不明顯,是因為DDPM相比較于MC系列需要進行更多的計算,當遇到計算指令較多的基準測試時,其功耗產出也十分明顯,也會降低方法的性能優(yōu)化效果。但是,從整體上而言,DDPM對GPU能效的優(yōu)化效果更好。
圖5顯示了DDPM方法與MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb以及基線的性能對比。由圖可知,與基線相比,MC-aware-ORI的性能損失為2.2%,MC-aware-LoSe的性能損失為2.6%,MC-aware-SiOb的性能損失為0.9%,DDPM方法的性能損失為0.7%,在各個基準測試程序中,DDPM相比較于MC系列的3種方法性能損失是極小的。這是因為DDPM并不需要額外的單元進行計算和監(jiān)控,同時也并沒有因為爭用問題,而讓元件處于休眠狀態(tài),因此DDPM對性能的損失更小。
總的來說,本文提出的DDPM方法可以達到節(jié)能的目的,同時性能損失可以忽略不計。與MC-aware-ORI方法相比,它的能效增加了2.7%,性能損失減少了1.5 %;與MC-aware-LoSe方法相比,它的能效增加了2.65%,性能損失減少了1.9%;與MC-aware-SiOb方法相比,它的能效增加了8.67%,性能損失減少了0.2%。通過以上對實驗結果的比較,可以得出DDPM方法是可行的,并對能耗有良好的降低效果。
4結束語
在不同SM中的線程可能共享大量數據,當線程要訪問數據時,需要跨SM或緩存層次將數據復制到SM的L1緩存中,導致數據移動功耗的增加。針對以上問題,提出了DDPM方法,通過線程調度將訪問相同數據塊的線程放入同一個SM當中,以減少數據傳輸功耗;隨后通過緩存置換策略來進一步提升降耗效果。實驗結果表明,DDPM相比較于共享感知數據管理方法,其L1緩存命中率提高了7%,DRAM數據傳輸量降低了8.1%;相比MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb方法能效分別提高了2.7%,2.65%,8.67%,性能損失可忽略不計。
參考文獻
[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,FALAHATI 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.