CN110413412B - 一种基于gpu集群资源分配的方法和装置 - Google Patents
一种基于gpu集群资源分配的方法和装置 Download PDFInfo
- Publication number
- CN110413412B CN110413412B CN201910654395.XA CN201910654395A CN110413412B CN 110413412 B CN110413412 B CN 110413412B CN 201910654395 A CN201910654395 A CN 201910654395A CN 110413412 B CN110413412 B CN 110413412B
- Authority
- CN
- China
- Prior art keywords
- task
- gpu
- processed
- tasks
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000013468 resource allocation Methods 0.000 title claims abstract description 18
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于GPU集群资源分配的方法,所述GPU集群包括多张GPU卡;方法包括:获取待处理任务,待处理任务包括大任务和小任务;其中,大任务是指所需资源量大于或等于一张GPU卡的待处理任务;小任务是指所需资源量小于一张GPU卡的待处理任务;按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;获取执行任务的每个GPU卡的资源剩余量;对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。通过本发明的方案,提高GPU集群资源利用率。
Description
技术领域
本发明涉及云计算领域,尤指一种基于GPU集群资源分配的方法和装置。
背景技术
目前,GPU集群(管理大量GPU卡的的***)常用的资源调度软件有pbs(PortableBatch System)和slurm(Simple Linux Utility for Resource Management),采用现有的资源调度软件使得GPU集群的使用率较低,分配处理任务的GPU(Graphic ProcessingUnit,图形处理器)卡,使用率在30%到60%左右,存在30%左右的资源没有被使用而造成浪费。
调度器软件pbs和slurm进行分配GPU卡的单位都是个数即卡数,调度GPU资源时,将一张或多张GPU卡分配给任务,任务在运行的时候对GPU利用率并不高,造成部分GPU资源浪费。同时现有的调度器软件pbs和slurm的资源调度存在GPU卡的复用即一张GPU卡上可运行两个以上的任务,虽然这样可以更加充分利用GPU资源,但是由于一张GPU卡上同时运行多个任务导致任务执行的速度变慢,造成非常低的工作效率,任务完成的周期变长。并且,现在技术中仅仅是实现资源的调度,并不具有对资源合理分配的相关技术存在,针对现有GPU集群资源调度中所存在的问题,亟需要提出一种基于GPU集群资源分配的方法,能够提高GPU集群利用率的方法和装置。
发明内容
为了解决上述技术问题,本发明提供了一种基于GPU集群资源分配的方法和装置,提高了GPU集群的利用率。
为了达到本发明目的,本发明提供了一种基于GPU集群资源分配的方法,所述GPU集群包括多张GPU卡;所述方法包括:
获取待处理任务,所述待处理任务包括大任务和小任务;其中,所述大任务是指所需资源量大于或等于一张GPU卡的待处理任务;所述小任务是指所需资源量小于一张GPU卡的待处理任务;
按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;
获取执行任务的每个GPU卡的资源剩余量;
对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。
一种示例性的实施例中,所述获取待处理任务之后,还包括:
采用自定义规则对待处理任务的属性进行计算,得到优先级权重值;
根据计算所得到的优先级权重值进行排序,权重值越大的优先级越高;
其中,所述待处理任务的属性包括以下一种或多种:执行任务的时间范围、执行任务所需的GPU卡的数量和GPU卡的类型进行计算。
一种示例性的实施例中,所述按照待处理任务的优先级顺序,对大任务分配的一张或多张GPU卡执行,包括:
步骤31.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
步骤32.为当前待处理任务分配一张或多张GPU卡;
步骤33.判断是否还有未执行的大任务,如果没有则获取执行任务的每个GPU卡的资源剩余量;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤34.判断是否还存在空闲的GPU卡,如果存在,则进行步骤35,如果不存在,则获取执行任务的每个GPU卡的资源剩余量;
步骤35.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤32;
如果小于,则进行步骤36;
步骤36.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤35;
如果没有未执行的大任务,则结束。
一种示例性的实施例中,所述资源量包括执行任务的时间范围和执行任务的资源需求量。
一种示例性的实施例中,所述对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量,包括:
步骤51.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤52.判断是否存在GPU卡的资源剩余量大于或等于当前待处理任务所需的资源量;如果存在,进入步骤53,如果不存在,进入步骤54;
步骤53.判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤54;
步骤54.判断是否还有未执行的小任务,如果没有则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤52。
为了解决上述问题,本发明还提供了一种基于GPU集群资源分配的装置,包括:存储器和处理器,所述GPU集群包括多张GPU卡;
所述存储器,用于保存用于基于GPU集群资源分配的程序;
所述处理器,用于读取执行所述用于基于GPU集群资源分配的程序,执行如下操作:
获取待处理任务,所述待处理任务包括大任务和小任务;其中,所述大任务是指所需资源量大于或等于一张GPU卡的待处理任务;所述小任务是指所需资源量小于一张GPU卡的待处理任务;
按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;
获取执行任务的每个GPU卡的资源剩余量;
对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。
一种示例性的实施例中,所述处理器读取执行所述用于基于GPU集群资源分配的程序,所述获取待处理任务之后,还执行如下操作:
采用自定义规则对待处理任务的属性进行计算,得到优先级权重值;
根据计算所得到的优先级权重值进行排序,权重值越大的优先级越高;
其中,所述待处理任务的属性包括以下一种或多种:执行任务的时间范围、执行任务所需的GPU卡的数量和GPU卡的类型进行计算。
一种示例性的实施例中,所述处理器读取执行所述用于基于GPU集群资源分配的程序,还执行如下操作:
所述按照待处理任务的优先级顺序,对大任务分配的一张或多张GPU卡执行,包括:
步骤31.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
步骤32.为当前待处理任务分配一张或多张GPU卡;
步骤33.判断是否还有未执行的大任务,如果没有则获取执行任务的每个GPU卡的资源剩余量;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤34.判断是否还存在空闲的GPU卡,如果存在,则进行步骤35,如果不存在,则获取执行任务的每个GPU卡的资源剩余量;
步骤35.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤32;
如果小于,则进行步骤36;
步骤36.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤35;
如果没有未执行的大任务,则结束。
一种示例性的实施例中,所述资源量包括执行任务的时间范围和执行任务的资源需求量。
一种示例性的实施例中,所述处理器读取执行所述用于基于GPU集群资源分配的程序,还执行如下操作:
所述对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量,包括:
步骤51.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤52.判断是否存在GPU卡的资源剩余量大于或等于当前待处理任务所需的资源量;如果存在,进入步骤53,如果不存在,进入步骤54;
步骤53.判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤54;
步骤54.判断是否还有未执行的小任务,如果没有则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤52。
与现有技术相比,本发明提供一种基于GPU集群资源分配的方法,所述GPU集群包括多张GPU卡;获取待处理任务,待处理任务包括大任务和小任务;其中,大任务是指所需资源量大于或等于一张GPU卡的待处理任务;小任务是指所需资源量小于一张GPU卡的待处理任务;按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;获取执行任务的每个GPU卡的资源剩余量;对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。通过本发明的方案,提高GPU集群资源利用率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例中基于GPU集群资源分配方法的流程图;
图2为本发明实施例中基于GPU集群资源分配装置的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是本发明实施例基于GPU集群资源分配方法的流程图,根据该流程图,本实施例基于GPU集群资源分配的方法,所述GPU集群包括多张GPU卡;包括:
步骤100.获取待处理任务,所述待处理任务包括大任务和小任务。
在本实施例中,GPU集群中包括了多张GPU卡,每个GPU卡是独立的处理器。
获取待处理的任务,将待处理任务划分为大任务和小任务;大任务是指所需资源量大于或等于一张GPU卡的待处理任务;小任务是指所需资源量小于一张GPU卡的待处理任务。其中,该处理任务可以是深度学习平台中训练的深度学习任务。通过对处理任务的划分可以实现对大任务分配所需的资源量,对小任务进行资源回填。例如:大任务需要资源量为2张多的GPU卡,小任务需要资源量为一张GPU卡中的20%内存。
一种示例性的实施例中,获取待处理的任务后,采用自定义规则对待处理任务的属性进行计算,得到优先级权重值;根据计算所得到的优先级权重值进行排序,权重值越大的优先级越高;其中,所述待处理任务的属性包括以下一种或多种:任务预期的开始时间、任务预期的结束时间、任务的执行时间范围、执行任务所需的GPU卡的数量和GPU卡的类型进行计算。对待处理任务进行优先级排序后,大任务在优先级顺序的前面,小任务在优先级顺序的后面。例如:排序后的待处理任务的优先级顺序为:大任务1.大任务2.大任务3……小任务1.小任务2.小任务3.小任务4……。
步骤101.按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行。
本实施例中,按照待处理任务的优先级顺序,先对大任务进行分配GPU卡,分配一张或多张GPU卡执行大任务,分配过程中对每个GPU卡只分配一个大任务;一张卡运行一个大任务能够保证任务执行的速度,保证任务执行的效率。
一种示例性的实施例中,所述按照待处理任务的优先级顺序,对大任务分配的一张或多张GPU卡执行,实现过程可以如下:
步骤31.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
步骤32.为当前待处理任务分配一张或多张GPU卡;
步骤33.判断是否还有未执行的大任务,如果没有则获取执行任务的每个GPU卡的资源剩余量;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤34.判断是否还存在空闲的GPU卡,如果存在,则进行步骤35,如果不存在,则获取执行任务的每个GPU卡的资源剩余量;
步骤35.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤32;
如果小于,则进行步骤36;
步骤36.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤35;
如果没有未执行的大任务,则结束。
步骤102.获取执行任务的每个GPU卡的资源剩余量。
在本实施中,可以通过现有技术获得分配大任务后的每个GPU卡的资源剩余量。对于获得分配大任务后的每个GPU卡的资源剩余量所采用的技术手段,在本实施例中并不具体限定。
步骤103.对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。
在本实施中,在步骤102中获得的每个GPU卡的资源剩余量,对于每个具有资源剩余量的GPU卡,可以将小任务再次分配到该GPU卡上,可以提高GPU卡的资源利用率。
一种示例性的实施例中,包括执行任务的时间范围和执行任务的资源需求量。
一种示例性的实施例中,对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量,包括:
步骤51.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤52.判断是否存在GPU卡的资源剩余量大于或等于当前待处理任务所需的资源量;如果存在,进入步骤53,如果不存在,进入步骤54;
步骤53.判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤54;
步骤54.判断是否还有未执行的小任务,如果没有则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤52。
另外,本申请提供了一种基于GPU集群资源分配的装置的一个实施例,该装置实施例与图1所示的方法实施例相对应。
为了解决上述问题,本发明还提供了一种基于GPU集群资源分配的装置,包括:存储器和处理器,所述GPU集群包括多张GPU卡;
所述存储器,用于保存用于基于GPU集群资源分配的程序;
所述处理器,用于读取执行所述用于基于GPU集群资源分配的程序,执行如下操作:
获取待处理任务,所述待处理任务包括大任务和小任务;其中,所述大任务是指所需资源量大于或等于一张GPU卡的待处理任务;所述小任务是指所需资源量小于一张GPU卡的待处理任务;
按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;
获取执行任务的每个GPU卡的资源剩余量;
对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。
一种示例性的实施例中,所述处理器读取执行所述用于基于GPU集群资源分配的程序,所述获取待处理任务之后,还执行如下操作:
采用自定义规则对待处理任务的属性进行计算,得到优先级权重值;
根据计算所得到的优先级权重值进行排序,权重值越大的优先级越高;
其中,所述待处理任务的属性包括以下一种或多种:执行任务的时间范围、执行任务所需的GPU卡的数量和GPU卡的类型进行计算。
一种示例性的实施例中,所述处理器读取执行所述用于基于GPU集群资源分配的程序,还执行如下操作:
所述按照待处理任务的优先级顺序,对大任务分配的一张或多张GPU卡执行,包括:
步骤31.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
步骤32.为当前待处理任务分配一张或多张GPU卡;
步骤33.判断是否还有未执行的大任务,如果没有则获取执行任务的每个GPU卡的资源剩余量;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤34.判断是否还存在空闲的GPU卡,如果存在,则进行步骤35,如果不存在,则获取执行任务的每个GPU卡的资源剩余量;
步骤35.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤32;
如果小于,则进行步骤36;
步骤36.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤35;
如果没有未执行的大任务,则结束。
一种示例性的实施例中,所述资源量包括执行任务的时间范围和执行任务的资源需求量。
一种示例性的实施例中,所述处理器读取执行所述用于基于GPU集群资源分配的程序,还执行如下操作:
所述对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量,包括:
步骤51.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤52.判断是否存在GPU卡的资源剩余量大于或等于当前待处理任务所需的资源量;如果存在,进入步骤53,如果不存在,进入步骤54;
步骤53.判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤54;
步骤54.判断是否还有未执行的小任务,如果没有,则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤52。
为了解决上述问题,本发明还提供了一种基于GPU集群资源分配的方法具体实施例,一种示例性的实施例的实现过程如下:
步骤31.采用自定义规则对待处理任务进行排序,获得待处理任务的优先级顺序;
步骤32.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
在本实施例中,在任务分配过程中,首先对大任务进行资源分配。
步骤33.为当前待处理大任务分配一或多张GPU卡;其中,每张GPU卡只分配给一个大任务;
步骤34.判断是否还有未执行的大任务,如果没有则进行步骤38;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤35.判断是否还存在空闲的GPU卡,如果存在,则进行步骤36,如果不存在,则进行步骤38;
步骤36.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤33;
如果小于,则进行步骤37;
步骤37.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤36;
如果没有未执行的大任务,则结束。
步骤38.获取每个GPU卡的资源剩余量。
步骤39.对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量。
在本实施例中,是针对分配完大任务之后,针对执行大任务的GPU卡还具有资源剩余量,将每个GPU卡的资源剩余量分配给满足条件的小任务,可以提高GPU卡的资源利用率。
针对步骤39的具体实现过程可以包括:
步骤391.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤392.判断是否存在资源剩余量满足当前待处理任务所需的资源量的GPU卡;如果存在,进入步骤393,如果不存在,进入步骤394;
步骤393.如果存在,则判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤394;
步骤394.判断是否还有未执行的小任务,如果没有则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤392。
基于本实施例的一个具体示例,通过对待处理任务划分为大任务和小任务,针对大任务和小任务分别采用不同的资源分配方式,当分配完大任务后,对于执行大任务的GPU卡存在剩余资源量,将每个GPU卡的剩余资源量分配给小任务,使得每个GPU卡资源量得到充分的利用,提高了GPU集群利用率。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (8)
1.一种基于GPU集群资源分配的方法,所述GPU集群包括多张GPU卡;其特征在于,所述方法包括:
获取待处理任务,所述待处理任务包括大任务和小任务;其中,所述大任务是指所需资源量大于或等于一张GPU卡的待处理任务;所述小任务是指所需资源量小于一张GPU卡的待处理任务;
按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;
获取执行任务的每个GPU卡的资源剩余量;
对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量;
所述获取待处理任务之后,还包括:
采用自定义规则对待处理任务的属性进行计算,得到优先级权重值;
根据计算所得到的优先级权重值进行排序,权重值越大的优先级越高;
其中,所述待处理任务的属性包括以下一种或多种:执行任务的时间范围、执行任务所需的GPU卡的数量和GPU卡的类型进行计算。
2.根据权利要求1所述基于GPU集群资源分配的方法,其特征在于,所述按照待处理任务的优先级顺序,对大任务分配的一张或多张GPU卡执行,包括:
步骤31.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
步骤32.为当前待处理任务分配一张或多张GPU卡;
步骤33.判断是否还有未执行的大任务,如果没有则获取执行任务的每个GPU卡的资源剩余量;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤34.判断是否还存在空闲的GPU卡,如果存在,则进行步骤35,如果不存在,则获取执行任务的每个GPU卡的资源剩余量;
步骤35.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤32;
如果小于,则进行步骤36;
步骤36.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤35;
如果没有未执行的大任务,则结束。
3.根据权利要求1所述基于GPU集群资源分配的方法,其特征在于,所述资源量包括执行任务的时间范围和执行任务的资源需求量。
4.根据权利要求3所述基于GPU集群资源分配的方法,其特征在于,所述对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量,包括:
步骤51.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤52.判断是否存在GPU卡的资源剩余量大于或等于当前待处理任务所需的资源量;如果存在,进入步骤53,如果不存在,进入步骤54;
步骤53.判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤54;
步骤54.判断是否还有未执行的小任务,如果没有则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤52。
5.一种基于GPU集群资源分配的装置,包括:存储器和处理器,所述GPU集群包括多张GPU卡;其特征在于:
所述存储器,用于保存用于基于GPU集群资源分配的程序;
所述处理器,用于读取执行所述用于基于GPU集群资源分配的程序,执行如下操作:
获取待处理任务,所述待处理任务包括大任务和小任务;其中,所述大任务是指所需资源量大于或等于一张GPU卡的待处理任务;所述小任务是指所需资源量小于一张GPU卡的待处理任务;
按照待处理任务的优先级顺序,对大任务分配一张或多张GPU卡执行;其中,每个GPU卡只分配一个大任务;
获取执行任务的每个GPU卡的资源剩余量;
对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量;
所述获取待处理任务之后,还执行如下操作:
采用自定义规则对待处理任务的属性进行计算,得到优先级权重值;
根据计算所得到的优先级权重值进行排序,权重值越大的优先级越高;
其中,所述待处理任务的属性包括以下一种或多种:执行任务的时间范围、执行任务所需的GPU卡的数量和GPU卡的类型进行计算。
6.根据权利要求5所述基于GPU集群资源分配的装置,其特征在于,所述处理器读取执行所述用于基于GPU集群资源分配的程序,还执行如下操作:
所述按照待处理任务的优先级顺序,对大任务分配的一张或多张GPU卡执行,包括:
步骤31.按照待处理任务的优先级顺序,确定第一个未执行的大任务为当前待处理任务;
步骤32.为当前待处理任务分配一张或多张GPU卡;
步骤33.判断是否还有未执行的大任务,如果没有则获取执行任务的每个GPU卡的资源剩余量;如果有则确定下一个未执行的大任务为当前待处理任务;
步骤34.判断是否还存在空闲的GPU卡,如果存在,则进行步骤35,如果不存在,则获取执行任务的每个GPU卡的资源剩余量;
步骤35.判断当前空闲的GPU卡的资源量是否大于或等于当前待处理任务所需的资源量;
如果大于或等于,则进行步骤32;
如果小于,则进行步骤36;
步骤36.判断是否有未执行的大任务;
如果有未执行的大任务,按照优先级顺序,确定下一个未执行的大任务为当前待处理任务,进行步骤35;
如果没有未执行的大任务,则结束。
7.根据权利要求5所述基于GPU集群资源分配的装置,其特征在于,
所述资源量包括执行任务的时间范围和执行任务的资源需求量。
8.根据权利要求7所述基于GPU集群资源分配的装置,其特征在于,所述处理器读取执行所述用于基于GPU集群资源分配的程序,还执行如下操作:
所述对于每个具有资源剩余量的GPU卡,分别按照优先级顺序遍历未执行的小任务,如果找到该GPU卡的资源剩余量满足未执行的小任务,则将该GPU卡的资源剩余量分配给该小任务,并更新该GPU卡的资源剩余量,包括:
步骤51.按照优先级顺序遍历未执行的小任务,确定第一个未执行的小任务为当前待处理任务;
步骤52.判断是否存在GPU卡的资源剩余量大于或等于当前待处理任务所需的资源量;如果存在,进入步骤53,如果不存在,进入步骤54;
步骤53.判断当前待处理任务的执行时间范围是否在该GPU卡执行大任务的时间范围内;
如果在执行大任务的时间范围内,将该GPU卡的资源剩余量分配给所述当前待处理任务,并更新资源剩余量;如果不在执行大任务的时间范围内,进入步骤54;
步骤54.判断是否还有未执行的小任务,如果没有则结束;
如果有未执行的小任务,则按照优先级顺序,确定下一个未执行的小任务为当前待处理任务,返回步骤52。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910654395.XA CN110413412B (zh) | 2019-07-19 | 2019-07-19 | 一种基于gpu集群资源分配的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910654395.XA CN110413412B (zh) | 2019-07-19 | 2019-07-19 | 一种基于gpu集群资源分配的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413412A CN110413412A (zh) | 2019-11-05 |
CN110413412B true CN110413412B (zh) | 2022-03-25 |
Family
ID=68362046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910654395.XA Active CN110413412B (zh) | 2019-07-19 | 2019-07-19 | 一种基于gpu集群资源分配的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413412B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176852B (zh) * | 2020-01-15 | 2024-04-16 | 上海依图网络科技有限公司 | 资源分配方法、装置、芯片及计算机可读存储介质 |
CN111381970B (zh) * | 2020-03-16 | 2023-07-25 | 第四范式(北京)技术有限公司 | 集群任务的资源分配方法及装置、计算机装置及存储介质 |
CN111708799B (zh) * | 2020-04-30 | 2023-09-05 | 咪咕文化科技有限公司 | Spark任务处理方法、装置、电子设备及存储介质 |
CN111722928A (zh) * | 2020-06-12 | 2020-09-29 | 北京字节跳动网络技术有限公司 | 一种资源调度方法、装置、电子设备及存储介质 |
CN112148481B (zh) * | 2020-09-10 | 2022-11-22 | 苏州浪潮智能科技有限公司 | 一种执行仿真测试任务的方法、***、设备及介质 |
CN113742064B (zh) * | 2021-08-06 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种服务器集群的资源整理方法、***、设备及介质 |
CN115328665B (zh) * | 2022-10-12 | 2023-02-28 | 中瓴智行(成都)科技有限公司 | 基于Hypervisor的GPU虚拟化方法、装置及电子设备 |
CN117950815A (zh) * | 2022-10-21 | 2024-04-30 | 华为技术有限公司 | 执行任务的方法和异构服务器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797853A (zh) * | 2016-09-07 | 2018-03-13 | 深圳市中兴微电子技术有限公司 | 一种任务调度方法、装置及多核处理器 |
CN109144710A (zh) * | 2017-06-16 | 2019-01-04 | ***通信有限公司研究院 | 资源调度方法、装置及计算机可读存储介质 |
CN109819057A (zh) * | 2019-04-08 | 2019-05-28 | 科大讯飞股份有限公司 | 一种负载均衡方法及*** |
CN109992407A (zh) * | 2018-01-02 | 2019-07-09 | ***通信有限公司研究院 | 一种yarn集群gpu资源调度方法、装置和介质 |
CN109995862A (zh) * | 2019-03-29 | 2019-07-09 | 北京百度网讯科技有限公司 | 一种资源调度方法及终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10228972B2 (en) * | 2017-06-22 | 2019-03-12 | Banuba Limited | Computer systems and computer-implemented methods for dynamically adaptive distribution of workload between central processing unit(s) and graphics processing unit(s) |
-
2019
- 2019-07-19 CN CN201910654395.XA patent/CN110413412B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797853A (zh) * | 2016-09-07 | 2018-03-13 | 深圳市中兴微电子技术有限公司 | 一种任务调度方法、装置及多核处理器 |
CN109144710A (zh) * | 2017-06-16 | 2019-01-04 | ***通信有限公司研究院 | 资源调度方法、装置及计算机可读存储介质 |
CN109992407A (zh) * | 2018-01-02 | 2019-07-09 | ***通信有限公司研究院 | 一种yarn集群gpu资源调度方法、装置和介质 |
CN109995862A (zh) * | 2019-03-29 | 2019-07-09 | 北京百度网讯科技有限公司 | 一种资源调度方法及终端 |
CN109819057A (zh) * | 2019-04-08 | 2019-05-28 | 科大讯飞股份有限公司 | 一种负载均衡方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110413412A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413412B (zh) | 一种基于gpu集群资源分配的方法和装置 | |
CN109213600B (zh) | 一种基于ai云的gpu资源调度方法和装置 | |
US20170255496A1 (en) | Method for scheduling data flow task and apparatus | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
CN111400022A (zh) | 一种资源调度方法、装置及电子设备 | |
CN113448743B (zh) | 用于任务处理的方法、电子设备以及计算机程序产品 | |
CN112035238A (zh) | 任务调度处理方法、装置、集群***及可读存储介质 | |
US10884667B2 (en) | Storage controller and IO request processing method | |
CN107577534A (zh) | 一种资源调度方法及装置 | |
CN107515781B (zh) | 一种基于多处理器的确定性任务调度及负载均衡*** | |
CN103503412A (zh) | 用于调度资源的方法及装置 | |
CN112540841A (zh) | 任务调度的方法、装置、处理器与电子设备 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN106775975B (zh) | 进程调度方法及装置 | |
CN115586961A (zh) | 一种ai平台计算资源任务调度方法、装置及介质 | |
CN111367655B (zh) | 一种云计算环境中gpu资源调度的方法、***及存储介质 | |
CN117519930A (zh) | 批量任务的执行方法、装置及电子设备 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN115878910A (zh) | 线路查询方法、装置和存储介质 | |
CN108429704B (zh) | 一种节点资源分配方法及装置 | |
CN110928649A (zh) | 资源调度的方法和装置 | |
CN111796934B (zh) | 任务下发方法、装置、存储介质和电子设备 | |
CN114924848A (zh) | Io调度方法、装置及设备 | |
US11586475B2 (en) | Application aware resource allocation for deep learning job scheduling | |
CN110750330A (zh) | 一种虚拟机创建方法、***、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |