CN115809142A - Gpu分配方法、系统、电子设备及计算机可读存储介质 - Google Patents
Gpu分配方法、系统、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115809142A CN115809142A CN202211535819.9A CN202211535819A CN115809142A CN 115809142 A CN115809142 A CN 115809142A CN 202211535819 A CN202211535819 A CN 202211535819A CN 115809142 A CN115809142 A CN 115809142A
- Authority
- CN
- China
- Prior art keywords
- gpu
- node
- gpu resource
- available
- nodes
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种GPU分配方法、系统、电子设备及计算机可读存储介质,涉及计算机技术领域。该方法包括:获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量;分别判断各个节点的可用GPU资源量是否小于请求GPU资源量;若判定所有可用GPU资源量均小于请求GPU资源量,则从所有节点中获取满足请求GPU资源量的目标节点组,并将目标节点组中的可用GPU资源分配给当前任务。使用本申请实施例提供的GPU分配方法在实现集中分配GPU资源的同时,产生最小GPU碎片,提高了GPU资源的利用率。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种GPU分配方法、系统、电子设备及计算机可读存储介质。
背景技术
GPU凭借其对于批量同质任务的强大的计算能力,如今在数据处理、物理模拟、天气预测、现代制药、基因测序、先进制造、人工智能、密码分析等方面都有着广泛的应用。
GPU远程池化技术的出现使得GPU的使用不再受到物理机器的限制,同时运行效率还没有明显的降低。但随之产生的问题是如何对池化后的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资源节点序列和最大可用节点,获取目标节点组;将目标节点组中的可用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资源,能够最大程度地减小任务运行时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资源量时,从所有节点中获取满足请求GPU资源量的目标节点组。GPU资源分配模块,用于将目标节点组中的可用GPU资源分配给当前任务。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述任一实现方式中的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的GPU分配流程图;
图2为本申请实施例提供的目标节点组获取的第一流程图;
图3为本申请实施例提供的目标节点组获取的第二流程图;
图4为本申请实施例提供的最少需要节点数确定流程图;
图5为本申请实施例提供的目标节点组获取的第三流程图;
图6为本申请实施例提供的GPU分配系统的模块示意图;
图7为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。例如,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
申请人在研究过程中发现,目前,GPU的利用普遍面临两个主要问题,一是高昂的成本,二是极低的利用率,平均在30%左右;第二点问题尤其加重了第一点。GPU远程池化技术的出现较好的解决了这两个问题,而且使得GPU的使用不再受到物理机器的限制,同时远行效率还没有明显的降低。但同时也引用了新的问题,即在GPU池中如何调度分配GPU,使得GPU的使用率得到提高的同时,任务的运行效率也能够得到很好的保证。
传统直观的GPU分配方案有两种,其一是最多分配方法,最多分配方法主要是从当前负载最重的节点上选择GPU进行分配,如果不满足则选择负载次重的,尽量将资源分配到目前资源使用率较高的机器上去,可以减少资源的碎片化。另一种方法是最少分配方法,即从当前负载最轻的节点上选择GPU进行分配,尽量将资源分配到目前资源占用最低的机器上去,可以平衡机器之间的负担,有利于弹性利用资源。
虽然现有的两种方案可以解决GPU池化后GPU的分配调度任务,但也存在问题。
最多分配方法在任务申请的GPU数量较多时,采用此策略分配得到GPU可能分布在多个节点上,虽然这样减少了GPU资源的碎片,但是由于任务分配到GPU资源比较分散,任务运行时GPU卡之间的通信会走节点间的网络,从而降低了任务的运行效率。
最少分配方法虽可以极大的避免分配的GPU分配的问题,但如果当任务申请的GPU数量过少时,采用此策略分配就会出现单个结点GPU资源使用不完的情况,而剩余的少量资源可能由于数额过小而成为GPU碎片,而不能进行分配,从而造成资源浪费的结果,也会降低整体集群的使用率,从而削弱了GPU池化方案整体作用。
基于此,本方案提出一种GPU分配方法、系统、电子设备和计算机可读存储介质,可以在集中分配GPU资源的基础上,极大缓解GPU碎片产生的可能性。
在介绍本申请具体内容之前,先进行一些必要的解释与说明。
GPU,全称Graphics processing unit,中文为图形处理器,就如它的名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器,GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据。随着GPU编程语言如计算统一设备架构(CUDA)、openacc、opengl和opencl以及GPU的不断提高的计算能力,使的当今的gpus不仅在渲染图形方面表现出色,其高度并行的架构使它们在处理同一类型的数据时比传统的cpu更具优势,可以更有效地处理各种不同的计算密集型算法。
池化(Pooling),是一种可以有效提升网络存储的利用率的手段;GPU池化后AI应用可以根据负载需求调用任意大小的GPU,甚至可以聚合多个物理节点的GPU;在容器或虚拟机创建之后,仍然可以调整虚拟GPU的数量和大小;在AI应用停止的时候,立刻释放GPU资源回到整个GPU资源池,以便于资源高效流转,充分利用。
GPU集群,GPU集群是一个计算机集群,其中每个节点配备有图形处理单元(GPU)。通过图形处理单元(GPGPU)上的通用计算来利用现代GPU的计算能力,可以使用GPU集群执行非常快速的计算。
请参看图1,图1为本申请实施例提供的GPU分配流程图;该GPU分配方法包括:
步骤S100:获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量。
在上述步骤S100中,获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量;示例性地,每个节点的GPU资源量是通过一组单独的服务进程对节点的设备进行发现,然后向池化中心注册,这样池化中心能够获取每个节点的可用GPU资源量了。每个节点的可用GPU资源量形成一个列表L[N],其中,N为节点数。
与所有节点中的可用GPU资源量的获取方式不同,在GPU作业请求中会带有当前任务的请求GPU资源量,直接从当前任务的任务请求中获取当前任务的请求GPU资源量即可;示例性地,从当前任务的任务请求中获取当前任务的请求GPU资源量M。
需要说明的是,本申请实施例提供的GPU分配方法是在GPU中心池化组件controller中进行的,它接受kubernetes集群中的GPU的分布情况,已有任务的占用情况,当前任务的资源申请量作为输入参数,使用动态规划的方法计算出满足给定GPU的要求的情况下,产生最小GPU碎片的方案,输出GPU资源的分配结果。
步骤S101:分别判断各个节点的可用GPU资源量是否小于请求GPU资源量。
步骤S102:若判定所有可用GPU资源量均小于请求GPU资源量,则从所有节点中获取满足请求GPU资源量的目标节点组,并将目标节点组中的可用GPU资源分配给当前任务。
在上述步骤S101-S102中,当获取到所有节点中的可用GPU资源量和当前任务的请求GPU资源量后,分别判断每一个节点的可用GPU资源量是否小于请求GPU资源量。也就是比较列表L[N]中,每一个N中的可用GPU资源量与当前任务的请求GPU资源量M相比较,分别判断每一个节点的可用GPU资源量是否小于请求GPU资源量,若不存在某一单一节点的可用GPU资源数大于当前任务的请求GPU资源量M,那么可以认定单一节点无法满足请求的需求;因此,需要从所有节点中获取满足请求GPU资源量的目标节点组,通过节点与节点组合的形式来满足当前任务的请求GPU资源量M。
通过图1可知,首先获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量,然后将当前任务的请求GPU资源量与每个单一节点中的可用GPU资源进行单独对比,若每一个单一节点中的可用GPU资源量均小于当前任务的请求GPU资源量,则对节点进行组合,并从组合节点中找出GPU资源利用率最高的节点组合作为目标节点组;因此,使用本申请实施例提供的GPU分配方法在实现集中分配GPU资源的同时,产生最小GPU碎片,提高了GPU资源的利用率。
请参看图2,图2为本申请实施例提供的目标节点组获取的第一流程图;从所有节点中获取满足请求GPU资源量的目标节点组,并将目标节点组中的可用GPU资源分配给当前任务包括:
步骤S200:将所有节点按照所有节点中的可用GPU资源量升序排序,以获得可用GPU资源节点序列,并将可用GPU资源量最大的节点判定为最大可用节点。
在上述步骤S200中,在取所有节点中的可用GPU资源量后,将所有节点按照可用GPU资源量,对节点进行升序排列,并将可用GPU资源量最大的节点判定为最大可用节点。示例性地,若存在5个节点,节点上的可用GPU资源分别为1、5、4、3、2;将这5个结点按照节点中的可用GPU资源量按照升序排列,即1、2、3、4、5;进一步地,将可用GPU资源量为5的节点判定为最大可用节点。
步骤S201:根据可用GPU资源节点序列和最大可用节点,获取目标节点组。
步骤S202:将目标节点组中的可用GPU资源分配给当前任务。
在上述步骤S201-S202中,获取可用GPU资源节点序列和最大可用节点后,根据该可用GPU资源节点序列和最大可用节点获取目标节点,并将目标节点组中的可用GPU资源分配给当前任务。
通过图2可知,将所有节点按照节点中的可用GPU资源量对节点进行升序排列,将节点中可用GPU资源量最大的节点最为最大可用节点;进一步地,根据最大可用节点和可用GPU资源节点序列获取目标节点,并将目标节点组中的可用GPU资源分配给当前任务。使用本申请实施例提供的GPU分配方法,能够在没有单一节点能满足当前任务的请求GPU资源量,在多个节点中找出最适合的、产生碎片量最少的目标节点组合。
请参看图3,图3为本申请实施例提供的目标节点组获取的第二流程图;根据可用GPU资源节点序列和最大可用节点获取目标节点包括:
步骤S300:根据可用GPU资源节点序列和最大可用节点,获取满足请求GPU资源量的最少需要节点数。
在上述步骤S300中,根据可用GPU资源节点序列和最大可用节点,获取满足请求GPU资源量的最少需要节点数。获取满足请求GPU资源量的最少需要节点数的原因在于,在可用GPU资源节点序列中可能有若干个组合能够满足请求GPU资源量的节点组合这些节点组合中具体的节点数量可能是不一样的,为了尽量提高任务运行的效率,选择最少需要节点数。
步骤S301:根据最少需要节点数获取多个节点组。
在上述步骤S301中,根据最少需要节点数,获取多个节点组;需要说明的是,当确定最少需要节点数之后,可能出现对个节点组中的节点都是最少需要节点数,都能够满足请求GPU资源量;因此,将所有最少需要节点数对应的节点组都找出。
步骤S302:在多个节点组中获取GPU资源剩余量最少的节点组,并确定其为目标节点组。
在上述步骤S302中,当将所有最少需要节点数对应的节点组都找出后;进一步地,判断这些节点组中的GPU资源剩余量,将GPU资源剩余量最少的节点组作为目标节点组。需要说明的是,GPU资源剩余量为满足请求GPU资源量后目标节点组剩余的GPU资源量;也就是说,可能存在将节点组中的可用GPU资源分配给当前任务以后,节点组中节点中的可用GPU资源可能还有剩余,这种剩余资源也被叫做GPU碎片。
通过图3可知,根据可用GPU资源节点序列和最大可用节点找出所有最少需要节点数对应的节点组,并将GPU资源剩余量最少的节点组作为目标节点组。从而能够极大程度地减少在GPU资源分配后,产生过多的GPU碎片,造成GPU资源无法再分配导致的资源浪费。
请参看图4,图4为本申请实施例提供的最少需要节点数确定流程图;根据可用GPU资源节点序列和最大可用节点,获取满足请求GPU资源量的最少需要节点数包括:
步骤S400:从最大可用节点,开始累计节点的可用GPU资源,直至可用GPU资源之和第一次大于或等于请求GPU资源量。
在上述步骤S400中,在获得可用GPU资源节点序列和最大可用节点之后,在可用GPU资源节点序列中,以最大可用节点为起点累计节点中的可用GPU资源,直至可用GPU资源之和第一次大于或等于请求GPU资源量。
步骤S401:获取可用GPU资源之和第一次大于或等于请求GPU资源量对应的所有目标节点的个数,并确定其为最少需要节点数。
在上述步骤S401中,当可用GPU资源之和第一次大于或等于请求GPU资源量时,获取可用GPU资源之和第一次大于或等于请求GPU资源量对应的所有目标节点的个数,并将当前对应的节点数目确定为最少需要的节点数。
通过图4可知,在获得可用GPU资源节点序列和最大可用节点之后,在可用GPU资源节点序列中,从最大可用GPU资源节点处累加,直至初次能够满足请求GPU资源量,从而确定最小需要的节点数;因此,在最小需要的节点数的限制下,去获取可用GPU资源,能够最大程度地减小任务运行时GPU卡之间的通信时间。
在一可选地实施例中,根据最少需要节点数获取多个节点组包括:根据最小需要节点数,获取可用GPU资源节点序列中所有满足请求GPU资源量的节点,并将其组成多个节点组。
需要说明的是,根据最小需要节点数,获取可用GPU资源节点序列中所有满足请求GPU资源量的节点;也就是说,使用本申请实施例提供的GPU资源获取方法在此获得的一系列节点组,每个节点组中的节点数量均是最小需要节点数,并且都能够满足请求GPU资源量。
由此可知,在所有节点中找出所有满足请求GPU资源量的节点,组成多个节点组,能够在所有满足请求GPU资源量的节点组中找到产生GPU碎片最少的节点组。
请参看图5,图5为本申请实施例提供的目标节点组获取的第三流程图;在多个节点组中获取GPU资源剩余量最少的节点组,并确定其为目标节点组包括:
步骤S500:获取每一节点组中可用GPU资源量之和。
在上述步骤S500中,在找出所有满足请求GPU资源量的节点组后,获取每一节点组中节点的可用GPU资源,并计算所有可用GPU资源之和。
步骤S501:分别将请求GPU资源量与每一节点组中可用GPU资源量之和作差,以获取多个剩余量差值。
在上述步骤S501中,将节点组中所有可用GPU资源之和请求GPU资源量进行作差,因而可以获得在满足请求GPU资源之后还能够剩余多少可用GPU资源。
步骤S502:将剩余量差值最小的节点组判定为目标节点组。
在上述步骤S502中,将所有可用GPU资源之和请求GPU资源量进行作差后,获得多个剩余量差值;将剩余量差值最小的节点组,判定为目标节点组。
通过图5可知,本申请实施例提供的GPU分配方法通过计算节点组中所有可用GPU资源之和请求GPU资源量进行作差,并找出剩余量差值最小的节点组,确定为目标节点组。从而保证了集群整体的GPU碎片的产生的最小,间接提高了GPU的使用率。
在一可选地实施例中,若判定存在可用GPU资源量大于或等于请求GPU资源量的节点,则将节点中的GPU资源分配给当前任务。
由此可知,本申请实施例提供的GPU分配方法,分配的GPU所在的节点的数目为最小,也就是极大的保证了资源的集中度,从而可以保证任务运行期间多卡通信的效率,也就保证了任务的高效率运行。
在一可选地实施例中,获取的每个节点的可用GPU资源量形成一个列表L[N],其中,N为节点数。从当前任务的任务请求中获取当前任务的请求GPU资源量M。使用findLeastBiasSolution(L,T,N,C,M)为动态规划的核心函数确定GPU资源选择方案;也就是说,以T为记录表,从L节点列表中的前N个结点中选取C个结点,满足GPU资源要求M的情况下最小的偏差以及节点选择方案。
进一步地,得到findLeastBiasSolution(L,T,N,C,M)为动态规划的核心函数的输出:(bias,list);其中,bias此种参数配合下的最小偏差,list节点选取方案列表;由此,可以保证最终的方案为碎片最少的方案。
需要说明的是,本申请实施例提供的GPU分配方法在集中分配的基础上,极大缓解GPU碎片产生的可能性;最终选取的方案即为最集中(GPU分部的节点数最小)且产生GPU碎片最小的方案。最差的情况要填满整个表,所以整个方案的时间复杂度为O(N*C*M)+O(Nlog(N)),空间复杂度为O(N*C*M)+O(N)。
请参看图6,图6为本申请实施例提供的GPU分配系统的模块示意图;该GPU分配系统100包括:数据获取模块110、GPU资源数量判断模块120、目标节点组获取模块130以及GPU资源分配模块140。
数据获取模块110,用于获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量。
GPU资源数量判断模块120,用于分别判断各个节点的所述可用GPU资源量是否小于所述请求GPU资源量。
目标节点组获取模块130,用于在所有所述可用GPU资源量均小于所述请求GPU资源量时,从所述所有节点中获取满足所述请求GPU资源量的目标节点组。
GPU资源分配模块140,用于将所述目标节点组中的可用GPU资源分配给所述当前任务。
在一可选地实施例中,目标节点组获取模块130从所有节点中获取满足请求GPU资源量的目标节点组,并将目标节点组中的可用GPU资源分配给当前任务包括:目标节点组获取模块130将所有节点按照所有节点中的可用GPU资源量升序排序,以获得可用GPU资源节点序列,并将可用GPU资源量最大的节点判定为最大可用节点;目标节点组获取模块130根据可用GPU资源节点序列和最大可用节点,获取目标节点组;GPU资源分配模块140将目标节点组中的可用GPU资源分配给当前任务。
在一可选地实施例中,目标节点组获取模块130根据可用GPU资源节点序列和最大可用节点获取目标节点包括:目标节点组获取模块130根据可用GPU资源节点序列和最大可用节点,获取满足请求GPU资源量的最少需要节点数;目标节点组获取模块130根据最少需要节点数获取多个节点组;其中,多个节点组中的每个节点组均满足请求GPU资源量;目标节
点组获取模块130在多个节点组中获取GPU资源剩余量最少的节点组,并5确定其为目标节点组;其中,GPU资源剩余量为满足请求GPU资源量后目标节点组剩余的GPU资源量。
在一可选地实施例中,根据可用GPU资源节点序列和最大可用节点,获取满足请求GPU资源量的最少需要节点数包括:目标节点组获取模块130从最大可用节点,开始累计节点的可用GPU资源,直至可用GPU资源0之和第一次大于或等于请求GPU资源量;目标节点组获取模块130获取可
用GPU资源之和第一次大于或等于请求GPU资源量对应的所有目标节点的个数,并确定其为最少需要节点数。
在一可选地实施例中,根据最少需要节点数获取多个节点组包括:目标
节点组获取模块130根据最小需要节点数,获取可用GPU资源节点序列中5所有满足请求GPU资源量的节点,并将其组成多个节点组;其中,多个节
点组中的每一节点组的节点数量均为最少需要节点数。
在一可选地实施例中,在多个节点组中获取GPU资源剩余量最少的节点组,并确定其为目标节点组包括:目标节点组获取模块130获取每一节
点组中可用GPU资源量之和;分别将请求GPU资源量与每一节点组中可0用GPU资源量之和作差,以获取多个剩余量差值;目标节点组获取模块130将剩余量差值最小的节点组判定为目标节点组。
在一可选地实施例中,若GPU资源数量判断模块120判定存在可用GPU资源量大于或等于请求GPU资源量的节点,GPU资源分配模块140将节点中的GPU资源分配给当前任务。
请参见图7,图7为本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备300,包括:处理器301和存储器302,存储器302存储有处理器301可执行的机器可读指令,机器可读指令被处理器301执行时执行如上的方法。
基于同一发明构思,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
所述计算机可读存储介质可以是随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等各种可以存储程序代码的介质。其中,存储介质用于存储程序,所述处理器在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的过程定义的电子终端所执行的方法可以应用于处理器中,或者由处理器实现。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
可以替换的,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。5在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括
所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请0的保护范围之内。
Claims (10)
1.一种GPU分配方法,其特征在于,所述方法包括:
获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量;
分别判断各个节点的所述可用GPU资源量是否小于所述请求GPU资源量;
若判定所有所述可用GPU资源量均小于所述请求GPU资源量,则从所述所有节点中获取满足所述请求GPU资源量的目标节点组,并将所述目标节点组中的可用GPU资源分配给所述当前任务。
2.根据权利要求1所述的方法,其特征在于,所述从所述所有节点中获取满足所述请求GPU资源量的目标节点组,并将所述目标节点组中的可用GPU资源分配给所述当前任务,包括:
将所述所有节点按照所述所有节点中的可用GPU资源量升序排序,以获得可用GPU资源节点序列,并将可用GPU资源量最大的节点判定为最大可用节点;
根据所述可用GPU资源节点序列和所述最大可用节点,获取所述目标节点组;
将目标节点组中的可用GPU资源分配给所述当前任务。
3.根据权利要求2所述的方法,其特征在于,所述根据所述可用GPU资源节点序列和所述最大可用节点获取所述目标节点,包括:
根据所述可用GPU资源节点序列和所述最大可用节点,获取满足所述请求GPU资源量的最少需要节点数;
根据所述最少需要节点数获取多个节点组;其中,所述多个节点组中的每个节点组均满足所述请求GPU资源量;
在所述多个节点组中获取GPU资源剩余量最少的节点组,并确定其为所述目标节点组;其中,所述GPU资源剩余量为满足所述请求GPU资源量后所述目标节点组剩余的GPU资源量。
4.根据权利要求3所述的方法,其特征在于,所述根据所述可用GPU资源节点序列和所述最大可用节点,获取满足所述请求GPU资源量的最少需要节点数,包括:
从所述最大可用节点,开始累计节点的可用GPU资源,直至所述可用GPU资源之和第一次大于或等于所述请求GPU资源量;
获取所述可用GPU资源之和第一次大于或等于所述请求GPU资源量对应的所有目标节点的个数,并确定其为所述最少需要节点数。
5.根据权利要求3所述的方法,其特征在于,所述根据所述最少需要节点数获取多个节点组,包括:
根据所述最少需要节点数,获取所述可用GPU资源节点序列中所有满足所述请求GPU资源量的节点,并将其组成所述多个节点组;其中,所述多个节点组中的每一节点组的节点数量均为所述最少需要节点数。
6.根据权利要求3所述的方法,其特征在于,所述在所述多个节点组中获取GPU资源剩余量最少的节点组,并确定其为所述目标节点组,包括:
获取每一所述节点组中可用GPU资源量之和;
分别将所述请求GPU资源量与所述每一所述节点组中可用GPU资源量之和作差,以获取多个剩余量差值;
将所述剩余量差值最小的节点组判定为所述目标节点组。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:若判定存在所述可用GPU资源量大于或等于所述请求GPU资源量的节点,则将所述节点中的GPU资源分配给所述当前任务。
8.一种GPU分配系统,其特征在于,所述GPU分配系统包括:数据获取模块、GPU资源数量判断模块、目标节点组获取模块以及GPU资源分配模块;
所述数据获取模块,用于获取所有节点中的可用GPU资源量和当前任务的请求GPU资源量;
所述GPU资源数量判断模块,用于分别判断各个节点的所述可用GPU资源量是否小于所述请求GPU资源量;
所述目标节点组获取模块,用于在所有所述可用GPU资源量均小于所述请求GPU资源量时,从所述所有节点中获取满足所述请求GPU资源量的目标节点组;
所述GPU资源分配模块,用于将所述目标节点组中的可用GPU资源分配给所述当前任务。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211535819.9A CN115809142A (zh) | 2022-12-01 | 2022-12-01 | Gpu分配方法、系统、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211535819.9A CN115809142A (zh) | 2022-12-01 | 2022-12-01 | Gpu分配方法、系统、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115809142A true CN115809142A (zh) | 2023-03-17 |
Family
ID=85484723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211535819.9A Pending CN115809142A (zh) | 2022-12-01 | 2022-12-01 | Gpu分配方法、系统、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115809142A (zh) |
-
2022
- 2022-12-01 CN CN202211535819.9A patent/CN115809142A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688492B (zh) | 资源的控制方法、装置和集群资源管理系统 | |
KR20000036178A (ko) | 금전비용을 최적화하는 로드 분산 제어기 | |
CN110351375B (zh) | 一种数据处理方法、装置及计算机装置、可读存储介质 | |
CN103617086A (zh) | 一种并行计算方法及系统 | |
CN110543352B (zh) | 调度系统的任务分配方法及其相关的装置 | |
CN111338779B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN111813523A (zh) | 时长预估模型生成方法、系统资源调度方法、装置、电子设备和存储介质 | |
CN113672375B (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN115237586A (zh) | 深度学习推理性能干扰感知的gpu资源配置方法 | |
JP2018190355A (ja) | リソース管理方法 | |
CN104933110B (zh) | 一种基于MapReduce的数据预取方法 | |
CN115809142A (zh) | Gpu分配方法、系统、电子设备及计算机可读存储介质 | |
CN113407322B (zh) | 多终端的任务分配方法、装置、电子设备及可读存储介质 | |
JP6732693B2 (ja) | リソース割当制御システム、リソース割当制御方法、及びプログラム | |
CN110633142B (zh) | 区块链的共识方法、管理节点、电子设备以及存储介质 | |
CN115168058A (zh) | 线程负载均衡方法、装置、设备及存储介质 | |
CN113886086A (zh) | 云平台计算资源分配方法、系统、终端及存储介质 | |
CN114358508A (zh) | 一种工单分配方法、装置、设备和介质 | |
CN107168804A (zh) | 一种内存资源管理方法与系统 | |
CN114546393A (zh) | 多任务程序编译方法及装置、多核芯片 | |
CN112433855A (zh) | 一种资源分配方法、装置、服务器 | |
CN114443258B (zh) | 用于虚拟机的资源调度方法、装置、设备及存储介质 | |
CN115391042B (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN112631743B (zh) | 任务调度方法、装置及存储介质 | |
CN107861794A (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 |