一种基于流多处理器内核独占和预留的GPU服务质量保障方法技术

技术编号:20545234 阅读:28 留言:0更新日期:2019-03-09 18:12
本发明专利技术公开了一种基于流多处理器内核独占和预留的GPU服务质量保障方法,包括:1)初始时根据应用的QoS指标对流多处理器(Streaming Multiprocessor,简称为SM)进行合理划分;2)运行时通过有效决策,对于各应用的SM数量进行周期性的动态调整,从而保证应用的QoS指标;3)在动态调整的过程中,通过阶段性的数据收集,可以识别各应用的类型(内存密集型或是计算密集型);4)依据应用类型信息提高GPU的能效或吞吐量。本发明专利技术充分挖掘了GPU并发内核的性能潜力,能够在有效实现QoS指标的同时,最大限度地平衡GPU的能效和吞吐量:对于计算密集型的应用,充分提升GPU的线程级并发性;对于内存密集型的应用,充分降低GPU的能耗。

A Quality of Service Guarantee Method for GPU Based on Streaming Multiprocessor Kernel Exclusion and Reservation

The invention discloses a method for guaranteeing the quality of service of GPU based on the exclusive and reserved core of streaming multiprocessor, which includes: 1) reasonably partitioning the streaming multiprocessor (SM) according to the applied QoS index at the beginning; 2) dynamically adjusting the number of SMs of each application periodically through effective decision-making at the run time, thereby guaranteeing the applied QoS index; In the process of dynamic adjustment, the types of applications (memory-intensive or computational-intensive) can be identified through periodic data collection; 4) GPU energy efficiency or throughput can be improved based on application type information. The invention fully taps the performance potential of GPU concurrent core, and can effectively achieve the quality of service index, while maximizing the balance of GPU energy efficiency and throughput: for computing-intensive applications, fully enhance the thread-level concurrency of GPU; for memory-intensive applications, fully reduce the energy consumption of GPU.

【技术实现步骤摘要】
一种基于流多处理器内核独占和预留的GPU服务质量保障方法
本专利技术涉及并发内核执行、片上资源管理和线程块调度等领域,特别是涉及一种基于流多处理器内核独占和预留的GPU服务质量保障方法。
技术介绍
在高性能计算领域,图形处理器(GraphicsProcessingUnits,以下简称为GPU)越来越多地被用于通用计算的加速。GPU通过大量地利用线程级并行(ThreadLevelParallelism,以下简称为TLP)来实现高计算能力。流多处理器(StreamingMultiprocessors,以下简称为SM)负责执行GPU的计算任务,SM中包含很多计算核心(ComputeCores)和资源,如寄存器(Registers)、共享内存(SharedMemory)和L1高速缓存(L1Cache)。SM间通过互连网络(InterconnectNetwork)分享设备内存(DeviceMemory)。当多个应用共享GPU时,GPU支持并发内核,内核管理器(KernelManagementUnit,以下简称为KMU)会分配内核到内核分发器(KernelDistributorUnit,以下简称为KDU),KDU中的内核以先到先服务(first-come-first-serve,以下简称为FCFS)的顺序执行。但当多个应用并发执行时,线程块调度器会等待前一个内核中的线程块调度完成后再调度下一个内核,且线程块调度器会依据轮询(Round-Robin)策略将线程块均匀调度到所有SM中。随着应用数量的井喷式增长,当多个并发应用共享GPU时,如何更好地提高吞吐量和能效变得尤为重要。对于GPU上的多任务并行,学术界和工业界提出了两种主要技术:空间多任务(SpatialMultitasking)和同时多任务(SimultaneousMultitasking)。空间多任务即GPU中SM可划分为几个互不相交的子集,每个子集分配给不同的应用同时运行;同时多任务对于SM资源进行细粒度共享(Fine-grainedSharing),在单个SM上同时执行多个应用。当前的通用GPU可以在芯片级管理SM资源,从而支持空间多任务。除此之外,当应用需要保证服务质量(QualityofService,以下简称为QoS)时,必须分配足够资源满足应用的QoS要求,这对GPU架构提出了更大的挑战。为了保证应用的QoS要求,同时最大化GPU的吞吐量和能效,已有的解决方案主要分为以下两个方面:(1)适应GPU架构的应用执行模型这方面的研究是通过更改应用的默认执行模式以迎合GPU加速器的特性。如基于优先级的内核调度,即当多个内核分发到GPU时,总是先执行高优先级的内核。或者可以将要提交到GPU的所有任务抽象化为任务队列,在CPU端管理并预测每个任务的执行时长,并重排任务以满足应用的QoS要求。或者利用细粒度的SM资源模型,应用类似于持久化线程(persistentthreads)的技术实现SM上的资源预留,从而限制非延迟敏感型应用的资源占用;如果当前预留资源仍不能有效满足QoS指标,动态资源适应模块会被调用以抢占当前执行任务所占资源。该类方法一般以内核为粒度进行优化,不能很好地处理长时间运行的内核,除此之外内核抢占再分发的延迟和能耗也会非常大。(2)GPU架构层次的QoS执行模型这方面的研究是基于GPU上的多任务并行,主要分为空间多任务和同时多任务。空间多任务通过运行时策略估计延迟敏感型应用的性能表现,再通过线性性能模型(LinearPerformanceModel)预测各应用所需SM数量。同时多任务利用细粒度的QoS管理,将所有应用铺分到所有SM中,对于延迟敏感型应用和非延迟敏感型应用分配不同的配额(Quota),从而对单个SM上资源进行细粒度的分配。同时多任务的不足之处在于不支持电源门控(PowerGating),GPU上的所有SM一直在被占用,能耗较高;而且当多个内核占用同一个SM时,L1高速缓存(L1Cache)的冲突会降低性能。综上所述,应用执行模型一般从软件角度出发,粒度为内核或其他GPU任务,使其适应GPU架构;而QoS执行模型一般从GPU架构出发,使其适应各种应用。这两方面模型可以相互兼容。随着GPU的更新换代,值得注意的有两点:1)SM数量增长迅速,最新的Pascal和Volta架构分别有56个SM(TeslaP100)和80个SM(TeslaV100);2)单个SM上资源如寄存器文件、共享内存和L1Cache大小基本没有变化。由此可见,考虑到未来GPU架构上SM数量不断增加的趋势,本专利技术以SM为粒度进行内核抢占和预留,可以很好地处理长期运行的内核,避免了频繁的内核抢占和分发;而且单个SM由内核独占,避免了L1Cache的冲突,并支持电源门控以降低能耗。
技术实现思路
本专利技术技术解决问题:克服现有技术的不足和缺陷,提供一种基于流多处理器内核独占和预留的GPU服务质量保障方法,满足多应用在GPU上执行的QoS指标,充分挖掘了GPU并发内核的潜力,同时可以自适应地最大化GPU的能效或吞吐量。本专利技术的技术解决方案,基于流多处理器内核独占和预留的GPU服务质量保障方法,包括如下步骤:步骤1:多个GPU应用在CPU端启动,由用户指定需要保证服务质量QoS(QualityofService)的应用和QoS指标;应用的并行部分即GPU内核通过运行时API加载到GPU(GPU应用与GPU内核是一对多的关系,一个GPU应用对应一个或多个GPU内核),GPU内核根据所属应用标识分为延迟敏感型内核和非延迟敏感型内核;步骤2:每个GPU内核由软件工作队列SWQ(SoftwareWorkQueue)ID所标识,并被推入位于网格管理器GMU(GridManagementUnit)的内核等待池(PendingKernelPool);步骤3:具有相同SWQID的GPU内核将映射到同一个硬件工作队列HWQ(HardwareWorkQueue)中;位于每个HWQ头部的GPU内核由所属应用的QoS指标确定初始的流多处理器SM(StreamingMultiprocessor)分配方案,基于分配方案SM有三种状态,分别为:由延迟敏感型内核占用、由非延迟敏感型内核占用、关闭并预留;步骤4:确定SM分配方案后,每个HWQ头部的GPU内核中的线程块ThreadBlock通过线程块调度器分配给SM;步骤5:GPU内核的执行以时间长度Tepoch为单位,在每个Tepoch结束后,收集各GPU内核的每周期执行指令数IPC(InstructionsPerCycle),所述IPC包括GPI内核从最初执行开始到当前Tepoch结束的总IPC,即IPCtorat和当前Tepoch的IPC,即IPCepoch;步骤6:获得IPC信息后,由决策算法确定下一个Tepoch期间各GPU内核的SM分配方案,SM分配方案与GPU内核类型相关,包括计算密集型CI(Compute-intensive)或内存密集型MI(Memory-intensive);步骤7:由SM分配方案确定当前为止对于非延迟敏感型内核的最佳SM分配个数SMeptmal,当分配为SMoptmal的SM时,非延迟敏感型内核的性能和能耗达到理想本文档来自技高网
...

【技术保护点】
1.一种基于流多处理器内核独占和预留的GPU服务质量保障方法,其特征在于,包括以下步骤:步骤1:多个GPU应用在CPU端启动,由用户指定需要保证服务质量QoS(Quality of Service)的应用和QoS指标;应用的并行部分即GPU内核通过运行时API加载到GPU(GPU应用与GPU内核是一对多的关系,一个GPU应用对应一个或多个GPU内核),GPU内核根据所属应用标识分为延迟敏感型内核和非延迟敏感型内核;步骤2:每个GPU内核由软件工作队列SWQ(Software Work Queue)ID所标识,并被推入位于网格管理器GMU(Grid Management Unit)的内核等待池(Pending Kernel Pool);步骤3:具有相同SWQ ID的GPU内核将映射到同一个硬件工作队列HWQ(Hardware Work Queue)中;位于每个HWQ头部的GPU内核由所属应用的QoS指标确定初始的流多处理器SM(Streaming Multiprocessor)分配方案,基于分配方案SM有三种状态,分别为:由延迟敏感型内核占用、由非延迟敏感型内核占用、关闭并预留;步骤4:确定SM分配方案后,每个HWQ头部的GPU内核中的线程块Thread Block通过线程块调度器分配给SM;步骤5:GPU内核的执行以时间长度Tepoch为单位,在每个Tepoch结束后,收集各GPU内核的每周期执行指令数IPC(Instructions Per Cycle),所述IPC包括GPU内核从最初执行开始到当前Tepoch结束的总IPC,即IPCtotal和当前Tepoch的IPC,即IPCepoch;步骤6:获得IPC信息后,由决策算法确定下一个Tepoch期间各GPU内核的SM分配方案,SM分配方案与GPU内核类型相关,包括计算密集型CI(Compute‑intensive)或内存密集型MI(Memory‑intensive);步骤7:由SM分配方案确定当前为止对于非延迟敏感型内核的最佳SM分配个数SMoptimal,当分配为SMoptimal的SM时,非延迟敏感型内核的性能和能耗达到理想平衡,从而最大限度地提高吞吐量或能效;步骤8:获得SM分配方案后,再由决策算法确定需要换入Swap‑in和换出Swap‑out的SM编号,即换出的SM在下一个Tepoch时内不再由原GPU核占用,而换入的SM在下一个Tepoch时内由目标GPU内核占用;步骤9:当某个SM被标记为换入或换出时,有两种情况:一为该SM为预留状态,此时直接换入,由目标GPU内核所占用;二为该SM已被其它GPU内核所占用,此时要等待SM中所有线程块执行结束,再执行换出和换入操作;步骤10:所有SM换入和换出完成后,再开始计时下一次Tepoch,以确保下一次收集数据的准确性;步骤11:若每个GPU应用只执行一次GPU内核,则重复步骤5至步骤10直到所有GPU内核执行结束;若某个应用执行多次GPU内核,则下一次GPU内核的初始SM分配编号与上一次完全相同,再重复步骤5至步骤10,直到当前分发的GPU内核执行结束;步骤12:重复步骤11直到所有GPU应用执行结束。...

【技术特征摘要】
1.一种基于流多处理器内核独占和预留的GPU服务质量保障方法,其特征在于,包括以下步骤:步骤1:多个GPU应用在CPU端启动,由用户指定需要保证服务质量QoS(QualityofService)的应用和QoS指标;应用的并行部分即GPU内核通过运行时API加载到GPU(GPU应用与GPU内核是一对多的关系,一个GPU应用对应一个或多个GPU内核),GPU内核根据所属应用标识分为延迟敏感型内核和非延迟敏感型内核;步骤2:每个GPU内核由软件工作队列SWQ(SoftwareWorkQueue)ID所标识,并被推入位于网格管理器GMU(GridManagementUnit)的内核等待池(PendingKernelPool);步骤3:具有相同SWQID的GPU内核将映射到同一个硬件工作队列HWQ(HardwareWorkQueue)中;位于每个HWQ头部的GPU内核由所属应用的QoS指标确定初始的流多处理器SM(StreamingMultiprocessor)分配方案,基于分配方案SM有三种状态,分别为:由延迟敏感型内核占用、由非延迟敏感型内核占用、关闭并预留;步骤4:确定SM分配方案后,每个HWQ头部的GPU内核中的线程块ThreadBlock通过线程块调度器分配给SM;步骤5:GPU内核的执行以时间长度Tepoch为单位,在每个Tepoch结束后,收集各GPU内核的每周期执行指令数IPC(InstructionsPerCycle),所述IPC包括GPU内核从最初执行开始到当前Tepoch结束的总IPC,即IPCtotal和当前Tepoch的IPC,即IPCepoch;步骤6:获得IPC信息后,由决策算法确定下一个Tepoch期间各GPU内核的SM分配方案,SM分配方案与GPU内核类型相关,包括计算密集型CI(Compute-intensive)或内存密集型MI(Memory-intensive);步骤7:由SM分配方案确定当前为止对于非延迟敏感型内核的最佳SM分配个数SMoptimal,当分配为SMoptimal的SM时,非延迟敏感型内核的性能和能耗达到理想平衡,从而最大限度地提高吞吐量或能效;步骤8:获得SM分配方案后,再由决策算法确定需要换入Swap-in和换出Swap-out的SM编号,即换出的SM在下一个Tepoch时内不再由原GPU核占用,而换入的SM在下一个Tepoch时内由目标GPU内核占用;步骤9:当某个SM被标记为换入或换出时,有两种情况:一为该SM为预留状态,此时直接换入,由目标GPU内核所占用;二为该SM已被其它GPU内核所占用,此时要等待SM中所有线程块执行结束,再执行换出和换入操作;步骤10:所有SM换入和换出完成后,再开始计时下一次Tepoch,以确保下一次收集数据的准确性;步骤11:若每个GPU应用只执行一次GPU内核,则重复步骤5至步骤10直到所有GPU内核执行结束;若某个应用执行多次GPU内核,则下一次GPU内核的初始SM分配编号与上一次完全相同,再重复步骤5至步骤10,直到当前分发的GPU内核执行结束;步骤12:重复步骤11直到所有GPU应用执行结束。2.根据权利要求1所述的一种基于流多处理器内核独占和预留的GPU服务质量保障方法,其特征在于:所述步骤1中,由用户指定需要保证服务质量的应用和QoS指标实现为:(1)需要保证服务质量的应用表示为IsQoS,具体如下:(1-1)如果为延迟敏感型应用,则对于该延迟敏感型应用的所有GPU内核,IsQoS=true;(1-2)如果为非延迟敏感型应用,则对于该非延迟敏感型应用的所有GPU内核,IsQoS=false;(2)QoS指标表示为IPCgoal,当将全部SM分配给某个延迟敏感型应用时,得到IPCisotated;定义αk为IPCgoal占IPCisotated的比例,计算方法如下:IPCgoal=IPCisotated×αk,其中αk∈(0,1)。3.根据权利要求1所述的一种基于流多处理器内核独占和预留的GPU服务质量保障方法,其特征在于:所述步骤3中,确定初始的流多处理器SM,假设并发执行的延迟敏感型应用和非延迟敏感型应用的数量均为1,计算方法如下:(1)如果为延迟敏感型内核,则(2)如果为非延迟敏感型内核,则SMk=SMtotal-SMQoS,其中SMtotal为GPU中SM总个数,SMk为某个GPU内核所占用的SM个数,SMQoS为延迟敏感型内核所占用的SM个数,αk为IPCgoal占IPCiso...

【专利技术属性】
技术研发人员:杨海龙孙庆骁张静怡
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1