一种针对混合负载的细粒度GPU资源管理方法技术

技术编号:16587276 阅读:37 留言:0更新日期:2017-11-18 14:49
本发明专利技术公开了一种针对混合负载的细粒度GPU资源管理方法,提出了一个基于容量的流多处理器抽象模型CapSM,将CapSM作为资源管理的基本单元;当混合负载(包括在线任务和离线任务)共享GPU资源时,通过细粒度管理不同类型任务对GPU资源的使用,支持任务资源配额和资源在线调整,在共享GPU资源的同时,保障在线任务的服务质量。本发明专利技术依据任务的类型、资源请求和当前系统GPU资源状态来确定最终为任务分配的资源,能够在资源充足的情况下满足离线任务对GPU资源的使用,当GPU资源不足时动态调整离线任务的资源使用,优先满足在线任务的资源需求,这样在混合负载同时运行时,既能保证在线任务的性能,又能充分利用GPU资源。

A fine-grained GPU resource management method for hybrid workloads

The invention discloses a resource management method for fine-grained GPU mixed load, put forward a flow capacity of the multi processor abstraction model based on CapSM, CapSM as the basic unit of resource management; when the mixed load (including online and offline task task) sharing GPU resources, through the use of fine-grained management of different types the task of GPU resources, support task resource quota and resources online adjustment in sharing GPU resources at the same time, guarantee the service quality of online tasks. The invention is based on the type of task, the resource request and the current system of GPU resources to determine the final state for task allocation of resources can be used offline tasks to GPU resources in the resource is sufficient, when GPU lack of resources to dynamically adjust the offline tasks using the resources, priority to meet online task resource requirements, so in the mixed load running at the same time, can guarantee the performance of online tasks, and can make full use of GPU resources.

【技术实现步骤摘要】
一种针对混合负载的细粒度GPU资源管理方法
本专利技术涉及异构计算中的资源管理和任务调度领域,特别是涉及一种针对混合负载的细粒度GPU资源管理方法。
技术介绍
图形处理器(GraphicsProcessingUnit,以下简称GPU)以其强大的峰值计算能力,逐渐成为高性能计算、云计算和数据中心不可或缺的组成部分,利用GPU对关键业务进行加速正在被越来越多的机构和组织所采纳。为了提高GPU的利用率,基础设施提供商通常也会让多种不同类型的任务(在线任务和离线任务)共享GPU资源,即采用混合负载的运行方式。然而,当混合负载共享GPU时,由于多个任务会竞争GPU资源,将会对在线任务的性能产生严重干扰。其根本原因在于,当一个任务提交到GPU执行时,该任务只能在执行结束后才会释放其所占用的资源,如果离线任务占用GPU过多或者时间过长,将会导致在线任务不能及时获得足够的GPU资源进行处理,从而导致服务质量目标无法得到满足。近年来,为了解决混合负载在GPU上运行时的性能干扰问题,研究人员从多个方面展开研究,已有的研究成果主要来自以下几个方面:(1)基于硬件的方法当采用该方法时,需要对现有的GPU硬件结构进行修改,添加相应的控制部件。由于GPU厂商的保护,难以对GPU的硬件架构有一个完全详细的了解,更不可能在实际系统中对GPU的硬件进行修改。因此,基于硬件的方法都是在模拟器中实现,只在学术上具有研究价值,不具有现实的意义。(2)基于软件的方法当采用该方法时,不需要对现有的GPU硬件进行修改,只需要在软件层面对不同的应用进行控制,具有可操作性;因此,基于软件的方法具有现实意义。具体来说,基于软件的方法又可以分为以下几类:a)基于优先级调度的方法当采用该方法时,将不同种类的GPU任务赋予不同的优先级,在线任务具有较高优先级,离线任务具有较低优先级,当在线任务和离线任务同时需要调度时,优先使优先级较高的在线任务运行。使用该方法时,在每个时刻只能有一个任务在GPU上运行,从而使GPU的利用率较低。b)基于kernel重排序的方法当采用该方法时,与基于优先级调度的方法类似,只不过每个任务的优先级都是动态的,需要在kernel任务到来时,根据任务的服务质量要求,动态计算任务的优先级,然后根据计算出的动态优先级调整kernel任务的提交顺序。c)基于GPU抢占的方法当采用该方法时,与基于优先级调度的方法类似,每种任务都有一个固定的优先级,只不过该方法支持基于优先级的抢占,当GPU上正在运行一个任务时,一个更高优先级的任务到来,这个后续到来的更高优先级任务就可以抢占正在GPU上运行的任务,从而不必等到正在GPU上运行的任务执行完成后才能够使用GPU。基于GPU抢占的方法,虽然能够在一定层度上减少任务等待的时间,但是抢占的时间开销与GPUkernel任务的执行时间相关。综上可以看出,基于硬件的方法需要通过修改GPU硬件结构来达到解决负载混合时的性能问题,在现有的GPU设备上可操作性低、实用性差;基于软件的方法虽然能够使在线任务尽量优先运行,但是并不能确保当在线任务需要额外资源时,能够及时获取相应的资源。因此,需要一种细粒度的GPU资源管理方法来有效控制混合负载下不同类型任务对GPU资源的使用,特别是支持任务资源配额和资源在线调整,从而满足服务质量的要求,目前尚未发现有相关技术报导。
技术实现思路
本专利技术技术解决问题:克服现有技术的不足,提供一种针对混合负载的细粒度GPU资源管理系统及方法,当混合负载在GPU上运行时,通过资源配额限制离线任务能够使用的资源,避免离线任务占用过多资源。同时,当在线任务需要额外的资源时,支持在线调整离线任务使用的资源,从而避免在线任务长时间等待离线任务释放资源而造成服务质量目标无法得到满足的情况。本专利技术基于计算统一设备架构(ComputeUnifiedDeviceArchitecture,以下简称CUDA)多进程服务(Multi-ProcessService,以下简称MPS)技术。MPS是英伟达(NVIDIA)提出的一种基于Hyper-Q的GPU资源管理技术,通过MPS可以在GPU未被完全利用时,让来自多个应用的kernel任务并发执行,从而提高GPU的利用率。此外,MPS是应用透明的,MPS可以自动将来自不同CUDAContext中的kernel转换到同一个CUDAContext,从而可以在GPU上同时运行。由于MPS将所有的kernel同等看待,当每个kernel开始运行时,会为该kernel中的线程分配所有需要的资源。因此,当在GPU上混合运行在线任务与离线任务时,需要采取一种机制来限制离线任务使用的资源,减小由于资源争用而对在线任务造成的性能干扰。本专利技术技术解决方案:提供的一种针对混合负载的细粒度GPU资源管理方法,所述混合负载是将任务分为在线任务和离线任务,当在线任务和离线任务共享GPU资源时,使用一种基于容量的SM抽象模型作为资源管理基本单元来细粒度管理不同类型任务对GPU资源的使用,支持任务资源配额和资源在线调整,在共享GPU资源的同时,保障在线任务的服务质量,包括以下步骤:(1)用户通过资源管理API向GPU提交任务(如不特殊说明,任务包括在线任务和离线任务)时,设置任务的资源请求信息,如果任务是离线任务,则设置的是任务的资源上限,即配额,如果任务是在线任务,则设置的是任务的最低资源量,即预留量;(2)通过资源管理API解析出任务的提交信息,包括kernel函数、任务块数量、任务块大小以及任务的资源请求;(3)根据任务的kernel函数,以及任务块大小,计算一个GPUSM上能够容纳的活动线程块数量;(4)根据当前GPU上应用的运行状况,计算出GPU上剩余可用资源量;(5)如果当前GPU资源剩余量不少于步骤(2)获取的任务的资源请求,则执行步骤(6),否则,执行任务(8);(6)设置任务的资源配置为任务的资源请求;(7)根据任务的资源配置以及步骤(3)确定的活动线程块数量,计算任务提交到GPU运行时应创建的线程块数量以及每个线程块分配的任务块数量,然后执行步骤(11);(8)如果当前任务是离线任务,则执行步骤(9),如果是在线任务,则执行任务(10);(9)将当前GPU资源剩余量设为任务的资源配置,然后转到步骤(7)执行;(10)根据当前GPU资源剩余量,以及任务的资源请求,计算出资源差额,然后向当前GPU上运行的离线任务发送资源释放命令,使离线任务释放资源差额指定的资源量,然后转到步骤(6);(11)根据计算出的GPU任务的线程块数量,提交任务到GPU上,创建线程并开始运行;(12)如果任务在GPU上运行过程中接收到资源释放的命令,则执行步骤(13),否则执行步骤(14);(13)如果在GPU上运行的任务,接收到释放资源的命令,则释放指定范围的资源,如果被释放的资源上有任务块未执行,则将这些未执行的任务块重映射到剩余的资源上继续执行;(14)任务执行完成,退出GPU。所述使用的资源管理基本单元是一种基于容量的SM抽象模型,以下简称CapSM,CapSM实现如下:(1-1)给定一个GPU,设定每个SM的容量为1个容量单位;给定一个kernel任务K,假设GPU上一个SM能够容纳任务K的处于本文档来自技高网
...
一种针对混合负载的细粒度GPU资源管理方法

【技术保护点】
一种针对混合负载的细粒度GPU资源管理方法,其特征在于,所述混合负载是将任务分为在线任务和离线任务,当在线任务和离线任务共享GPU资源时,使用一种基于容量的SM抽象模型作为资源管理的基本单元来细粒度管理不同类型任务对GPU资源的使用,支持任务资源配额和资源在线调整,在共享GPU资源的同时,保障在线任务的服务质量,包括以下步骤:(1)用户通过资源管理应用程序编程接口(Application Programming Interface,以下简称API)向GPU提交任务(如不特殊说明,任务包括在线任务和离线任务)时,设置任务的资源请求信息,如果任务是离线任务,则设置的是任务的资源上限,即配额,如果任务是在线任务,则设置的是任务的最低资源量,即预留量;(2)通过资源管理API解析出任务的提交信息,包括kernel函数、任务块数量、任务块大小以及任务的资源请求;(3)根据任务的kernel函数,以及任务块大小,计算一个GPU SM上能够容纳的活动线程块数量;(4)根据当前GPU上应用的运行状况,计算出GPU上剩余可用资源量;(5)如果当前GPU资源剩余量不少于步骤(2)获取的任务的资源请求,则执行步骤(6),否则,执行任务(8);(6)设置任务的资源配置为任务的资源请求;(7)根据任务的资源配置以及步骤(3)确定的活动线程块数量,计算任务提交到GPU运行时应创建的线程块数量以及每个线程块分配的任务块数量,然后执行步骤(11);(8)如果当前任务是离线任务,则执行步骤(9),如果是在线任务,则执行任务(10);(9)将当前GPU资源剩余量设为任务的资源配置,然后转到步骤(7)执行;(10)根据当前GPU资源剩余量,以及任务的资源请求,计算出资源差额,然后向当前GPU上运行的离线任务发送资源释放命令,使离线任务释放资源差额指定的资源量,然后转到步骤(6);(11)根据计算出的GPU任务的线程块数量,提交任务到GPU上,创建线程并开始运行;(12)如果任务在GPU上运行过程中接收到资源释放的命令,则执行步骤(13),否则执行步骤(14);(13)如果在GPU上运行的任务,接收到释放资源的命令,则释放指定范围的资源,如果被释放的资源上有任务块未执行,则将这些未执行的任务块重映射到剩余的资源上继续执行;(14)任务执行完成,退出GPU。...

【技术特征摘要】
1.一种针对混合负载的细粒度GPU资源管理方法,其特征在于,所述混合负载是将任务分为在线任务和离线任务,当在线任务和离线任务共享GPU资源时,使用一种基于容量的SM抽象模型作为资源管理的基本单元来细粒度管理不同类型任务对GPU资源的使用,支持任务资源配额和资源在线调整,在共享GPU资源的同时,保障在线任务的服务质量,包括以下步骤:(1)用户通过资源管理应用程序编程接口(ApplicationProgrammingInterface,以下简称API)向GPU提交任务(如不特殊说明,任务包括在线任务和离线任务)时,设置任务的资源请求信息,如果任务是离线任务,则设置的是任务的资源上限,即配额,如果任务是在线任务,则设置的是任务的最低资源量,即预留量;(2)通过资源管理API解析出任务的提交信息,包括kernel函数、任务块数量、任务块大小以及任务的资源请求;(3)根据任务的kernel函数,以及任务块大小,计算一个GPUSM上能够容纳的活动线程块数量;(4)根据当前GPU上应用的运行状况,计算出GPU上剩余可用资源量;(5)如果当前GPU资源剩余量不少于步骤(2)获取的任务的资源请求,则执行步骤(6),否则,执行任务(8);(6)设置任务的资源配置为任务的资源请求;(7)根据任务的资源配置以及步骤(3)确定的活动线程块数量,计算任务提交到GPU运行时应创建的线程块数量以及每个线程块分配的任务块数量,然后执行步骤(11);(8)如果当前任务是离线任务,则执行步骤(9),如果是在线任务,则执行任务(10);(9)将当前GPU资源剩余量设为任务的资源配置,然后转到步骤(7)执行;(10)根据当前GPU资源剩余量,以及任务的资源请求,计算出资源差额,然后向当前GPU上运行的离线任务发送资源释放命令,使离线任务释放资源差额指定的资源量,然后转到步骤(6);(11)根据计算出的GPU任务的线程块数量,提交任务到GPU上,创建线程并开始运行;(12)如果任务在GPU上运行过程中接收到资源释放的命令,则执行步骤(13),否则执行步骤(14);(13)如果在GPU上运行的任务,接收到释放资源的命令,则释放指定范围的资源,如果被释放的资源上有任务块未执行,则将这些未执行的任务块重映射到剩余的资源上继续执行;(14)任务执行完成,退出GPU。2.根据权利要求1所述的一种针对混合负载的细粒度GPU资源管理方法,其特征在于:使用的资源管理基本单元是一种基于容量的SM抽象模型,以下简称CapSM,CapSM实现如下:(1-1)给定一个GPU,设定每个SM的容量为1个容量单位;给定一个kernel任务K,假设GPU上一个SM能够容纳任务K的处于活动状态的线程块数量为M;(1-2)依据M,将每个SM抽象为M个小分片,每个小分片的容量为1/M个容量单位,而且每个小分片只能容纳一个任务K的线程块;(1-3)将GPU的所有SM按照以上方法划分成多个小分片后,对于任意N个小分片,如果它们的容量和与一个物理SM等价,则认为这N个小分片组成一个CapSM;(1-4)对于任务K,任意M个小分片组成一个CapSM。3.根据权利要求2所述的一种针对混合负载的细粒度GPU资源管理方法,其特征在于:所述资源管理单元CapSM,(1-1)组成每个CapSM的M个小分片,可以来自同一个SM,也可以来自多个不同的SM;(1-2)每个小分片与一个线程块相对应,一个CapSM可以看作是一组线程块的集合,因此,在实现时,对CapSM的管理可以转换为是对线程块数量的管理;(1-3)基于容量的SM抽象模型CapSM不依赖于特定GPU架构和GPU并行编程语言,CapSM的概念可以很容易地应用到其他GPU架构和GPU并行编程语言。4.根据权利要求1所述的一种针对混合负载的细粒度GPU资源管理方法,其特征在于:需要对所述任务的原始kernel函数进行转换,使任务在GPU上运行的线程为持久线程,具体转换过程如下:(1-1)向原始kernel函数中插入循环控制结构,原始kernel函数体作为循环控制结构的循环体;(1-2)循环体通过遍历为每个持久线程分配的任务,依次执行每个任务,并将变量taskIdx设置为当前执行的任务所属任务块编号;(1-3)将原始kernel函数体中代表线程所属线程块索引的变量blockIdx改为代表当前所属任务块的变量taskIdx。5.根据权利要求1所述的一种针对混合负载的细粒度GPU资源管理方法,其特征在于:所述步骤(1)中,用户通过资源管理API向GPU提交任务时,使用的资源管理API提供如下两种任务提交方式:(1-1)通过资源配额的方式来运行任务,主要针对离线任务,限制离线任务使用的资源量,使用该方式提交任务时,需要提供资源配额量quota,要运行任务的kernel函数,任务的任务块数量TaskBlockNumber以及任务块大小TaskBlockSize即每个任务块中的线程数量;(1-2)通过资源预留的方式来运行任务,主要针对在线任务,使用该方式提交任务时,需要提供为该任务预留的资源量reservation,要运行任务的kernel函数,任务的任务块数量TaskBlockNumber,及任务块大小TaskBlockSize即每个任务块中的线程数量。6.根据权利要求1所述的一种针对混合负载的细粒度GPU资源管...

【专利技术属性】
技术研发人员:杨海龙禹超白跃彬栾钟治顾育豪
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

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

1