一种集群gpu资源调度系统和方法

文档序号:6443632阅读:1697来源:国知局
专利名称:一种集群gpu资源调度系统和方法
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种集群GPU资源调度系统和方法。
背景技术
近年来,图形处理器(Graphic Processing Unit, GPU)在硬件架构上已取得持续的高速发展,已经演变为拥有强大的计算能力的高度并行、多线程及多处理核心的处理器,它采用不同于中央处理器(Central Processing Unit, CPU)的单指令多线程(Single Instruction Multiple Thread, SIMT)体系结构,增加了编程的灵活性。GPU专用于解决可表示为数据并行计算的问题,即绝大部分数据元素具有相同的数据路径,而具有极高的计算密度(数学运算与存储器运算的比率),这样可隐藏存储器访问延迟。凭借其强大的计算能力,GPU并行技术对传统的CPU应用发起了强有力的冲击,其已被广泛运用于视频转码、 物理模拟、地球表层测绘以及网络安全等热门研究领域。如何充分利用GPU的并行计算能力来解决复杂运算的问题,已经成为当今GPU技术的研究热点之一。然而在实际应用中,单个GPU往往无法承载复杂的计算任务,因此需要将多个GPU组成一个GPU集群,以完成复杂的计算任务,现有技术中通常采用基于单主机多 GPU卡的调度方式对资源进行调度以完成复杂的计算任务,但是该方式存在计算能力有限且扩展性差等缺点。此外,GPU在执行任务时,其使用权是不可剥夺不可抢占的,因此如何高效地调度 GPU资源,以充分发挥其并行计算能力,是目前各种高性能计算应用中迫切需要解决的问题。

发明内容
有鉴于此,本发明提供一种集群GPU资源调度系统和方法,用以解决现有的单个 GPU无法承载复杂计算任务,且现有的集群GPU资源调度方式效率不高、且集群中的GPU卡无法即插即用的问题。本发明提供的集群GPU资源调度系统和方法能够实现GPU资源的充分利用,使多个计算任务并行执行,此外,还能够实现集群中各子节点GPU的即插即用。本发明提供的一种集群图形处理器GPU资源调度系统,包括集群初始化模块、 GPU主节点以及若干个GPU子节点;所述集群初始化模块用于对所述GPU主节点以及所述若干个GPU子节点进行初始化;所述GPU主节点用于接收用户输入的任务,并将该任务划分为若干个子任务,通过调度若干个所述GPU子节点,将所述若干个子任务分配到若干个所述GPU子节点上;所述GPU子节点用于执行子任务并向所述GPU主节点返回任务执行结果。所述GPU主节点包括任务接收模块,用于负责接收用户输入的任务;任务划分模块,用于将任务接收模块提供的用户输入的任务划分为若干个子任务,并提供给GPU资源调度模块;GPU资源调度模块,用于根据收到的各GPU子节点的心跳信号,按计算能力对本集群中的GPU子节点资源进行归类和维护,并根据任务的优先级为收到的各任务指定对应计算能力的GPU子节点,以公平调度的方式调度为各任务所选取的GPU子节点;结果处理模
4块,用于接收处理各GPU子节点返回的子任务计算结果;资源回收模块,用于根据结果处理模块返回的任务执行结果,回收已完成子任务的GPU子节点资源;心跳处理模块,用于将各 GPU子节点提供的包括子节点的ID号、计算能力及执行的任务信息的心跳信号提供给GPU 资源调度模块。所述GPU子节点包括子任务接收模块,用于接收所述GPU主节点分配给本GPU子节点的子任务;子任务执行模块,用于对所述子任务接收模块接收的子任务进一步细分,为本GPU子节点的每个流处理器分配子任务细块,并行执行各子任务细块;结果返回模块,用于将本GPU子节点的子任务计算结果返回给所述GPU主节;心跳发送模块,用于向所述GPU 主节点定时发送包括子节点的ID号、计算能力及执行的任务信息的心跳信号。本发明提供的一种集群图形处理器GPU资源调度方法,包括以下步骤步骤1 :GPU主节点接收用户输入的任务;步骤2 所述GPU主节点将接受的用户输入的任务划分为若干个子任务;步骤3 =GPU主节点将所述若干个子任务分配到若干个GPU子节点上;步骤4 各GPU子节点执行各自的子任务;步骤5 各GPU子节点向所述GPU主节点返回子任务的计算结果;步骤6 所述GPU主节点处理子任务计算结果,向用户返回完整任务计算结果;步骤7 所述GPU主节点收回已完成任务的GPU子节点资源;步骤8 =GPU主节点执行或等待下一任务。上述集群GPU资源调度方法还包括步骤所述GPU子节点定时向所述GPU主节点发送包含GPU子节点的ID号、计算能力及及执行的任务信息的心跳信号。上述方法中,所述步骤1执行之前,还包括所述GPU主节点的初始化步骤,包括 步骤A 初始化所述GPU主节点的任务接收模块;步骤B 初始化所述GPU主节点的任务划分模块;步骤C 往任务优先级队列里面加载上次关闭前未完成或执行失败的任务;步骤D 初始化所述GPU主节点的GPU资源调度模块;步骤E 初始化所述GPU主节点的结果处理模块、资源回收模块和心跳处理模块。上述方法中,所述步骤1执行之前,还包括所述GPU子节点的初始化步骤,包括初始化子任务接收模块、心跳发送模块和结果返回模块;所述GPU子节点采集自身的ID号、计算能力及及执行的任务信息,作为心跳信号发送给所述GPU主节点;所述GPU子节点等待所述GPU主节点的调度。上述方法中,所述步骤3包括步骤3. 1 所述GPU主节点根据所述GPU子节点的计算能力对GPU子节点资源进行归类;步骤3. 2 所述GPU主节点记录每个GPU子节点的ID号、计算能力、任务的名称和状态;步骤3. 3 所述GPU主节点为不同优先级的任务指定对应计算能力的GPU子节点;步骤3. 4 所述GPU主节点以公平调度的方式调度上一步骤中所选取的GPU子节
点ο上述方法中,所述步骤4包括步骤4. 1 =GPU子节点接收子任务;
步骤4. 2 :GPU子节点根据收到的子任务为本地GPU的每个流处理器分配子任务细块;步骤4. 3 设置所述各流处理器的执行参数;步骤4. 4 所述各流处理器并行执行各自被分配到的子任务细块。本发明提供的集群GPU资源调度方法将所有GPU资源组成一个集群,由主节点统一调度多个子节点的GPU,各级子节点对任务进行层层划分,充分利用了 GPU资源的并行计算能力,能够完成大型的复杂任务的快速并行处理,本发明提供的集群GPU资源调度系统不仅能够高性能地实现多个计算任务的并行执行,而且系统中的GPU子节点可以随意拔插。本发明提供的方案特别适合处理高复杂度的计算任务,尤其是集群GPU资源调度的应用场合。


图1是本发明实施例提供的一种集群GPU资源调度系统结构示意图;图2是本发明实施例提供的GPU主节点初始化流程图;图3是本发明实施例提供的GPU子节点初始化流程图;图4是本发明实施例提供的一种集群GPU资源调度方法流程图;图5是为任务划分示意图;图6是图4所示步骤S43的详细流程图;图7是图4所示步骤S44的详细流程图。
具体实施例方式为解决现有技术中的问题,本发明实施例提供一种集群GPU资源调度系统和方法,本发明提供的方案将所有GPU资源组成一个集群,由主节点统一调度集群中的各个子节点,各子节点只需设置唯一的ID编号及计算能力,并将自身信息发送给主节点,主节点根据收到的各字节点的信息对其进行GPU资源归类;对于输入的任务,主节点将该任务进行基本划分后分配到各个子节点上,各被调度的子节点将子任务进一步划分成细块以匹配 GPU的并行计算模式。以下结合附图,具体说明本发明实施例。图1为本发明实施例提供的一种集群GPU资源调度系统结构示意图,该系统包括 集群初始化模块1、集群主控模块2以及若干个GPU子节点3。其中,集群初始化模块1用于对集群中的集群主控模块2以及若干个GPU子节点3进行初始化,负责集群主控模块2 和子节点3的任务准备。集群主控模块2为集群中预先指定的GPU主节点,用于接收用户输入的任务,并将该任务划分为若干个子任务,并通过调度各GPU子节点3,将若干个子任务分配到多个GPU子节点3上。每个GPU子节点3用于执行子任务并向集群主控模块2返回任务执行结果。以下为方便说明,将集群主控模块2统称为GPU主节点。如图1中所示,GPU主节点(集群主控模块2)包括任务接收模块4、任务划分模块5、GPU资源调度模块6、结果处理模块7、资源回收模块8和心跳处理模块9。其中,任务接收模块4用于负责接收用户输入的任务。任务划分模块5用于将任务接收模块4提供的用户输入的任务划分为一系列的子任务,确保各个子节点接收的子任务负载均衡,并将划分好的子任务提供给GPU资源调度模块6。GPU资源调度模块6用于根据心跳处理模块9 提供的各GPU子节点的心跳信号,按计算能力对本集群中的GPU子节点资源进行归类和维护,根据GPU子节点资源归类结果和任务划分模块5提供的子任务的优先级,为各子任务指定对应计算能力的GPU子节点,并以公平调度的方式调度为各子任务所选取的GPU子节点, 完成子任务在GPU子节点上的分发。结果处理模块7用于接收处理各子节点返回的任务计算结果。资源回收模块8用于根据结果处理模块返回的任务执行结果,回收已完成子任务的GPU子节点资源,通知GPU资源调度模块6已回收的GPU子节点资源,使已回收的GPU子节点资源加入GPU资源调度模块6可调度的资源池中等待调度。心跳处理模块9用于将各 GPU子节点提供的包括子节点的ID号、计算能力及执行的任务信息的心跳信号提供给GPU 资源调度模块6。如图1中所示,每个子节点3包括子任务接收模块10、子任务执行模块11、结果返回模块12和心跳发送模块13。其中,子任务接收模块10用于接收GPU主节点的GPU资源调度模块6分配给本GPU子节点的子任务。子任务执行模块11用于对子任务接收模块 10接收的子任务进一步细分,为本GPU的每个流处理器分配子任务细块,并行执行各子任务细块。结果返回模块12用于将本GPU子节点的子任务计算结果返回给GPU主节点中的结果处理模块7。心跳发送模块13用于向GPU主节点的心跳处理模块9定时发送心跳信号,以证明自己仍活跃于集群中,其中,所述心跳信号包括子节点的ID号、计算能力及执行的任务信息。本发明实施例提供的集群GPU资源调度系统中包括多个GPU资源,由一个指定的 GPU主节点统一调度若干个GPU子节点,对于输入的任务,GPU主节点先对其进行基本划分, 以分配到各个GPU子节点上,而GPU子节点上执行的子任务会被进一步划分成细块,以匹配 GPU的并行计算模式,这种GPU资源调度系统能够进行高复杂度的高性能计算。本发明实施例还提供一种采用上述集群GPU调度系统的集群GPU资源调度方法, 需要预先初始化主节点和子节点,具体如图2和图3所示,以下分别进行说明。图2是本发明实施例提供的GPU主节点初始化流程图,包括以下步骤S21 初始化任务接收模块。其中包括任务接收模块中的任务队列清理、内存分配、 服务侦听等工作。S22 初始化任务划分模块。其中包括任务划分模块的内存分配及数据清零等工作。S23 往任务优先级队列里面加载上次关闭前未完成或执行失败的任务。其中,所述优先级任务队列存储的是未处理的任务,并按优先级排序,则一旦集群中有空闲GPU资源,就可优先执行队列中优先级最高的任务。当GPU主节点初始化结束后,一旦有新的任务来临,新的任务也按照任务的优先级加载到所述任务优先级队列中。S24 初始化GPU资源调度模块。其中,资源调度模块根据收到的子节点心跳信息更新自身所存储的集群各个GPU子节点的状态信息,所述GPU子节点的状态信息包括子GPU 子节点的ID号和计算能力等信息。此外,资源调度模块根据GPU子节点的计算能力对当前集群中的GPU子节点进行资源归类。S25 初始化辅助模块。所述辅助模块包括GPU主节点中的结果处理模块、资源回收模块和心跳处理模块,此步骤包括初始化结果处理模块、资源回收模块和心跳处理模块,完成各模块的内存分配及数据清零等工作;图2所示的GPU主节点初始化完成后,GPU主节点开始执行任务优先级队列中的任务,并等待新任务。具体的任务执行过程在下文中进行描述。图3是本发明实施例提供的GPU子节点初始化流程图,包括以下步骤S31 初始化子任务接收模块、心跳发送模块和结果返回模块。此步骤中主要完成各相应模块的内存分配及数据清零等工作;S32:采集GPU子节点自身的ID号及计算能力信息,作为心跳信号发送给GPU主节点,通知主节点做子节点资源的状态信息更新;S33 =GPU子节点等待GPU主节点的调度。本发明实施例提供的一种集群GPU资源调度方法流程图如图4所示,当集群中的 GPU主节点和GPU子节点都已初始化完成后,集群GPU资源调度步骤包括S41 :GPU主节点接收用户输入的任务。S42 =GPU主节点将接收的用户输入的任务划分为一序列子任务。此步骤是通过 GPU主节点的任务划分模块将用户输入的任务划分为一序列子任务,以便这一序列子任务能够在多个GPU子节点上并行执行,确保GPU资源的公平调度及充分利用。图5所示为任务划分示意图,图5中,GPU主节点将当前任务划分成3个子任务,并将3个子任务分配给子节点1、子节点3和子节点8进行处理。S43 =GPU主节点调度GPU子节点资源,将若干个子任务分配到若干个GPU子节点上。本步骤用于对GPU子节点资源进行归类,维护和管理各个GPU子节点的状态,并完成子任务在GPU子节点上的分发,主要包括⑴资源归类根据GPU子节点的计算能力对GPU子节点资源进行归类,即将不同计算能力的GPU子节点资源会被归为不同类别,并将不同类别的子节点资源信息存储于资源调度模块的可调度的资源池中,从而GPU主节点在调度子节点时可实现对不同优先级任务的区分调度;(2)资源维护,记录每个子节点的ID号、计算能力、任务的名称和状态;C3)优先级调度为不同优先级的任务指定对应计算能力的GPU 子节点资源;(4)按公平调度方式调度上一步骤(3)中所选取的GPU子节点资源,S卩将与当前任务的子任务分发到上一步骤(3)中所选取的与当前任务的优先级相对应的若干个 GPU子节点上,确保各个资源能被充分利用,实现负载均衡。S44 各GPU子节点配置各自的并行运行参数,并执行各自的子任务。S45 任务执行完毕,GPU子节点向GPU主节点返回子任务的计算结果;S46 =GPU主节点处理计算结果。此步骤中主节点收集各个子节点的子任务计算结果,并将所有子任务组合成一个完整的任务计算结果返回给用户。S47 =GPU主节点收回已完成任务的GPU子节点资源,并将其加入可调度的资源池中等待调度。此步骤中,对已收回的GPU子节点资源再次进行资源归类,将收回的GPU子节点资源加入可调度的资源池中等待调度。S48 =GPU主节点执行或等待下一任务。此处所述的下一任务是指优先级高于任务优先级队列中所有任务的新任务,或者是任务优先级队列中优先级最高的任务。图4所示集群GPU资源调度方法还包括心跳触发步骤,即GPU子节点定时向GPU 主节点发送心跳信号,以证明自己仍活跃于集群中。所述心跳信号包含子节点的ID号、计算能力以及执行的任务信息。该心跳信号能使GPU主节点实时掌控子节点的状态。上述步骤S43的GPU资源调度流程如图6所示,包括S601 当前任务的子任务序列输入;此处所述的子任务序列为当前任务被GPU主节点划分所得到的一序列子任务;S602 确定当前任务的优先级;S603:判断当前任务的优先级是否高于任务优先级队列中其他等待的任务,若否, 则跳到S604 ;是则跳到S605 ;S604 将当前任务加入到任务优先级队列,并执行S605 ;S605 判断是否有可用GPU子节点资源,如果有,则执行S608,否则执行S606 ;S606 等待GPU子节点资源的释放;S607 查询GPU子节点资源,并跳转到步骤S605 ;S608 选取优先级最高的任务,为该任务的指定相应的GPU子节点资源,并维护选取的GPU子节点资源的状态;此步骤中,如果S601中到来的当前任务优先级高于任务优先级队列中其他等待的任务,则S601中到来的当前任务即为此步骤所选取的任务,如果S601 中到来的当前任务优先级低于任务优先级队列中其他等待的任务,则此步骤中选取的是任务优先级队列中优先级最高的任务。S609 按公平调度方式将当前优先级最高的任务的子任务分发给所选取的GPU子节点。图7所示为图4的步骤S44中各GPU子节点执行各自的子任务流程图,包括以下步骤S71 =GPU子节点接收子任务;S72 :GPU子节点再次对子任务进行细分为GPU的每个流处理器分配子任务细块, 以实现子任务细块并行计算;S73 设置各流处理器的执行参数。主要包括设置各流处理器分为几个块,每个块包含几个线程等执行参数。S74 各流处理器并行执行各自被分配到的子任务细块。综上所述,本发明提供的集群GPU资源调度方案将所有GPU资源组成一个集群,由主节点统一调度,充分利用GPU资源的并行计算能力,子节点可以随意拔插,只需设置唯一的ID编号及计算能力,再发送给主节点,主节点会把它加入对应的GPU资源归类中,各级节点对任务进行层层划分,以完成大任务的快速并行处理;本发明特别适合高复杂度的高性能计算,特别是集群GPU调度的应用场合。上述实施例仅用来进一步说明本发明提供的一种集群GPU资源调度系统和调度方法,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种集群图形处理器GPU资源调度系统,其特征在于,包括集群初始化模块、GPU主节点以及若干个GPU子节点;所述集群初始化模块用于对所述GPU主节点以及所述若干个GPU子节点进行初始化; 所述GPU主节点用于接收用户输入的任务,并将该任务划分为若干个子任务,通过调度若干个所述GPU子节点,将所述若干个子任务分配到若干个所述GPU子节点上; 所述GPU子节点用于执行子任务并向所述GPU主节点返回任务执行结果。
2.如权利要求1所述的一种集群GPU资源调度系统,其特征在于,所述GPU主节点包括任务接收模块,用于负责接收用户输入的任务;任务划分模块,用于将任务接收模块提供的用户输入的任务划分为若干个子任务,并提供给GPU资源调度模块;GPU资源调度模块,用于根据收到的各GPU子节点的心跳信号,按计算能力对本集群中的GPU子节点资源进行归类和维护,并根据任务的优先级为收到的各任务指定对应计算能力的GPU子节点,以公平调度的方式调度为各任务所选取的GPU子节点; 结果处理模块,用于接收处理各GPU子节点返回的子任务计算结果; 资源回收模块,用于根据所述结果处理模块返回的任务执行结果,回收已完成子任务的GPU子节点资源;心跳处理模块,用于将各GPU子节点提供的包括子节点的ID号、计算能力及执行的任务信息的心跳信号提供给所述GPU资源调度模块。
3.如权利要求1所述的一种集群GPU资源调度系统,其特征在于,所述GPU子节点包括子任务接收模块,用于接收所述GPU主节点分配给本GPU子节点的子任务; 子任务执行模块,用于对所述子任务接收模块接收的子任务进一步细分,为本GPU子节点的每个流处理器分配子任务细块,并行执行各子任务细块;结果返回模块,用于将本GPU子节点的子任务计算结果返回给所述GPU主节; 心跳发送模块,用于向所述GPU主节点定时发送包括子节点的ID号、计算能力及执行的任务信息的心跳信号。
4.一种集群图形处理器GPU资源调度方法,其特征在于,包括以下步骤 步骤1 :GPU主节点接收用户输入的任务;步骤2 所述GPU主节点将用户输入的任务划分为若干个子任务;步骤3 =GPU主节点将所述若干个子任务分配到若干个GPU子节点上;步骤4 各GPU子节点执行各自的子任务;步骤5 各GPU子节点向所述GPU主节点返回子任务的计算结果;步骤6 所述GPU主节点处理子任务计算结果,向用户返回完整任务计算结果;步骤7 所述GPU主节点收回已完成任务的GPU子节点资源;步骤8 =GPU主节点执行或等待下一任务。
5.如权利要求4所述的一种集群GPU资源调度方法,其特征在于,该方法还包括所述 GPU子节点定时向所述GPU主节点发送包含GPU子节点的ID号、计算能力及执行的任务信息的心跳信号。
6.如权利要求5所述的一种集群GPU资源调度方法,其特征在于,所述步骤1执行之前,还包括所述GPU主节点的初始化步骤,包括步骤A 初始化所述GPU主节点的任务接收模块; 步骤B 初始化所述GPU主节点的任务划分模块;步骤C 往任务优先级队列里面加载上次关闭前未完成或执行失败的任务; 步骤D 初始化所述GPU主节点的GPU资源调度模块;步骤E 初始化所述GPU主节点的结果处理模块、资源回收模块和心跳处理模块。
7.如权利要求5所述的一种集群GPU资源调度方法,其特征在于,所述步骤1执行之前,还包括所述GPU子节点的初始化步骤,包括初始化子任务接收模块、心跳发送模块和结果返回模块;所述GPU子节点采集自身的ID号、计算能力及及执行的任务信息,作为心跳信号发送给所述GPU主节点;所述GPU子节点等待所述GPU主节点的调度。
8.如权利要求5至7任一项所述的一种集群GPU资源调度方法,其特征在于,所述步骤 3包括步骤3. 1 所述GPU主节点根据所述GPU子节点的计算能力对GPU子节点资源进行归类;步骤3. 2:所述GPU主节点记录每个GPU子节点的ID号、计算能力、任务的名称和状态;步骤3. 3 所述GPU主节点为不同优先级的任务指定对应计算能力的GPU子节点; 步骤3. 4 所述GPU主节点以公平调度的方式调度上一步骤中所选取的GPU子节点。
9.如权利要求8所述的一种集群GPU资源调度方法,其特征在于,所述步骤4包括 步骤4. 1 =GPU子节点接收子任务;步骤4. 2 =GPU子节点根据收到的子任务为本地GPU的每个流处理器分配子任务细块;步骤4. 3 设置所述各流处理器的执行参数;步骤4. 4 所述各流处理器并行执行各自被分配到的子任务细块。
全文摘要
本发明提供了一种集群图形处理器GPU资源调度系统,该系统包括集群初始化模块、GPU主节点以及若干个GPU子节点;所述集群初始化模块用于对所述GPU主节点以及所述若干个GPU子节点进行初始化;所述GPU主节点用于接收用户输入的任务,并将该任务划分为若干个子任务,通过调度若干个所述GPU子节点,将所述若干个子任务分配到若干个所述GPU子节点上;所述GPU子节点用于执行子任务并向所述GPU主节点返回任务执行结果。本发明提供的集群GPU资源调度系统和方法能够实现GPU资源的充分利用,使多个计算任务并行执行,此外,还能够实现集群中各子节点GPU的即插即用。
文档编号G06F9/46GK102541640SQ20111044632
公开日2012年7月4日 申请日期2011年12月28日 优先权日2011年12月28日
发明者吴鸿伟, 汤伟宾, 罗佳 申请人:厦门市美亚柏科信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1