基于数据依赖的GPU功耗管理方法研究

2021-09-18 07:49魏雄王秋娴胡倩闫坤许萍萍
计算机与网络 2021年15期

魏雄 王秋娴 胡倩 闫坤 许萍萍

摘要:图形处理器(GPU)因其高并发和高吞吐量的特性被广泛应用于大数据和人工智能等高性能计算领域,随着超大规模集成电路技术的发展,片上集成的处理单元越来越多,高功耗在增加设备运行成本的同时,降低电池的使用时间和集成电路芯片的可靠性。针对功耗问题,提出一种基于数据依赖的GPU功耗管理方法(DDPM),通过优化线程分配和缓存置换策略减少GPU系统功耗。实验结果表明,DDPM相较于共享感知数据管理方法,L1缓存命中率提高了7%,DRAM数据传输量降低了8.1%;MC-aware-ORI,MC-aware-LoSe,MC-aware-SiOb方法能效分别提高了2.7%,2.65%,8.67%。

关键词:数据依赖;线程调度;缓存置换;功耗优化

中图分类号:TP338.6文献标志码:A文章编号:1008-1739(2021)15-66-7

0引言

图形处理器(Graphics Processing Unit,GPU)在新材料研究、生物信息、大气海洋与气候研究、石油勘探与加工等大规模计算领域起到关键性的加速作用,特别是在人工智能和大数据等数据密集型和计算密集型行业中得到了广泛应用[1-2]。超大规模集成电路技术可以将数百亿个晶体管集成到一个芯片上,集成度的快速提升给GPU带来了巨大的计算能力的同时也产生了较高的功耗。对于超级计算机而言,高性能意味着庞大的能源开支,天河二号峰值计算速度每秒达5.49亿亿次、持续计算速度每秒3.39亿亿次,但是它的电力消耗达到了17.81 MW,工作一小时的电费高达1 000万以上[3]。功耗增加的同时会带来温度的考验,进而影响处理器总体性能,降低系统的可靠性,因此,GPU功耗问题是GPU广泛应用必须解决的问题之一。

目前国内外学者针对GPU功耗提出了不同的降耗方法。文献[4]提出空闲感知电源管理技术—ITAP,根据估测的执行单元空闲周期长度采用不同的静态降耗技术以降低功耗。文献[5]提出基于CPU-GPU混合集群的高效实时任务调度方案,将动态电压频率调整技术与调度算法结合,达到节能效果。文献[6]提出基于存储计算融合架构的电源管理方法,通过减少架构中的电源故障,提高能效。总的来说,上述方法从不同的角度对GPU功耗问题进行处理,但是也存在复杂性较高、具有一定局限性、实现成本较高、较少考虑数据链路和缓存管理的影响等缺陷。针对上述问题,本文基于线程调度和缓存管理2个方面,提出了DDPM方法。在线程调度方面,通过分析线程和数据块之间的依赖关系,对同一数据进行读写的不同线程进行规划。在缓存管理方面,考虑数据块大小和最近被访问时间,以减少缓存置换次数,降低缓存争用情况发生,达到降耗目的。

1 DDPM功耗管理

GPU在并行执行应用程序过程中,线程和数据在片上网络传输和频繁访存导致功耗增加。因此,研究减少数据在链路的传输和访存次数的方法降低系统的功耗。

1.1 DDPM的线程调度

数据密集型并行计算在线程分配到处理核的同时需要进行数据传输,数据在片上链路传输是系统功耗产生的主要原因之一,DDPM将共享相同数据的线程分配到一个流多处理器(Streaming Multiprocessor,SM)中,以保证线程不会跨多个SM访问。

1.2 DDPM的缓存管理

众核系统的多级高速缓存为系统提供了较强的并行处理能力,现有的缓存管理方法成本代价高、复杂性高,命中率低,容易发生缓存争用。比如,LRU缓存置换策略只考虑数据块最近被访问时间,当缓存没有空闲时,为了进一步减少数据传输,会根据数据块最近被访问时间置换出最近最少访问的数据块。

以上置换策略没有考虑到数据块大小,存在访问的数据块需要置换多个数据块,导致缓存争用发生的情况。针对这个问题,设计了一种高效的缓存替换策略。当在緩存置换过程中,首先考虑缓存剩余空间与插入的数据块的大小比较,如果大于插入的数据块则直接插入,否则考虑缓存中每个数据块最近访问的时间,选择被访问时间最久的数据块标记为即将淘汰的数据块。其次考虑数据块的大小,比较即将淘汰的数据块与插入的数据块的大小,如果大于插入数据块,则直接进行置换,如果小于插入的数据块,放弃淘汰这个块,并按照缓存空间中数据块最近被访问的时间顺序依次比较缓存中数据块与插入数据块的大小。当某一数据块满足其大于插入数据块大小的条件时,标记为淘汰数据块并与插入的数据块进行置换,以满足插入的数据块拥有足够的缓存空间,同时减少缓存置换次数,降低缓存争用,增加缓存管理方法的命中率。

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]等。

基于上述环境,首先利用基准测试程序BLK与GPUWattch来验证数据传输和缓存置换是产生GPU功耗的主要因素。实验得到的结果如表3所示。

由表3可知,计算核产生的功耗是最多的,在基准测试程序BLK上的功耗占比约为46%,但是数据传输和缓存置换产生的功耗也不容忽视,在基准测试程序BLK上,占比约为23%,12%,这是因为GPU除了拥有成百上千的计算单元外,还拥有多层次的存储结构,程序在计算执行过程中也会进行一定的访存消耗,并且在降耗研究中,更多的研究者主要专注于计算开销能耗的降低,而忽略了访存能量的消耗。因此,针对数据传输和缓存置换这两方面进行降耗处理是十分必要的,并且在这两方面提出降耗方法的优化空间也很大。

其次,本文与文献[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的状态进行更改以达成降耗目的。而DDPM的缓存置换策略同样是为了降低缓存抖动,减少缓存争用情况的发生而提出的。实验得到的能效和性能比较如图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种方法并没有过多牺牲性能来降低系统功耗,前者通过提出的缓存置换策略来降低缓存抖动,减少缓存争用的发生,而后者主要是通过将SM的状态从正常模式改变为睡眠模式,从而达到降低GPU系统功耗的目的,但是这种方式同样也降低了系统的性能,同时这3种方法需要额外的SMU(SM管理单元)协调对SM的操作,这在另一方面增加了GPU的系统功耗。而在API,SQRNG,MUM等测试程序中,DDPM的能效相比于MC系列的3种方法提升效果并不明显,是因为DDPM相比较于MC系列需要进行更多的计算,当遇到计算指令较多的基准测试时,其功耗产出也十分明显,也会降低方法的性能优化效果。但是,从整体上而言,DDPM对GPU能效的优化效果更好。

圖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并不需要额外的单元进行计算和监控,同时也并没有因为争用问题,而让元件处于休眠状态,因此DDPM对性能的损失更小。

总的来说,本文提出的DDPM方法可以达到节能的目的,同时性能损失可以忽略不计。与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.