CN110503593A - 多个图形处理单元的调度 - Google Patents

多个图形处理单元的调度 Download PDF

Info

Publication number
CN110503593A
CN110503593A CN201810478340.3A CN201810478340A CN110503593A CN 110503593 A CN110503593 A CN 110503593A CN 201810478340 A CN201810478340 A CN 201810478340A CN 110503593 A CN110503593 A CN 110503593A
Authority
CN
China
Prior art keywords
gpu
task
pond
available
bit stream
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
Application number
CN201810478340.3A
Other languages
English (en)
Inventor
陈青茶
张文进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN201810478340.3A priority Critical patent/CN110503593A/zh
Priority to EP19724699.4A priority patent/EP3794449A1/en
Priority to US17/044,284 priority patent/US11983564B2/en
Priority to PCT/US2019/030787 priority patent/WO2019221948A1/en
Publication of CN110503593A publication Critical patent/CN110503593A/zh
Priority to US18/628,102 priority patent/US20240248759A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开内容提供了一种用于对多个可用的图形处理单元(GPU)进行调度的方法和装置。可以设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的GPU的一个或多个任务。可以为每个GPU池分配可用的GPU。可以接收任务和与所述任务有关的任务信息,其中,任务信息指示执行任务需要的GPU数量。可以至少根据任务信息来从多个GPU池中选择相应的GPU池。可以至少根据任务信息在所选择的GPU池中确定要调度给任务的可用的GPU。此外,可以将所确定的可用的GPU调度给任务。

Description

多个图形处理单元的调度
背景技术
在人工智能(AI)时代,图形处理单元(GPU)的应用越来越广泛。图形处理单元是一种在个人电脑、工作站、游戏机和一些移动设备如平板电脑、智能手机等上进行图像运算工作的微处理器。当前,GPU在加速人工智能、汽车、无人机、机器人等领域的软件应用程序运行速度方面发挥着重要作用。
发明内容
提供本发明内容以便介绍一组概念,这组概念将在以下的具体实施方式中做进一步描述。本发明内容并非旨在标识所保护主题的关键特征或必要特征,也不旨在用于限制所保护主题的范围。
本公开内容的实施例提出了用于对多个可用的图形处理单元(GPU)进行调度的的方法和装置。可以设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的GPU的一个或多个任务。可以为每个GPU池分配可用的GPU。可以接收任务和与所述任务有关的任务信息,其中,任务信息指示执行任务需要的GPU数量。可以至少根据所述任务信息来从所述多个GPU池中选择相应的GPU池。可以至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU。此外,可以将所确定的可用的GPU调度给所述任务。
应当注意,以上一个或多个方面包括以下详细描述以及在权利要求中具体指出的特征。下面的说明书及附图详细阐述了所述一个或多个方面的某些说明性特征。这些特征仅仅指示可以实施各个方面的原理的多种方式,并且本公开内容旨在包括所有这些方面和其等同变换。
附图说明
以下将结合附图描述所公开的多个方面,这些附图被提供用以说明而非限制所公开的多个方面。
图1示出了根据实施例的示例性计算系统。
图2A-图2B示出了使用当前的GPU资源调度方式进行的GPU资源分配和GPU资源释放的示意图。
图3示出了根据实施例的用于对多个GPU进行调度的示例性方法的流程图。
图4示出了根据实施例的基于图3的示例性方法的示例性GPU资源分配的示意图。
图5示出了根据实施例的基于图4的示例性GPU资源分配的示例性GPU资源释放的示意图。
图6示出了根据实施例的用于对多个GPU进行调度的另一示例性方法的流程图。
图7示出了根据实施例的基于图6的示例性方法的示例性GPU资源分配的示意图。
图8示出了根据实施例的基于图6的示例性方法的、涉及GPU借用的示例性GPU资源分配的示意图。
图9示出了根据实施例的基于图8的示例性GPU资源分配的、涉及GPU返还的示例性GPU资源释放的示意图。
图10示出了根据实施例的用于对多个GPU进行调度的又一示例性方法的流程图。
图11示出了根据实施例的基于图10的示例性方法的示例性GPU资源分配的示意图。
图12示出了根据实施例的基于图10的示例性方法的涉及GPU借用的示例性GPU资源分配的示意图。
图13示出了根据实施例的基于图12的示例性GPU资源分配的、涉及GPU返还的示例性GPU资源释放的示意图。
图14示出了根据实施例的用于对多个可用的GPU进行调度的示例性方法的流程图。
图15示出了根据实施例的用于对多个可用的GPU进行调度的示例性装置。
图16示出了根据实施例的用于对多个可用的GPU进行调度的另一种示例性装置。
具体实施方式
现在将参考多种示例性实施方式来讨论本公开内容。应当理解,这些实施方式的讨论仅仅用于使得本领域技术人员能够更好地理解并从而实施本公开内容的实施例,而并非教导对本公开内容的范围的任何限制。
近年来,由于人工智能(AI)和图像处理的发展越来越快速,因此对基于GPU的计算系统的要求也日益提高,计算系统需要能够处理不同大小的任务请求并且能够在忙或不忙状态下均能够高效地处理任务。然而,目前当在按序调度多个GPU资源对不同大小的任务进行处理时,在具有多个GPU的节点的不同GPU上同时运行多个任务时会产生资源冲突或任务间干扰,例如中央处理单元(CPU)、内存、输入/输出(I/O)、网络资源等的冲突,这会导致GPU效率降低。例如,当在一个8-GPU节点上运行一个8-GPU任务时可能不会产生资源冲突,但在一个8-GPU节点上同时运行两个4-GPU任务或者一个4-GPU任务和一个2-GPU任务时,则会产生上述的资源冲突。在本文中,节点也可被称为主机、主机节点、服务器等,其可以具有至少一个GPU组,每个GPU组可以具有至少一个GPU。此处的GPU组也可以被称为显卡、显示适配器、显示加速卡等。即,一个主机可以具有至少一个显卡。此外,包括至少一个GPU的至少一个GPU组和/或至少一个节点可以组成GPU池,多个GPU池可以组成一个GPU集群。在本文中,n-GPU任务表示的是这样一种任务:执行该任务需要n个GPU。例如,1-GPU任务表示需要1个GPU来执行的任务,4-GPU任务表示需要4个GPU来执行的任务,8-GPU任务表示需要8个GPU来执行的任务,等等。当前的GPU资源按序调度技术很少考虑到在GPU资源上由于执行交叉任务而导致的资源冲突或任务间干扰。此外,在使用根据当前的GPU资源按序调度技术调度的GPU完成对任务的执行后,释放后的GPU会导致GPU资源分布比较无序,从而导致GPU资源碎片化,降低了GPU的使用效率。虽然目前已经开始研究GPU资源的随机调度方式,以减小在同时执行多个任务时导致的任务间干扰,但GPU资源的随机调度方式不管是在资源分配时还是在资源释放后均会导致GPU资源碎片化的问题。
为了解决上述任务间干扰和GPU资源碎片化的问题,本公开内容的实施例提出了一种用于对多个可用的GPU进行调度的方法,其可以减少任务间干扰,以及使得GPU资源的调度非常有序,从而在资源分配时和资源释放后都几乎不存在GPU资源碎片。本公开内容的实施例通过在计算系统中设置与多种任务对应的多个GPU池来实现,此处的多种任务指的是根据执行任务时所需GPU的数量来分类的任务,例如,多种任务可以包括1-GPU任务、2-GPU任务、3-GPU任务、4-GPU任务...n-GPU任务等等,此处的n表示任意的非零整数。
图1示出了根据实施例的示例性计算系统100。在图1中,计算系统100可以与至少一个客户端通信,例如客户端1 110、客户端2 120...客户端n 130等。计算系统100可以从客户端接收用户提交的GPU任务并调度GPU资源来执行任务。在本公开内容的实施例中,计算系统100可以包括资源管理器140、GPU调度器150、至少一个节点1 160、节点2 170...节点m 180,至少一个节点管理器1 162、节点管理器2 172...节点管理器m 182,以及至少一个GPU 164-188。应当理解的是,计算系统100还可以包括用于进行资源调度和管理的任何其它部件;为简单起见,在本公开内容中并未示出计算系统100中的所有可能的部件。例如,计算系统100可以是AI系统、资源管理服务器系统、云端计算系统,和/或提供计算资源的任意系统。
在一些例子中,GPU调度器150是设置在资源管理器140中的插件模块以帮助资源管理器140针对从客户端接收的任务请求进行适当的资源分配。虽然在图1所示的例子中,GPU调度器150被设置在资源管理器140内,但在其它例子中,GPU调度器150也可以被设置为与资源管理器140分离放置。资源管理器140可以连接到多个节点160、170、180等以对节点中包括的GPU进行管理,其中每个节点中被配置有至少一个节点管理器,如图所示的节点管理器162、172、182。节点管理器162、172、182用于分别管理各自节点中包括的至少一个GPU,如图所示的GPU 164-186。应当理解的是,虽然此处未示出,但每个节点中包括的多个GPU可以被分成至少一个GPU组,例如,节点1 160可以包括多个GPU组,其中一个GPU组可以包括GPU11 164和GPU12 166,一个GPU组可以包括GPU1a 168和其它GPU。为了简单起见,在下文的描述中,以包括8个GPU的8-GPU节点为例来描述本公开内容的实施例。
应当理解,图1中所示的所有部件或模块都是示例性的。本申请中使用的“示例性的”一词意味着用作例子、例证或说明。本申请中被描述为“示例性”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例性一词是想要以具体的方式来表示构思。本申请中使用的术语“或者”意味着包括性的“或者”而不是排他性的“或者”。也就是说,除非另外指定,或者从上下文能清楚得知,否则“X使用A或者B”的意思是任何自然的包括性置换。也就是说,如果X使用A,X使用B,或者X使用A和B二者,则“X使用A或者B”满足上述任何一个例子。另外,除非另外指定或从上下文能清楚得知是单一形式,否则本申请和附加的权利要求书中使用的“一”和“一个”物件通常表示“一个或多个”。
在本申请中所用的“部件”、“模块”、“系统”以及类似的术语意指与计算机相关的实体,其可以是硬件、固件、软硬件结合、软件或者执行中的软件。例如,部件可以是、但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。为了便于说明,计算设备上运行的应用程序和计算设备本身都可以是部件。执行中的一个进程和/或线程可以有一个或多个部件,并且,一个部件可以位于一台计算机上和/或分布于两台或更多台计算机之间。另外,可以从存储了多种数据结构的多种计算机可读介质执行这些部件。
图2A-图2B示出了使用当前的GPU资源调度方式进行的GPU资源分配示意图210和GPU资源释放示意图220。
为了便于描述当前的不同的资源分配方式,图2A中的左侧示出了示例性的按序资源分配方式,右侧示出了示例性的随机资源分配方式。在图2A所示的例子中,每个圆圈表示一个GPU,由四个圆圈形成的一个实线框表示一个GPU组,由两个实线框形成的一个点线框表示一个8-GPU节点,也即,每个8-GPU节点包括2个GPU组,每个GPU组包括4个GPU。在该例子中,用斜线填充的圆圈a1、b2、d8、e1表示正在分别执行4个1-GPU任务的4个GPU,用方格填充的(a2,a3)、(a8,b1)、(b3,b4)、(e4,e5)、(f2,f3)表示正在分别执行5个2-GPU任务的5个GPU集,用阴影填充的(a4,a5,a6,a7)、(b5,b6,b7,b8)、(d1,d3,d5,d6)表示正在分别执行3个4-GPU任务的3个GPU集。
参考图2A的左侧部分的示例性“按序分配”方式。首先当接收到任务j1时,其是1-GPU任务,可以将可用的GPU a1分配用于执行该1-GPU任务j1;接着当接收到任务j2时,其是2-GPU任务,可以依序将可用的GPU a2和GPU a3分配用于执行该2-GPU任务j2;然后当接收到任务j3时,其是4-GPU任务,可以依序将可用的GPU a4至GPU a7分配用于执行该4-GPU任务j3,其中,GPU a4与GPU a5、GPU a6、GPU a7分布在同一个节点的不同的GPU组中;继续当接收到任务j4时,其是2-GPU任务,可以依序将可用的GPU a8和GPU b1分配用于执行该2-GPU任务j4,其中GPU a8和GPU b1分布于不同的节点中,依此类推。根据图2A的例子,在紧密相邻的多个GPU上执行多个任务时,例如1-GPU任务j1、2-GPU任务j2、4-GPU任务j3、2-GPU任务j4,这些任务中相邻的任务之间在执行时互相会产生干扰和导致资源冲突。
继续该示例性“按序分配”方式,参考图2B,当任务j1和任务j4执行完毕后,它们占用的GPU资源GPU a1、GPU a8、GPU b1被释放。由于该例子是按序分配方式,因此当接收到新的任务时,依序会接着调度GPU c1和后续GPU来执行新的任务,从而会导致GPU a1、GPU a8、GPU b1无法得到利用而形成GPU资源碎片。
返回参考图2A的右侧部分的示例性“随机分配”方式。首先当接收到任务j5时,其是4-GPU任务,可以随机地将可用的GPU d1、GPU d3、GPU d5、GPU d6分配用于执行该4-GPU任务j5,其中GPU d1、GPU d3和GPU d5、GPU d6分布于同一节点的不同的GPU组中;接着当接收到任务j6时,其是2-GPU任务,可以随机地将可用的GPU f2和GPU f3分配用于执行该2-GPU任务j6,其中GPU f2和GPU f3分布于同一节点的相同GPU组中;然后当接收到任务j7时,其是2-GPU任务,可以将可用的GPU e4和GPU e5分配用于执行该2-GPU任务j7,其中GPU e4和GPU e5分布于同一节点的不同的GPU组中;继续当接收到任务j8时,其是1-GPU任务,可以将可用的GPU d8分配用于执行该1-GPU任务j8;以及当接收到任务j9时,其是1-GPU任务,可以将GPU e1分配用于执行该1-GPU任务j9。根据图2A的例子,在多个节点上随机地执行多个任务时,会导致部分GPU得不到利用,形成GPU资源碎片,例如图2A中的GPU d2、GPU d4、GPUd7、GPU e2、GPU e3等等。
继续该示例性“随机分配”方式,参考图2B,即使任务j5执行完毕后,它占用的GPU资源GPU d1、GPU d3、GPU d5、GPU d6被释放。在图2B示出的资源图中的“随机分配下的资源释放”部分中仍然存在GPU资源碎片。
由此可知,不管是当前的按序分配方式还是随机分配方式,都不能同时解决GPU资源碎片化和多个任务之间干扰的问题。
本公开内容的实施例提出了通过在计算系统中设置与多种任务对应的多个GPU池来对多个可用的GPU进行调度的方法。图3示出了根据实施例的用于对多个GPU进行调度的示例性方法300的流程图。
在310处,设置多个GPU池,其中每个池被配置用于服务需要相同数量的GPU的一个或多个任务,例如,多个GPU池分别对应多种任务,这些任务是基于执行任务所需的GPU数量来分类的。例如,需要1个GPU的任务被分类为1-GPU任务,其对应于1-GPU池;需要2个GPU的任务被分类为2-GPU任务,其对应于2-GPU池;需要4个GPU的任务被分类为4-GPU任务,其对应于4-GPU池;需要n个GPU的任务被分配为n-GPU任务,其对应于n-GPU池,其中n可以是非零的任意正整数。在本公开内容的实施例中,为了便于描述,在本文中设置了1-GPU池、2-GPU池、4-GPU池。应当理解,本文中所设置的这三个GPU池仅仅是示例性的,在其它例子中可以根据需要来设置多个任意的GPU池,诸如1-GPU池、2-GPU池、3-GPU池、4-GPU池、5-GPU池等等。
在320处,为每个GPU池分配至少一个可用的GPU组,其中每个GPU组中包括至少一个可用的GPU。在该例子中,为多个GPU池所分配的GPU组的数量可以相同也可以不同,以及每个GPU组中的GPU的数量可以相同也可以不同。在示例性实施例中,可以根据预定条件来为每个GPU池分配GPU组。例如,相比1-GPU任务和2-GPU任务,执行4-GPU任务所需的GPU数量较多,因此,可以为4-GPU池分配较多的GPU组。再举一个例子,在一些情况下,相比2-GPU任务和4-GPU任务,用户要执行的1-GPU任务的数量更多,因此可以为1-GPU池分配较多的GPU组。在一些实施例中,可以将系统中所有可用的GPU或GPU组预先分配给多个GPU池。在另外一些实施例中,分配给每个GPU池的GPU组的数量是可调整的。
在330处,接收任务和与该任务有关的任务信息,其中任务信息指示执行该任务需要的GPU数量。例如,从用户接收到一个任务连同任务信息,该任务信息指示执行所接收的任务需要4个GPU,也即,该任务是4-GPU任务。
在340处,至少根据该任务信息来选择相应的GPU池。在实施例中,如果根据任务信息指示的、执行所接收的任务需要的GPU数量而确定在多个GPU池中存在相应的GPU池,则选择该相应的GPU池。例如,如果任务信息指示该任务是4-GPU任务,则选择多个GPU池中的4-GPU池来执行该任务。另外地或可选地,如果根据任务信息指示的、执行所接收的任务需要的GPU数量而确定在多个GPU池中不存在相应的GPU池,则从多个GPU池中选择一个或多个GPU池,所选择的一个或多个GPU池用于执行一个任务的GPU数量大于执行所接收的任务需要的GPU数量。例如,在一个例子中,如果所设置的多个池包括1-GPU池、2-GPU池和4-GPU池,并且任务信息指示接收的任务是3-GPU任务,则选择4-GPU池来执行该3-GPU任务。
在350处,至少根据该任务信息在所选择的GPU池中确定要调度给该任务的可用GPU。在一些实施例中,如果需要调度多于一个的GPU时,优选地将多于一个的、紧密相邻的多个GPU确定为用于执行该任务。例如,如果根据任务信息得知该任务是4-GPU任务,则可以在所选择的4-GPU池中确定要调度4个紧密相邻的GPU。优选地,该4个紧密相邻的GPU在同一GPU组中,或在同一节点中。在本公开内容的实施例中,可以通过任意方式来在所选择的GPU池中确定要调度给该任务的可用GPU。优选地,通过以下方式中的至少一种来在所选择的GPU池中确定要调度给该任务的可用GPU:以减少多个任务间的干扰的任何方式,例如,使得在同一个GPU池中执行不同任务的GPU尽可能远地分散开;以减少GPU间通信成本的任何方式,例如,针对不同的任务,选择同一个节点的同一个GPU组中的不同GPU;以及以减少中央处理单元(CPU)-GPU间通信成本的任何方式,例如,针对不同的任务,选择同一个节点中的不同GPU或不同GPU组中的GPU。
在360处,将所确定的可用GPU调度给该任务,以执行该任务。
可选的在370处,当任务执行完毕后,将调度给该任务的GPU释放回相应的GPU池中。例如,如果接收的任务是4-GPU任务,则在该4-GPU任务执行完毕后,将从4-GPU池中调度的用于执行该4-GPU任务的4个GPU释放回4-GPU池中。再举一个例子,如果接收的任务是3-GPU任务,则在该3-GPU任务执行完毕后,将根据上述操作从4-GPU池中调度的用于执行该3-GPU任务的3个GPU释放回4-GPU池中。
下文将参考图3的方法300描述示例性的GPU资源分配和释放示意图。
图4示出了根据实施例的基于图3的示例性方法的示例性GPU资源分配的示意图400。
如图4所示,在系统中设置了多个GPU池,例如1-GPU池、2-GPU池和4-GPU池,其中1-GPU池用于服务1-GPU任务,2-GPU池用于服务2-GPU任务,4-GPU池用于服务4-GPU任务。每个GPU池被分配有多个节点,每个节点包括多个GPU组,每个GPU组包括多个GPU。在图4的例子中,每个节点以点线框表示并且包括2个GPU组,每个GPU组以实线框表示并且包括4个GPU,以及每个GPU以一个圆圈来表示。在该例子中,1-GPU池被分配有2个节点,2-GPU池被分配有2个节点,4-GPU池被分配有4个节点。
当接收到任务j1及其任务信息时,根据其任务信息的指示确定任务j1为1-GPU任务,由此选择1-GPU池来服务任务j1。在图4的例子中示出了多个GPU任务,例如1-GPU任务、2-GPU任务、3-GPU任务、4-GPU任务,其中1-GPU任务占用的GPU以填充斜线的圆圈来表示,2-GPU任务占用的GPU以填充方格的圆圈来表示,3-GPU任务占用的GPU以填充横线的圆圈来表示,以及4-GPU任务占用的GPU以填充阴影的圆圈来表示。在接收到任务j1时,所选择的1-GPU池中有多个可用的GPU。在该例子中,以上文提及的任何一种方式确定可调度GPU a1来服务任务j1并将GPU a1调度用于该任务j1。
当接收到任务j2及其任务信息时,根据其任务信息的指示确定任务j2为2-GPU任务,由此选择2-GPU池来服务任务j2。在接收到任务j2时,所选择的2-GPU池中有多个可用的GPU。在该例子中,以上文提及的任何一种方式确定可调度GPU c1和GPU c2来服务任务j2并将这2个GPU调度用于该任务j2。
当接收到任务j3及其任务信息时,根据其任务信息的指示确定任务j3为4-GPU任务,由此选择4-GPU池来服务任务j3。在接收到任务j3时,所选择的4-GPU池中有多个可用的GPU。在该例子中,以上文提及的任何一种方式确定可调度GPU e1、GPU e2、GPU e3、GPU e4来服务任务j3并将这4个GPU调度用于该任务j3。
当接收到任务j4及其任务信息时,根据其任务信息的指示确定任务j4为1-GPU任务,由此选择1-GPU池来服务任务j4。在接收到任务j4时,所选择的1-GPU池中的GPU a1已被分配用于执行任务j1。在该例子中,为了减少任务j1和j4之间的干扰和资源冲突,确定可调度与GPU a1处于不同节点中的GPU b1来服务任务j4并将这个GPU调度用于该任务j4。类似地,当接收到2-GPU任务j5时,选择2-GPU池。例如,为了减少任务j2和j5之间的干扰和资源冲突,确定可调度与执行任务j2的GPU c1、GPU c2处于不同节点中的GPU d7、GPU d8来执行任务j5并将这两个GPU调度用于该任务j5。类似地,当接收到4-GPU任务j6时,确定可调度4-GPU池中的4个GPU,即GPU h5、GPU h6、GPU h7、GPU h8,来执行任务j6。
进一步地,当接收到1-GPU任务j7时,由于此时的1-GPU池的每个节点中均已有GPU被占用以执行任务,例如在一个节点中执行任务j1的GPU a1和在另一个节点中执行任务j4的GPU b1,因此可以选择同一个节点中的不同GPU组中的GPU来执行任务j7,例如与GPU a1处于同一节点但不同GPU组中的GPU a8,以降低任务间的干扰并减少CPU-GPU间的通信成本。类似地,当接收到1-GPU任务j8时,可以确定将GPU b8调度用于执行任务j8,其中该GPUb8与GPU a1、GPU a4处于不同的节点中,与GPU b1处于相同的节点但不同的GPU组中。类似地,当接收到2-GPU任务j10时,以类似的方式确定将GPU d1、GPU d2调度用于执行任务j10,其中GPU d1、GPU d2与用于执行其它2-GPU任务j2的GPU c1、GPU c2处于不同节点中,与用于执行其它2-GPU任务j5的GPU d7、GPU d8处于相同节点但不同的GPU组中。
另外地,当接收到1-GPU任务j9时,由于此时的1-GPU池的每个节点中的每个GPU组中均已有GPU被占用以执行任务,例如在一个节点的一个GPU组中执行任务j1的GPU a1和在该同一个节点的另一个GPU组中执行任务j7的GPU a8,以及在另一个节点的一个GPU组中执行任务j4的GPU b1和在该同一个节点的另一个GPU组中执行任务j8的GPU b8,因此可以选择同一个GPU组中的其它GPU来执行任务j9,例如与GPU a1处于同一GPU组中的GPU a4,以降低任务间的干扰并减少GPU-GPU间的通信成本。
此外,在图4的例子中,当接收到3-GPU任务j11时,可以选择4-GPU池,以及在所选择的4-GPU池中确定与执行其它任务的GPU不处于同一个节点的3个GPU,即GPU f1、GPU f2、GPU f3,来执行任务j11。
图5示出了根据实施例的基于图4的示例性GPU资源分配的示例性GPU资源释放的示意图500。
与图4的GPU资源分配相比,在图5中,1-GPU任务j1、2-GPU任务j2和4-GPU任务j3已被执行完毕,从而执行1-GPU任务j1的GPU资源GPU a1被释放回1-GPU池,执行2-GPU任务j2的GPU c1和GPU c2被释放回2-GPU池,以及执行4-GPU任务j3的GPU e1、GPU e2、GPU e3、GPUe4被释放回4-GPU池。参考图5的GPU资源释放的示意图500,使用本公开内容的实施例的基于GPU池的GPU资源调度方式几乎不存在GPU资源碎片,并且任务之间的干扰也较小。
可选地或另外地,在设置GPU池时还可以设置预留池。下文将描述在设置有预留池情况下的GPU资源调度情形。
图6示出了根据实施例的用于对多个GPU进行调度的另一示例性方法600的流程图。
在610处,设置多个GPU池,其中每个池被配置用于服务需要相同数量的GPU的一个或多个任务,以及其中多个GPU池包括预留池。
在620处,为每个GPU池分配至少一个可用的GPU组,其中为预留池分配的GPU组中的GPU作为预留GPU,所述预留GPU用于服务高优先级任务和/或由该预留池和其它池共享。例如,在一些例子中,当将8-GPU任务设定为高优先级任务时,预留池中的预留GPU可用于服务8-GPU任务。在另一些例子中,当没有设定高优先级任务时,在其它池需要时,可以将预留池中的预留GPU借给其它池使用。例如,当所设置的其它池,诸如1-GPU池、2-GPU池、4-GPU池,满足预定条件时,将预留池中的至少一个预留GPU借用到满足预定条件的其它池。在一些例子中,预定条件可以包括以下中的至少一个:其它池中剩余的GPU数量小于阈值,在其它池中执行的任务之间的干扰超过阈值,以及在其它池中未决任务的等待时间超过阈值。
在一些例子中,在为每个GPU池分配至少一个可用的GPU组时可以为每个GPU池预先分配至少一个可用的GPU。可选地或另外地,在一些例子中,可以初始为预留池分配所有可用的GPU以及为每个其它GPU池分配零个可用的GPU。
在630处,接收任务和与该任务有关的任务信息,其中,任务信息指示执行该任务需要的GPU数量。该操作与图3的330类似。
在640处,至少根据该任务信息来选择相应的GPU池。该操作与图3的340类似。
在650处,至少根据该任务信息在所选择的GPU池中确定是否有可用GPU可被调度给该任务。例如,可以通过以下条件中的至少一个来确定是否有可用GPU可被调度用于执行该任务:所选择的池中剩余的GPU数量是否小于阈值;在所选择的池中执行的任务之间的干扰是否超过阈值;在所选择的池中未决任务的等待时间是否超过阈值。
如果确定在所选择的GPU池中有可用GPU可被调度给该任务,则进行到660处,将所确定的可用GPU调度给该任务。该调度操作与图3的360类似。
如果确定在所选择的GPU池中没有可用GPU可被调度给该任务,例如,所选择的池中剩余的GPU数量小于阈值,和/或在所选择的池中执行的任务之间的干扰超过阈值,和/或在所选择的池中未决任务的等待时间超过阈值,则进行到670,从预留池中借用预留GPU以调度来执行该任务。例如,在一些例子中,如果接收到新的1-GPU任务且1-GPU池中没有可用GPU,则可以向预留池借用预留GPU来执行该新的任务。在另一些例子中,如果接收到新的2-GPU任务并且使用2-GPU池中剩下的可用GPU来执行新的2-GPU任务会对正在进行的其它2-GPU任务造成较大的干扰,则可以向预留池借用预留GPU来执行新的2-GPU任务。在又一些例子中,如果接收到新的4-GPU任务并且该新的任务等待了很长时间仍未被分配GPU资源,则可以从预留池中借用预留GPU来执行新的4-GPU任务。
可选地或另外地,在680处,在任务完成后,将调度给该任务的GPU释放回相应的GPU池中。例如,如果没有向预留池借用预留GPU,则将调度的GPU释放回原GPU池;如果向预留池借用了预留GPU,则将借用的预留GPU释放回预留池中。可选地或另外地,也可以暂时不返还借用的预留GPU,而是将借用的预留GPU释放到执行任务的GPU池中留待后续使用。
下文将参考图6的方法600描述涉及预留池的示例性GPU资源分配和资源释放示意图。
图7示出了根据实施例的基于图6的示例性方法600的示例性GPU资源分配的示意图700。
图7的示意图700与图4的GPU资源分配示意图400类似,除了图7中多了预留池,该预留池包括4个节点,每个节点包括2个GPU组,每个GPU组包括4个GPU,其中,包括GPU k1-k8的节点和包括GPU q1-q8的节点被预留为专用于执行8-GPU任务,而包括GPU m1-m8的节点和包括GPU n1-n8的节点中的GPU m1-m8、n1-n8可被预留用于由图7中的预留池、1-GPU池、2-GPU池、4-GPU池共享。应当理解,虽然图7中示出预留池中的GPU k1-k8、q1-q8专用于执行8-GPU任务,GPU m1-m8、n1-n8可被预留池和其它池共享,但在其它例子中,预留池中的所有预留GPU均可被预留专用于执行高优先级任务,或所有预留GPU均可由预留池和其它池共享,或部分预留GPU专用于执行其它任务,部分预留GPU由多个池共享。
图8示出了根据实施例的基于图6的示例性方法600的、涉及GPU借用的示例性GPU资源分配的示意图800。
在图8示出的例子中,当前的2-GPU池中的所有4个GPU组都正在执行任务,诸如任务j2、j5、j10、j12,并且接收到新的2-GPU任务j13。如果将新的任务j13分配给现有的4个GPU组中的任何一个,则会给正在执行的任务造成干扰。由此可以认为当前的2-GPU池中没有可用的GPU可被分配给新的任务j13。因此,可以向预留池借用GPU来执行新的任务j13,如图8中的虚线箭头所示。在一些例子中,借用GPU可以是以节点的形式来借用,如图所示,借用包括GPU n1-n8的节点。可选地或另外地,借用GPU可以是以GPU组的形式来借用,例如,可以只借用包括GPU n1-n4的GPU组,图中未示出该种情况。进一步地,借用GPU也可以是以GPU的形式来借用,例如可以只借用GPU n1、GPU n2来执行任务j13,图中未示出该种情况。
图9示出了根据实施例的基于图8的示例性GPU资源分配的、涉及GPU返还的示例性GPU资源释放的示意图900。
如图6中的操作680所示的,在任务完成后将调度用于执行任务的GPU释放回GPU池中。在图9的例子中,任务j13被执行完毕。由于执行任务j13的GPU n1、n2是包括在从预留池借用的节点中的,因此,在GPU n1、n2被释放后,将其所在的节点整体返还给预留池,如图9中的虚线箭头所示。在另外一些例子中,在任务j13被执行完毕后,可以只将包括GPU n1、n2的GPU组返还给预留池,而将其它GPU组留在2-GPU池中继续使用;可选地,可以只将GPU n1、n2返还给预留池,将其它GPU留在2-GPU池中以供后续使用,图中未示出这种例子。另外地或者可选地,可以不返还借用的预留GPU或GPU组或节点,而将其继续保留在2-GPU池中以供后续使用,图中未示出这种例子。
图10示出了根据实施例的用于对多个GPU进行调度的又一示例性方法1000的流程图。
在1010处,设置多个GPU池,其中每个池被配置用于服务需要相同数量的GPU的一个或多个任务,以及其中多个GPU池包括预留池。
在1020处,初始将所有可用的GPU均分配给预留池,以及多个GPU池中的每个其它池被分配零个GPU,如图11所示的例子。
在1030处,接收任务和与该任务有关的任务信息,其中,所述任务信息指示执行该任务需要的GPU数量。该操作与图3的330类似。
在1040处,至少根据该任务信息来选择相应的GPU池。该操作与图3的340类似。
在1050处,从预留池中借用至少所需数量个GPU来调度用于执行该任务,如图12所示的例子。例如,当任务信息指示接收的任务是4-GPU任务时,从预留池中借用至少4个GPU,例如,至少一个包括4个GPU的GPU组,至少一个包括8个GPU的节点,等等。
在1060处,从所借用的GPU中调度所需数量的GPU来执行该任务,如图12所示的例子。例如,当任务是4-GPU任务并且从预留池借用了至少一个节点时,从借用的节点中确定4个GPU来执行该4-GPU任务。
在1070处,在任务完成后,将借用的GPU返还给预留池,如图13所示的例子。
图11示出了根据实施例的基于图10的示例性方法1000的示例性GPU资源分配的示意图1100。在图11所示的例子中,1-GPU池、2-GPU池、4-GPU池均未被分配GPU,即,被分配了零个GPU。所有可用的GPU a1-f8都被分配给预留池,其中,包括4个圆圈的虚线框表示包括4个可被借用的GPU的一个预留GPU组,包括2个虚线框的点线框表示包括2个可被借用的GPU组的一个预留节点。即,在图11所示的例子中,预留池被分配了6个预留节点,其中每个预留节点包括2个预留GPU组,每个GPU组包括4个预留GPU。
图12示出了根据实施例的基于图10的示例性方法的涉及GPU借用的示例性GPU资源分配的示意图1200。
在图12所示的例子中,当接收到1-GPU任务j1时,根据指示任务j1需要1个GPU的任务信息来选择1-GPU池。由于最初1-GPU池未被分配GPU,因此向预留池借用至少1个GPU来执行任务j1。在该例子中,以节点为单位来进行借用,例如,从预留池中借用了包括GPU f1-f8的节点,如图12中的虚线箭头所示。在其它例子中,可以以GPU组为单位来进行借用,例如,可以从预留池中借用包括GPU f1-f4的GPU组。另外地或可选地,可以以GPU为单位来进行借用,例如可以从预留池中借用GPU f1和/或多个GPU。
在图12所示的例子中,从预留池中借用了包括8个GPU的一个节点。由于执行1-GPU任务j1只需要1个GPU,因此可以从包括GPU f1-f8的该节点中确定调度任意1个GPU来执行任务j1。例如,在所示出的例子中,确定可使用GPU f1来执行任务j1。应当理解,可以以任意适合的方式从借用的GPU中确定所需数量的GPU来执行任务。
图13示出了根据实施例的基于图12的示例性GPU资源分配的、涉及GPU返还的示例性GPU资源释放的示意图。
在图13所示的例子中,当任务j1完成后,将借用的GPU返还给预留池,如图中的虚线箭头所示。在该例子中,以包括GPU f1-f8的节点为单位将借用的GPU返还给预留池。在其它例子中,可以以包括GPU f1-f4的GPU组为单位将借用的GPU返还给预留池。另外地或可选地,可以以GPU为单位将借用的GPU f1返还给预留池,或者向预留池返还借用的GPU中的任意多个GPU,例如向预留池返还GPU f1、f2。
应当理解,上述附图中所示的所有GPU池、节点、GPU组都是示例性的。在本申请中,每个GPU池可以包括任意数量个节点,每个节点可以包括任意数量个GPU组,每个GPU组可以包括任意数量个GPU;并且每个GPU池包括的节点数量可以与其它GPU池相同或不同,每个节点包括的GPU组的数量可以与其它节点相同或不同,每个GPU组包括的GPU的数量可以与其它GPU组相同或不同。
图14示出了根据实施例的用于对多个可用的GPU进行调度的示例性方法1400的流程图。
在1410处,可以设置多个GPU池,其中每个池被配置用于服务需要相同数量的GPU的一个或多个任务。
在1420处,可以为每个GPU池分配可用的GPU。
在1430处,可以接收任务和与该任务有关的任务信息,其中,所述任务信息指示执行该任务需要的GPU数量。
在1440处,可以至少根据该任务信息来选择相应的GPU池。
在1450处,至少根据该任务信息在所选择的GPU池中确定要调度给该任务的可用GPU。
在1460处,将所确定的可用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间通信成本的任何方式,以及以减少中央处理单元(CPU)-GPU间通信成本的任何方式。
在进一步的实现中,当所述任务信息指示执行所述任务需要的GPU数量大于一个时,至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU进一步包括:确定要调度给所述任务的可用的GPU的相应数量;以及选择相应数量个可用的GPU,其中,所述相应数量个可用的GPU在所述GPU池中紧密相邻。
在进一步的实现中,至少根据所述任务信息来选择相应的GPU池进一步包括:当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定所述多个GPU池中存在相应的GPU池时,选择该相应的GPU池;以及当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定在所述多个GPU池中不存在相应的GPU池时,从所述多个GPU池中选择一个或多个GPU池,所选择的一个或多个GPU池用于服务一个任务的GPU数量大于执行所接收的任务需要的GPU数量。
应当理解的是,方法1400还可以包括:用于根据本公开内容的实施例,对多个可用的图形处理单元(GPU)进行调度的任何步骤/处理,如上面所提及的。
图15示出了根据实施例的用于对多个可用的GPU进行调度的示例性装置1500。
装置1500可以包括:设置模块1510,用于设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的GPU的一个或多个任务;分配模块1520,用于为每个GPU池分配可用的GPU;接收模块1530,用于接收任务和与所述任务有关的任务信息,其中,所述任务信息指示执行所述任务需要的GPU数量;选择模块1540,用于至少根据所述任务信息来从所述多个GPU池中选择相应的GPU池;确定模块1550,用于至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU;以及调度模块1560,用于将所确定的可用的GPU调度给所述任务。
在一种实现中,所述多个GPU池包括预留池,以及所述分配模块1520还用于:为所述预留池分配至少一个可用的GPU作为预留GPU,其中所述预留GPU被配置为专用于服务高优先级任务或被配置为由所述预留池和所述多个GPU池中的其它池共享。
在一种实现中,当所述预留GPU被配置为由所述预留池和所述其它池共享时,所述分配模块1520还用于:在所述其它池满足预定条件时,向所述预留池借用所述预留GPU中的一个或多个预留GPU;以及在所借用的一个或多个预留GPU被释放后,将所释放的预留GPU返还给所述预留池。
在一种实现中,所述预定条件包括以下中的一个或多个条件:其它池中剩余的GPU数量小于阈值;在其它池中执行的任务之间的干扰超过阈值;在其它池中未决任务的等待时间超过阈值。
在进一步的实现中,当所述预留GPU被配置为由所述预留池和所述其它池共享时,所述分配模块1520还用于:初始为所述预留池分配所有可用的GPU以及为每个其它GPU池分配零个可用的GPU;以及所述确定模块1550还用于根据所述任务信息确定执行所述任务需要的GPU数量,以及所述分配模块1520还用于从所述预留池中借用至少所需数量个GPU以供调度用于执行所述任务。
在进一步的实现中,所述分配模块1520还用于:为每个GPU池分配至少一个GPU组,其中,每个GPU组中包括至少一个可用的GPU,以及其中,每个GPU组中的GPU的数量相同或不同。
另外地或可选地,所述分配模块1520还用于:将系统中所有可用的GPU预先分配给所述多个GPU池。
在进一步的实现中,所述选择模块1540还用于:当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定所述多个GPU池中存在相应的GPU池时,选择该相应的GPU池;以及当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定不存在相应的GPU池时,从所述多个GPU池中选择一个或多个GPU池,所选择的一个或多个GPU池用于服务一个任务的GPU数量大于执行所接收的任务需要的GPU数量。
应当理解的是,装置1500还可以包括:被配置为根据本公开内容的实施例,用于对多个可用的图形处理单元(GPU)进行调度的任何其它模块,如上面所提及的。
图16示出了根据实施例的用于对多个可用的GPU进行调度的另一种示例性装置1600。装置1600可以包括一个或多个处理器1610和存储计算机可执行指令的存储器1620,当执行所述计算机可执行指令时,所述一个或多个处理器1610可以执行以下操作:设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的GPU的一个或多个任务;为每个GPU池分配可用的GPU;接收任务和与所述任务有关的任务信息,其中,所述任务信息指示执行所述任务需要的GPU数量;至少根据所述任务信息来从所述多个GPU池中选择相应的GPU池;至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU;以及将所确定的可用的GPU调度给所述任务。
本公开内容的实施例可以实施在非暂时性计算机可读介质中。该非暂时性计算机可读介质可以包括指令,当所述指令被执行时,使得一个或多个处理器根据如上面所述的本公开内容的实施例,执行用于通过多种输入模式处理文档的方法的任何操作。
应当理解,以上描述的方法中的所有操作都仅仅是示例性的,本公开并不限制于方法中的任何操作或这些操作的顺序,而是应当涵盖在相同或相似构思下的所有其它等同变换。
还应当理解,以上描述的装置中的所有模块都可以通过各种方式来实施。这些模块可以被实施为硬件、软件、或其组合。此外,这些模块中的任何模块可以在功能上被进一步划分成子模块或组合在一起。
已经结合各种装置和方法描述了处理器。这些处理器可以使用电子硬件、计算机软件或其任意组合来实施。这些处理器是实施为硬件还是软件将取决于具体的应用以及施加在系统上的总体设计约束。作为示例,本公开中给出的处理器、处理器的任意部分、或者处理器的任意组合可以实施为微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门逻辑、分立硬件电路、以及配置用于执行在本公开中描述的各种功能的其它适合的处理部件。本公开给出的处理器、处理器的任意部分、或者处理器的任意组合的功能可以实施为由微处理器、微控制器、DSP或其它适合的平台所执行的软件。
软件应当被广泛地视为表示指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、运行线程、过程、函数等。软件可以驻留在计算机可读介质中。计算机可读介质可以包括例如存储器,存储器可以例如为磁性存储设备(如,硬盘、软盘、磁条)、光盘、智能卡、闪存设备、随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、寄存器或者可移动盘。尽管在本公开给出的多个方面中将存储器示出为是与处理器分离的,但是存储器也可以位于处理器内部(如,缓存或寄存器)。
以上描述被提供用于使得本领域任何技术人员可以实施本文所描述的各个方面。这些方面的各种修改对于本领域技术人员是显而易见的,本文限定的一般性原理可以应用于其它方面。因此,权利要求并非旨在被局限于本文示出的方面。关于本领域技术人员已知或即将获知的、对本公开所描述各个方面的元素的所有结构和功能上的等同变换,都将通过引用而明确地包含到本文中,并且旨在由权利要求所覆盖。

Claims (20)

1.一种用于对多个可用的图形处理单元(GPU)进行调度的方法,所述方法包括:
设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的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返还给所述预留池。
4.根据权利要求3所述的方法,其中,所述预定条件包括以下中的至少一个条件:其它池中剩余的GPU数量小于阈值,在其它池中执行的任务之间的干扰超过阈值,以及在其它池中未决任务的等待时间超过阈值。
5.根据权利要求2所述的方法,其中,
当所述预留GPU被配置为由所述预留池和所述其它池共享时,为每个GPU池分配可用的GPU包括:初始为所述预留池分配所有可用的GPU以及为每个其它GPU池分配零个可用的GPU;以及
在所选择的GPU池中确定要调度给所述任务的可用的GPU进一步包括:根据所述任务信息确定执行所述任务需要的GPU数量,以及从所述预留池中借用至少所需数量个GPU以供调度用于执行所述任务。
6.根据权利要求1所述的方法,其中,为每个GPU池分配可用的GPU包括:将系统中所有可用的GPU预先分配给所述多个GPU池。
7.根据权利要求1所述的方法,其中,为每个GPU池分配可用的GPU包括:为每个GPU池分配至少一个GPU组,其中,每个GPU组中包括至少一个可用的GPU,以及其中,每个GPU组中的GPU的数量相同或不同。
8.根据权利要求7所述的方法,其中,为每个GPU池分配的GPU组的数量是可调整的。
9.根据权利要求1所述的方法,其中,至少通过以下方式中的一种来在所选择的GPU池中确定要调度给所述任务的可用的GPU:以减少多个任务间的干扰的任何方式,以减少GPU间通信成本的任何方式,以及以减少中央处理单元(CPU)-GPU间通信成本的任何方式。
10.根据权利要求1所述的方法,其中,当所述任务信息指示执行所述任务需要的GPU数量大于一个时,至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU进一步包括:
确定要调度给所述任务的可用的GPU的相应数量;以及
选择相应数量个可用的GPU,其中,所述相应数量个可用的GPU在所述GPU池中紧密相邻。
11.根据权利要求1所述的方法,其中,至少根据所述任务信息来选择相应的GPU池进一步包括:
当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定所述多个GPU池中存在相应的GPU池时,选择该相应的GPU池;以及
当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定在所述多个GPU池中不存在相应的GPU池时,从所述多个GPU池中选择一个或多个GPU池,所选择的一个或多个GPU池用于服务一个任务的GPU数量大于执行所接收的任务需要的GPU数量。
12.一种用于对多个可用的图形处理单元(GPU)进行调度的装置,所述装置包括:
设置模块,用于设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的GPU的一个或多个任务;
分配模块,用于为每个GPU池分配可用的GPU;
接收模块,用于接收任务和与所述任务有关的任务信息,其中,所述任务信息指示执行所述任务需要的GPU数量;
选择模块,用于至少根据所述任务信息来从所述多个GPU池中选择相应的GPU池;
确定模块,用于至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU;以及
调度模块,用于将所确定的可用的GPU调度给所述任务。
13.根据权利要求12所述的装置,其中,
所述多个GPU池包括预留池,以及
所述分配模块还用于:为所述预留池分配至少一个可用的GPU作为预留GPU,其中所述预留GPU被配置为专用于服务高优先级任务或被配置为由所述预留池和所述多个GPU池中的其它池共享。
14.根据权利要求13所述的装置,其中,当所述预留GPU被配置为由所述预留池和所述其它池共享时,所述分配模块还用于:在所述其它池满足预定条件时,向所述预留池借用所述预留GPU中的一个或多个预留GPU;以及在所借用的一个或多个预留GPU被释放后,将所释放的预留GPU返还给所述预留池。
15.根据权利要求14所述的方法,其中,所述预定条件包括以下中的一个或多个条件:其它池中剩余的GPU数量小于阈值,在其它池中执行的任务之间的干扰超过阈值,在其它池中未决任务的等待时间超过阈值。
16.根据权利要求13所述的装置,其中,当所述预留GPU被配置为由所述预留池和所述其它池共享时,所述分配模块还用于:初始为所述预留池分配所有可用的GPU以及为每个其它GPU池分配零个可用的GPU;以及
所述确定模块还用于根据所述任务信息确定执行所述任务需要的GPU数量,以及所述分配模块还用于从所述预留池中借用至少所需数量个GPU以供调度用于执行所述任务。
17.根据权利要求12所述的装置,其中,所述分配模块还用于:为每个GPU池分配至少一个GPU组,其中,每个GPU组中包括至少一个可用的GPU,以及其中,每个GPU组中的GPU的数量相同或不同。
18.根据权利要求12所述的装置,其中,所述分配模块还用于:将系统中所有可用的GPU预先分配给所述多个GPU池。
19.根据权利要求12所述的装置,其中,所述选择模块还用于:
当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定所述多个GPU池中存在相应的GPU池时,选择该相应的GPU池;以及
当根据所述任务信息指示的、执行所接收的任务需要的GPU数量确定不存在相应的GPU池时,从所述多个GPU池中选择一个或多个GPU池,所选择的一个或多个GPU池用于服务一个任务的GPU数量大于执行所接收的任务需要的GPU数量。
20.一种用于对多个可用的图形处理单元(GPU)进行调度的装置,所述装置包括:
一个或多个处理器;以及
存储计算机可执行指令的存储器,当所述计算机可执行指令被执行时,使得所述一个或多个处理器执行以下操作:
设置多个GPU池,其中每个GPU池被配置用于服务需要相同数量的GPU的一个或多个任务;
为每个GPU池分配可用的GPU;
接收任务和与所述任务有关的任务信息,其中,所述任务信息指示执行所述任务需要的GPU数量;
至少根据所述任务信息来从所述多个GPU池中选择相应的GPU池;
至少根据所述任务信息在所选择的GPU池中确定要调度给所述任务的可用的GPU;以及
将所确定的可用的GPU调度给所述任务。
CN201810478340.3A 2018-05-18 2018-05-18 多个图形处理单元的调度 Pending CN110503593A (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201810478340.3A CN110503593A (zh) 2018-05-18 2018-05-18 多个图形处理单元的调度
EP19724699.4A EP3794449A1 (en) 2018-05-18 2019-05-06 Scheduling of a plurality of graphic processing units
US17/044,284 US11983564B2 (en) 2018-05-18 2019-05-06 Scheduling of a plurality of graphic processing units
PCT/US2019/030787 WO2019221948A1 (en) 2018-05-18 2019-05-06 Scheduling of a plurality of graphic processing units
US18/628,102 US20240248759A1 (en) 2018-05-18 2024-04-05 Scheduling of a plurality of graphic processing units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810478340.3A CN110503593A (zh) 2018-05-18 2018-05-18 多个图形处理单元的调度

Publications (1)

Publication Number Publication Date
CN110503593A true CN110503593A (zh) 2019-11-26

Family

ID=66554525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810478340.3A Pending CN110503593A (zh) 2018-05-18 2018-05-18 多个图形处理单元的调度

Country Status (4)

Country Link
US (2) US11983564B2 (zh)
EP (1) EP3794449A1 (zh)
CN (1) CN110503593A (zh)
WO (1) WO2019221948A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI739235B (zh) * 2019-12-12 2021-09-11 中華電信股份有限公司 一種gpu運算資源指配系統及其方法
WO2022088659A1 (zh) * 2020-10-26 2022-05-05 北京市商汤科技开发有限公司 资源调度方法及装置、电子设备、存储介质和程序产品

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521042B2 (en) * 2019-05-21 2022-12-06 Anil Ravindranath System and method to dynamically and automatically sharing resources of coprocessor AI accelerators
US11687376B2 (en) * 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with dynamic partition
CN115220921B (zh) * 2022-09-19 2023-01-03 浙江大华技术股份有限公司 资源调度方法及相关装置、图形处理器、摄像器件和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819540A (zh) * 2009-02-27 2010-09-01 国际商业机器公司 在集群中调度任务的方法和系统
CN103761139A (zh) * 2014-01-25 2014-04-30 湖南大学 一种基于动态库拦截的通用计算虚拟化实现方法
CN104657214A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于多队列和多优先级的大数据任务管理系统和方法
US20170262952A1 (en) * 2016-03-10 2017-09-14 Gamefly Israel Ltd. System and method for gpu scheduling
CN107577534A (zh) * 2017-08-31 2018-01-12 郑州云海信息技术有限公司 一种资源调度方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104036451B (zh) 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104485715B (zh) 2014-12-29 2017-05-03 江苏科技大学 一种智能池化装置及其方法
US20160335119A1 (en) 2015-05-12 2016-11-17 minds.ai inc Batch-based neural network system
US9916636B2 (en) * 2016-04-08 2018-03-13 International Business Machines Corporation Dynamically provisioning and scaling graphic processing units for data analytic workloads in a hardware cloud
US10262390B1 (en) * 2017-04-14 2019-04-16 EMC IP Holding Company LLC Managing access to a resource pool of graphics processing units under fine grain control
US11221876B2 (en) * 2018-12-30 2022-01-11 Paypal, Inc. Scheduling applications in CPU and GPU hybrid environments
WO2020257976A1 (en) * 2019-06-24 2020-12-30 Intel Corporation Apparatus and method for scheduling graphics processing resources
US20210157651A1 (en) * 2019-09-05 2021-05-27 Nvidia Corporation Techniques for configuring a processor to function as multiple, separate processors in a virtualized environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819540A (zh) * 2009-02-27 2010-09-01 国际商业机器公司 在集群中调度任务的方法和系统
CN103761139A (zh) * 2014-01-25 2014-04-30 湖南大学 一种基于动态库拦截的通用计算虚拟化实现方法
CN104657214A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于多队列和多优先级的大数据任务管理系统和方法
US20170262952A1 (en) * 2016-03-10 2017-09-14 Gamefly Israel Ltd. System and method for gpu scheduling
CN107577534A (zh) * 2017-08-31 2018-01-12 郑州云海信息技术有限公司 一种资源调度方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI739235B (zh) * 2019-12-12 2021-09-11 中華電信股份有限公司 一種gpu運算資源指配系統及其方法
WO2022088659A1 (zh) * 2020-10-26 2022-05-05 北京市商汤科技开发有限公司 资源调度方法及装置、电子设备、存储介质和程序产品

Also Published As

Publication number Publication date
US20240248759A1 (en) 2024-07-25
EP3794449A1 (en) 2021-03-24
WO2019221948A1 (en) 2019-11-21
US20210026696A1 (en) 2021-01-28
US11983564B2 (en) 2024-05-14

Similar Documents

Publication Publication Date Title
CN110503593A (zh) 多个图形处理单元的调度
CN106056529B (zh) 一种对用于图片识别的卷积神经网络训练的方法与设备
CN108292241B (zh) 处理计算图
CN110796588B (zh) 同时计算和图形调度
CN108885571B (zh) 分批处理机器学习模型的输入
CN105512083B (zh) 基于yarn的资源管理方法、装置及系统
US20200257972A1 (en) Method and apparatus for determining memory requirement in a network
US11907770B2 (en) Method and apparatus for vectorized resource scheduling in distributed computing systems using tensors
CN103999051A (zh) 用于着色器核心中着色器资源分配的策略
CN112230677B (zh) 无人机族群任务规划方法及终端设备
CN104102472A (zh) 并行处理执行的设备和方法
CN109564528A (zh) 分布式计算中计算资源分配的系统和方法
CN111176829B (zh) 虚拟化处理系统中的物理功能和虚拟功能的灵活资源分配
CN110308982A (zh) 一种共享内存复用方法及装置
CN107123154B (zh) 目标对象的渲染方法和装置
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
US20210097396A1 (en) Neural network training in a distributed system
JP2023511467A (ja) 機械学習ワークロードのためのタスクスケジューリング
CN118069379B (zh) 一种基于gpu资源的调度实现方法
KR20220052546A (ko) 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템
Kim et al. Las: locality-aware scheduling for GEMM-accelerated convolutions in GPUs
US11221979B1 (en) Synchronization of DMA transfers for large number of queues
US20230289211A1 (en) Techniques for Scalable Load Balancing of Thread Groups in a Processor
CN116260876A (zh) 基于K8s的AI应用调度方法、装置及电子设备
CN114168311A (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