CN114116220A - 一种gpu共享控制方法、gpu共享控制装置及存储介质 - Google Patents

一种gpu共享控制方法、gpu共享控制装置及存储介质 Download PDF

Info

Publication number
CN114116220A
CN114116220A CN202111430309.0A CN202111430309A CN114116220A CN 114116220 A CN114116220 A CN 114116220A CN 202111430309 A CN202111430309 A CN 202111430309A CN 114116220 A CN114116220 A CN 114116220A
Authority
CN
China
Prior art keywords
gpu
task
deep learning
stage
occupying
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
CN202111430309.0A
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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202111430309.0A priority Critical patent/CN114116220A/zh
Publication of CN114116220A publication Critical patent/CN114116220A/zh
Pending legal-status Critical Current

Links

Images

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/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

本发明提供一种GPU共享控制方法、GPU共享控制装置及存储介质。GPU共享控制方法包括:响应于各深度学习任务的启动,将各深度学习任务分为主任务或次任务,主任务的数量不大于一个。确定各深度学习任务的运行阶段信息,运行阶段信息分为占用GPU运行阶段和不占用GPU运行阶段。判断主任务是否处于占用GPU运行阶段。当主任务处于占用GPU运行阶段,控制GPU运行主任务。当主任务不处于占用GPU运行阶段,控制GPU运行次任务。通过本发明提供的方法,能够根据各深度学习任务的运行阶段信息,优先保障当主任务处于占用GPU运行阶段时,能够控制GPU优先主任务,进而保障主任务的Qos。同时,当主任务不处于占用GPU运行阶段时,也可以充分利用GPU算力,提高GPU的利用率。

Description

一种GPU共享控制方法、GPU共享控制装置及存储介质
技术领域
本发明涉及计算机控制技术领域,具体涉及一种GPU共享控制方法、 GPU共享控制装置及存储介质。
背景技术
在人工智能大数据时代,随着数据量的不断增大以及深度学习算法的发展,对算力的需求也越来越高,深度学习任务与GPU的结合应用于各行各业。但在执行深度学习任务的过程中,对GPU算力的需求具有波动性,且根据GPU底层上下文中内核(kernel)的执行逻辑,导致单个深度学习任务往往不能时刻利用GPU的算力,进而造成GPU算力的浪费。
在相关技术中,可以将多个深度学习任务调度到同一个GPU上,采用共享GPU的算力的方式,控制多个深度学习任务在GPU上进行运行,进而提高GPU的算力利用率。但采用该种方式,不仅没有提高GPU集群利用率,还会影响指定(主)任务的服务质量(Quality ofservice,Qos)。目前针对GPU的共享方案,是基于虚拟化技术的硬件方案,由于GPU厂商的底层实现是黑盒,例如NVIDIA,采用此类方案通常需要逆向并修改GPU 的驱动来控制对显存和算力的访问,导致此类方案的实现难度非常大,且与GPU驱动版本耦合性强。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中在进行GPU共享时,GPU算力利用率低,导致算力浪费的缺陷,从而提供一种GPU共享控制方法、GPU共享控制装置及存储介质。
根据第一方面,本发明提供一种GPU共享控制方法,所述方法包括:
响应于各深度学习任务的启动,将各所述深度学习任务分为主任务或次任务,所述主任务的数量不大于一个;
确定各所述深度学习任务的运行阶段信息,所述运行阶段信息分为占用GPU运行阶段和不占用GPU运行阶段;
判断所述主任务是否处于占用GPU运行阶段;
当所述主任务处于占用GPU运行阶段,控制所述GPU运行所述主任务;
当所述主任务不处于占用GPU运行阶段,控制所述GPU运行所述次任务。
在该方式中,能够根据各深度学习任务的运行阶段信息,优先保障当主任务处于占用GPU运行阶段时,能够控制GPU优先主任务,进而保障主任务的Qos。同时,当主任务不处于占用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依序运行各所述次任务。
在该方式中,不仅可以保证深度学习主任务的Qos,同时还可以利用 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是根据一示例性实施例提出的一种计算机设备的结构示意图。
图2是根据一示例性实施例提出的一种GPU共享控制方法的流程图。
图3是根据一示例性实施例提出的另一种GPU共享控制方法的流程图。
图4是根据一示例性实施例提出的一种GPU控制方法的流程图。
图5是根据一示例性实施例提出的一种GPU运行流程图。
图6是根据一示例性实施例提出的另一种GPU运行流程图。
图7是根据一示例性实施例提出的又一种GPU共享控制方法的流程图。
图8是根据一示例性实施例提出的又一种GPU共享控制方法的流程图。
图9是根据一示例性实施例提出的又一种GPU运行流程图。
图10是根据一示例性实施例提出的一种GPU共享控制装置的结构框图。
图11是根据一示例性实施例提出的一种计算机设备的硬件结构示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着数据量的不断增大以及深度学习算法的发展,可以将多个深度学习任务调度到同一个GPU上,采用共享GPU的算力的方式,控制多个深度学习任务在GPU上进行运行,进而提高GPU的算力利用率。
但采用该种方式,不仅没有提高GPU集群利用率,还会影响指定(主) 任务的服务质量(Quality of service,Qos)。
为解决上述问题,本发明实施例中提供一种GPU共享控制方法,用于计算机设备中,需要说明的是,其执行主体可以是GPU共享控制装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为计算机设备的部分或者全部,其中,该计算机设备可以是终端或客户端或服务器,服务器可以是一台服务器,也可以为由多台服务器组成的服务器集群,本申请实施例中的终端可以是智能手机、个人电脑、平板电脑、可穿戴设备以及智能机器人等其他智能硬件设备。下述方法实施例中,均以执行主体是计算机设备为例来进行说明。
在本发明中,实现GPU共享控制方法的计算机设备的结构图可以如图1 所示。图1是根据一示例性实施例提出的一种计算机设备的结构示意图。在该计算机设备中,可以包括一个或者多个GPU。当包括多个GPU时,包括:GPU0、GPU1…GPUN,其中N为任意正整数,取决于计算机设备中包括的GPU的数量。GPU共享管理模块用于控制各GPU实现GPU共享、维护任务信息管理模块(jobs),用来记录各个GPU上各深度学习任务的类型是次任务还是主任务,以及各深度学习任务的运行阶段信息。在GPU共享管理模块中,包括任务信息管理单元、调度管理单元和通信stub。其中,任务信息管理单元用于记录各深度学习任务的运行阶段信息。调度管理模块用于控制GPU算力的调用,以使GPU能够运行各深度学习任务。GPU 共享管理模块中的通信stub用于与任务信息管理模块(jobs)中的通信stub 建立通信连接,以便控制各深度学习任务占用GPU进行运行。jobs中的操作符控制模块用于控制深度学习任务的运行进程。
本实施例提供的GPU共享控制方法,适用于多个深度学习任务共用同一GPU进行运行的使用场景。通过本公开提供的CPU共享控制方法,能够根据各深度学习任务的运行阶段信息,确定属于主任务的深度学习任务的运行阶段是否处于需要占用CPU的阶段,进而当主任务处于占用GPU 运行阶段时,控制GPU运行该主任务,以使在GPU共享的过程中,主任务的Qos能够得到保证,且当主任务不处于占用GPU运行阶段时,也可以控制GPU运行属于次任务的深度学习任务,进而提高GPU的整体利用率。
图2是根据一示例性实施例提出的一种GPU共享控制方法的流程图。如图2所示,GPU共享控制方法包括如下步骤S201至步骤S2042。
在步骤S201中,响应于各深度学习任务的启动,将各深度学习任务分为主任务或次任务。
在本发明实施例中,在启动深度学习任务时,可以根据需求确定当前启动的深度学习任务是主任务还是次任务。主任务可以理解为是在多个深度学习任务共用GPU的过程中,需要保证Qos的深度学习任务。在一例中,可以根据各深度学习任务的优先级或者运行时间长度进行确定。例如:将优先级最高的深度学习任务确定为主任务。或者,将运行时间最短的深度学习任务确定为次任务。在另一例中,在对深度学习任务进行主任务或者次任务划分时,可以只设置当前深度学习任务是否属于主任务,若未进行设置,则可以将该深度学习任务默认为是次任务,进而便于主任务或者次任务的快速划分。
为保证主任务的Qos,在多个深度学习任务中确定主任务时,主任务的数量至多为1个,即,可以不存在主任务,若设置主任务,则主任务的数量为1。
在步骤S202中,确定各深度学习任务的运行阶段信息。
在本发明实施例中,运行阶段信息分为占用GPU运行阶段和不占用 GPU运行阶段。根据深度学习任务的运行特性,可以明确深度学习任务在不同运行(迭代)的阶段对GPU的算力需求不同,例如:一部分运行阶段需要占用GPU,另一部分运行阶段则需要占用CPU或者硬盘等其他非GPU 算力。进而控制GPU运行深度学习任务时,便可以根据确定的深度学习任务的运行阶段信息,确定当前深度学习任务是否需要占用GPU,从而控制各深度学习任务的运行进程。因此,为明确各深度学习任务的运行阶段是否需要占用GPU,多个深度学习任务是否可以处于并行状态,则确定各深度学习任务的运行阶段信息。例如:当当前深度学习任务处于占用GPU运行阶段而另一个深度学习任务处于不占用GPU运行阶段,则二者可以并行运行。
在步骤S203中,判断主任务是否处于占用GPU运行阶段。
在本发明实施例中,为保证主任务的Qos,需要在主任务处于占用GPU 运行阶段时,优先控制GPU运行主任务,进而保障主任务有足够的GPU 算力进行运行,因此,在确定各深度学习任务的运行阶段信息后,先判断主任务是否处于占用GPU运行阶段。
在步骤S2041中,当主任务处于占用GPU运行阶段,控制GPU运行主任务。
在本发明实施例中,当主任务处于占用CPU运行阶段时,则表征主任务当前需要占用GPU进行运行,因此,控制GPU运行该主任务,以保障主任务的顺利进行。
在步骤S2042中,当主任务不处于占用GPU运行阶段,控制GPU运行次任务。
在本发明实施例中,当主任务不处于占用CPU运行阶段时,则表征主任务当前不需要占用GPU,进而可以控制GPU运行次任务,以提高GPU 的利用率,达到充分利用GPU算力的目的。
通过上述实施例,能够根据各深度学习任务的运行阶段信息,优先保障当主任务处于占用GPU运行阶段时,能够控制GPU优先主任务,进而保障主任务的Qos。同时,当主任务不处于占用GPU运行阶段时,也可以充分利用GPU算力,提高GPU的利用率。
在一实施场景中,各深度学习任务的运行阶段信息可以采用表格的方式进行记录。在该表格中可以明确针对当前GPU可以运行的多个深度学习任务中,是否设置主任务,以及各深度学习任务的运行阶段信息。
在一实施例中,可以启动一个主任务和多个次任务共享GPU的算力。当主任务不处于占用GPU运行阶段,控制GPU运行次任务时,可以根据各次任务处于占用GPU运行阶段的先后确定顺序,确定GPU需要运行次任务。具体如下:
当主任务不处于占用GPU运行阶段时,则表征主任务当前并不需要占用GPU的算力,因此,为避免GPU算力浪费,提高GPU的算力利用率。可以在主任务占用其它算力进行运行时,控制次任务占用GPU进行运行。因此,可以根据各次任务占用GPU运行阶段的先后确定顺序,将最先获取到且处于占用GPU运行阶段的次任务确定为GPU需要控制运行的第一次任务,进而控制GPU运行该第一次任务,有助于减少GPU的空闲时间。
图3是根据一示例性实施例提出的另一种GPU共享控制方法的流程图。如图3所示,GPU共享控制方法包括如下步骤。
在步骤S301中,根据深度学习任务需要占用GPU算力的运行过程,将深度学习任务划分为多个运行阶段。
在本发明实施例中,根据深度学习任务需要占用GPU的变化规律,将深度学习任务划分为准备(prepare)阶段、前向传播和反向传播 (forward&backward)阶段、归约(reduce)阶段以及更新(update)阶段。其中,需要进行推理任务的阶段为prepare阶段、forward&backward阶段,而prepare阶段属于CPU处理阶段,reduce阶段并不存在单GPU的训练任务中。因此,可以将占用GPU运行阶段划分为:forward&backward阶段、或者update阶段。不占用GPU运行阶段划分为:prepare阶段或者reduce 阶段。
在步骤S302中,针对不同运行阶段,对应设置不同运行阶段的阶段标志信号。
在本发明实施例中,为便于明确深度学习任务在运行时所处的运行阶段是否需要占用GPU,则针对不同运行阶段,对应设置不同运行阶段的阶段标志信号,进而在确定运行阶段信息时,便可以根据阶段标志信号确定各深度学习任务即将开始的运行阶段是否需要占用GPU。在一例中,针对 prepare阶段对应设置的阶段标志信号为iter begin。forward&backward阶段对应设置的阶段标志信号为forward begin或者forward begin和backwarddone。update阶段对应设置的阶段标志信号为update begin。
在步骤S303中,响应于各深度学习任务的启动,将各深度学习任务分为主任务或次任务。
在步骤S304中,获取各深度学习任务的阶段标志信号。
在本发明实施例中,通过获取各深度学习任务的阶段标志信号,确定各深度学习任务的运行阶段信息。在一例中,GPU共享管理器可以根据接收到的阶段标志信号向jobs发出控制指令,以便确定是否由GPU运行该深度学习任务。
在步骤S305中,确定各深度学习任务的运行阶段信息。
在步骤S306中,判断主任务是否处于占用GPU运行阶段。
在步骤S3071中,当主任务处于占用GPU运行阶段,控制GPU运行主任务。
在步骤S3072中,当主任务不处于占用GPU运行阶段,控制GPU运行次任务。
通过上述实施例,可以根据深度学习任务需要占用GPU的变化规律,将深度学习任务划分为多个运行阶段,进而根据运行阶段对应的阶段标志信号确定各深度学习任务即将开始的运行阶段,从而合理控制GPU的算力,保证主任务能够顺利运行的同时,减少GPU算力的空闲时间。
在一实施场景中,计算机设备中包括多个GPU时,为便于GPU共享管理器能够控制各GPU运行需要占用GPU的主任务或者次任务,则将各深度学习任务的运行阶段信息汇总在同一表格中,明确各GPU对应可以运行的多个深度学习任务中是否设置主任务、主任务和次任务的运行阶段信息,进而根据表格中的运行阶段信息决定各CPU需要运行的深度学习任务。
其中,得到的运行阶段信息表可以如表1所示。
Figure RE-GDA0003450676460000141
表1
在一实施例中,控制GPU运行主任务的过程可以如图4所示。图4是根据一示例性实施例提出的一种GPU控制方法的流程图。
在步骤S401中,判断GPU当前是否运行次任务。
在本发明实施例中,由于各深度学习任务可以是不同的任务,因此,各深度学习任务的运行阶段在运行过程中运行阶段可以不同步,进而导致当主任务处于占用GPU运行阶段时,GPU当前可能处于控制次任务进行运行的状态。因此,为保障控制GPU运行主任务时,GPU中有足够的算力供主任务进行运行,则先判断GPU当前是否运行次任务。
在步骤S4021中,若GPU当前未运行次任务,则控制GPU运行主任务。
在本发明实施例中,若GPU当前未运行次任务,表征GPU当前处于空闲状态,则在运行主任务时,没有次任务与该主任务竞争GPU算力,因此,可以直接控制GPU运行主任务。
在步骤S4022中,若GPU当前运行次任务,则通过控制GPU上处于运行状态的次任务的操作符分发频率,暂停处于运行状态的次任务,并控制GPU运行主任务。
在本发明实施例中,当GPU当前运行次任务,则表征GPU当前处于运行状态,若此时同时控制GPU运行主任务,主任务和次任务会相互竞争 GPU的算力,进而导致主任务在GPU中的运行速度产生影响,从而影响主任务的Qos。因此,为保证主任务在GPU中运行的Qos,尽可能渐少次任务对主任务占用GPU的竞争,则通过控制GPU上处于运行状态的次任务的操作符(op)分发频率,将在GPU上处于运行状态的次任务暂停,控制 GPU运行主任务,以保证主任务有足够的GPU算力可以使用,能够顺利运行。在一例中,当主任务当前需要占用GPU进行运行的运行阶段完成后,可以通过调整op分发频率,恢复被暂停的次任务继续运行,进而减少GPU 上下文切换的开销。在一例中,可以通过提升次任务的执行粒度,恢复次任务的op分发频率,以使次任务能够继续运行。
通过上述实施例,通过控制次任务的操作符的分发频率,能够保证主任务需要GPU的算力时,可以快速停止次任务对GPU算力的竞争,进而保证主任务的顺利运行。
在一实施场景中,当GPU当前未运行次任务时,控制GPU运行主任务的流程图可以如图5所示。图5是根据一示例性实施例提出的一种GPU 运行流程图。其中,job0是次任务,job1是主任务。在运行过程中,当接收到job1的iter begin阶段标志信号时,则表征主任务进入prepare阶段,不需要占用GPU。当接收到forward begin阶段标志信号时,则表征主任务进入forward(&backward)阶段。此时,job0处于占用GPU进行运行的状态,则通过控制jobs的op分发频率,控制job0暂停运行,并控制GUP0 运行job1直至接收到backward done阶段标志信号,控制GPU0运行job0。当接收到update阶段标志信号时,则继续通过控制jobs的op分发频率,控制job0暂停运行,并控制GUP0运行job1。
在另一实施场景中,当GPU当前运行次任务时,控制GPU运行主任务的流程图可以如图6所示。图6是根据一示例性实施例提出的另一种GPU 运行流程图。在图6中,job1为主任务,且GPU1中没有次任务存在时,则可以根据job1运行的各个运行阶段信息,控制GPU运行job1对应的处于占用GPU运行阶段,进而是job1顺利运行。当reduce阶段完成,到进行本地update阶段之间存在一段时间时,则GPU可以处于空闲状态。
图7是根据一示例性实施例提出的又一种GPU共享控制方法的流程图。如图7所示,GPU共享控制方法包括如下步骤。
在步骤S701中,响应于各深度学习任务的启动,将各深度学习任务分为主任务或次任务。
在步骤S702中,确定各深度学习任务的运行阶段信息。
在步骤S703中,判断主任务是否处于占用GPU运行阶段。
在步骤S7041中,当主任务处于占用GPU运行阶段,控制GPU运行主任务。
在步骤S7042中,当主任务不处于占用GPU运行阶段,控制GPU运行次任务。
在步骤S705中,当主任务或者次任务运行完成,删除主任务或者次任务的运行阶段信息。
在本发明实施例中,当主任务或者次任务运行完成,将删除主任务或者次任务的运行阶段信息,有助于避免运行完成后的运行阶段信息干扰 GPU算力的占用控制。
图8是根据一示例性实施例提出的又一种GPU共享控制方法的流程图。如图8所示,GPU共享控制方法包括如下步骤。
在步骤S801中,响应于各深度学习任务的启动,将各深度学习任务分为主任务或次任务。
在步骤S802中,确定各深度学习任务的运行阶段信息。
在步骤S803中,判断主任务是否处于占用GPU运行阶段。
在步骤S8041中,当主任务处于占用GPU运行阶段,控制GPU运行主任务。
在步骤S8042中,当主任务不处于占用GPU运行阶段,控制GPU运行次任务。
在步骤S805中,当主任务或者次任务运行完成,删除主任务或者次任务的运行阶段信息。
在步骤S806中,根据确定各次任务处于占用GPU运行阶段的时间顺序,控制GPU依序运行各次任务。
在本发明实施例中,当GPU共享过程中,待运行的深度学习任务中不包括主任务时,则根据确定各次任务处于占用GPU运行阶段的时间顺序,控制GPU依序运行各次任务,进而控制各次任务能够有序运行,使GPU 尽可能地保证处于运行状态,以使GPU能够得到充分利用,进而提高GPU 的整体利用率,减少资源浪费。
通过上述实施例,不仅可以保证深度学习主任务的Qos,同时还可以利用GPU上共享的次任务,填充GPU算力的空闲期,提高整体GPU的利用率,同时,有助于减少各深度学习任务间对GPU算力的竞争以及上下文切换的开销。
在一实施场景中,在GPU共享的过程中,运行的多个深度学习任务中不存在主任务时,控制GPU运行次任务的流程图可以如图9所示。图9是根据一示例性实施例提出的又一种GPU运行流程图。在图9中,job0和job1 均为次任务。根据各次任务运行信息,确定GPU运行的次任务,进而当当前次任务处于占用GPU运行阶段运行完成后,则控制GPU0对下一个处于GPU运行阶段的次任务进行运行。
在另一实施场景中,上述GPU共享控制方法可以采用纯软件的架构,进而便于实现和应用,并且在控制GPU运行各深度学习任务时,可以对用户使用无感知。
基于相同发明构思,本发明还提供一种GPU共享控制装置。
图10是根据一示例性实施例提出的一种GPU共享控制装置的结构框图。如图10所示,GPU共享控制装置包括分类单元1001、确定单元1002、判断单元1003、第一控制单元1004和第二控制单元1005。
分类单元1001,用于响应于各深度学习任务的启动,将各深度学习任务分为主任务或次任务,主任务的数量不大于一个;
确定单元1002,用于各深度学习任务的运行阶段信息,运行阶段信息分为占用GPU运行阶段和不占用GPU运行阶段;
判断单元1003,判断主任务是否处于占用GPU运行阶段;
第一控制单元1004,用于当主任务处于占用GPU运行阶段,控制GPU 运行主任务;
第二控制单元1005,用于当主任务不处于占用GPU运行阶段,控制 GPU运行次任务。
在一实施方式中,当次任务包括多个时,第二控制单元包括:次任务确定单元,用于根据各次任务占用GPU运行阶段的先后确定顺序,确定 GPU控制运行的第一次任务,第一次任务为最先获取到且处于占用GPU运行阶段的次任务。控制子单元,用于控制GPU运行第一次任务。
在另一实施例中,装置还包括:阶段划分单元,用于根据深度学习任务需要占用GPU算力的运行过程,将深度学习任务划分为多个运行阶段。设置单元,用于针对不同运行阶段,对应设置不同运行阶段的阶段标志信号,阶段标志信号用于确定深度学习任务的运行阶段信息。获取单元,用于获取各深度学习任务的阶段标志信号。
在又一实施例中,第一控制单元1004包括:判断子单元,用于判断 GPU当前是否运行次任务。第一控制子单元,用于若GPU当前未运行次任务,则控制GPU运行主任务。第二控制子单元,用于若GPU当前运行次任务,则通过控制GPU上处于运行状态的次任务的操作符分发频率,暂停处于运行状态的次任务,并控制GPU运行主任务。
在又一实施例中,装置还包括:删除单元,用于当主任务或者次任务运行完成,删除主任务或者次任务的运行阶段信息。
在又一实施例中,若主任务的数量为零,则装置还包括:轮循控制单元,用于根据确定各次任务处于占用GPU运行阶段的时间顺序,控制GPU 依序运行各次任务。
在又一实施例中,占用GPU运行阶段包括:前向传播和反向传播阶段、或者更新阶段;不占用GPU运行阶段包括:准备阶段或者归约阶段。
上述GPU共享控制装置的具体限定以及有益效果可以参见上文中对于 GPU共享控制方法的限定,在此不再赘述。上述各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图11是根据一示例性实施例提出的一种计算机设备的硬件结构示意图。如图11所示,该设备包括一个或多个处理器1110以及存储器1120,存储器1120包括持久内存、易失内存和硬盘,图11中以一个处理器1110 为例。该设备还可以包括:输入装置1130和输出装置1140。
处理器1110、存储器1120、输入装置1130和输出装置1140可以通过总线或者其他方式连接,图11中以通过总线连接为例。
处理器1110可以为中央处理器(Central Processing Unit,CPU)。处理器1110还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit, ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器1120作为一种非暂态计算机可读存储介质,包括持久内存、易失内存和硬盘,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施例中的业务管理方法对应的程序指令/模块。处理器1110通过运行存储在存储器1120中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述任意一种GPU共享控制方法。
存储器1120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据、需要使用的数据等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器1120可选包括相对于处理器1110远程设置的存储器,这些远程存储器可以通过网络连接至数据处理装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置1130可接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键信号输入。输出装置1140可包括显示屏等显示设备。
一个或者多个模块存储在存储器1120中,当被一个或者多个处理器 1110执行时,执行如图1-9所示的方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,具体可参见如图1-9所示的实施例中的相关描述。
本发明实施例还提供了一种非暂态计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的认证方法。其中,存储介质可为磁碟、光盘、只读存储记忆体 (Read-Only Memory,ROM)、随机存储记忆体(RandomAccess Memory, RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (10)

1.一种GPU共享控制方法,其特征在于,所述方法包括:
响应于各深度学习任务的启动,将各所述深度学习任务分为主任务或次任务,所述主任务的数量不大于一个;
确定各所述深度学习任务的运行阶段信息,所述运行阶段信息分为占用GPU运行阶段和不占用GPU运行阶段;
判断所述主任务是否处于占用GPU运行阶段;
当所述主任务处于占用GPU运行阶段,控制所述GPU运行所述主任务;
当所述主任务不处于占用GPU运行阶段,控制所述GPU运行所述次任务。
2.根据权利要求1所述的方法,其特征在于,当所述次任务包括多个时,所述控制所述GPU运行所述次任务,包括:
根据各所述次任务占用GPU运行阶段的先后确定顺序,确定所述GPU控制运行的第一次任务,所述第一次任务为最先获取到且处于占用GPU运行阶段的次任务;
控制所述GPU运行所述第一次任务。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据深度学习任务需要占用GPU算力的运行过程,将所述深度学习任务划分为多个运行阶段;
针对不同运行阶段,对应设置不同运行阶段的阶段标志信号,所述阶段标志信号用于确定所述深度学习任务的运行阶段信息;
在确定各所述深度学习任务的运行阶段信息之前,所述方法还包括:
获取各所述深度学习任务的阶段标志信号。
4.根据权利要求3所述的方法,其特征在于,所述当所述主任务处于占用GPU运行阶段,控制所述GPU运行所述主任务,包括:
判断所述GPU当前是否运行次任务;
若所述GPU当前未运行次任务,则控制所述GPU运行所述主任务;
若所述GPU当前运行次任务,则通过控制所述GPU上处于运行状态的次任务的操作符分发频率,暂停所述处于运行状态的次任务,并控制所述GPU运行所述主任务。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述主任务或者所述次任务运行完成,删除所述主任务或者所述次任务的运行阶段信息。
6.根据权利要求1或5所述的方法,其特征在于,若所述主任务的数量为零,则所述方法还包括:
根据确定各所述次任务处于占用GPU运行阶段的时间顺序,控制所述GPU依序运行各所述次任务。
7.根据权利要求1所述的方法,其特征在于,所述占用GPU运行阶段包括:前向传播和反向传播阶段、或者更新阶段;所述不占用GPU运行阶段包括:准备阶段或者归约阶段。
8.一种GPU共享控制装置,其特征在于,所述装置包括:
分类单元,用于响应于各深度学习任务的启动,将各所述深度学习任务分为主任务或次任务,所述主任务的数量不大于一个;
确定单元,用于各所述深度学习任务的运行阶段信息,所述运行阶段信息分为占用GPU运行阶段和不占用GPU运行阶段;
判断单元,判断所述主任务是否处于占用GPU运行阶段;
第一控制单元,用于当所述主任务处于占用GPU运行阶段,控制所述GPU运行所述主任务;
第二控制单元,用于当所述主任务不处于占用GPU运行阶段,控制所述GPU运行所述次任务。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-7中任一项所述的GPU共享控制方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的GPU共享控制方法。
CN202111430309.0A 2021-11-29 2021-11-29 一种gpu共享控制方法、gpu共享控制装置及存储介质 Pending CN114116220A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111430309.0A CN114116220A (zh) 2021-11-29 2021-11-29 一种gpu共享控制方法、gpu共享控制装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111430309.0A CN114116220A (zh) 2021-11-29 2021-11-29 一种gpu共享控制方法、gpu共享控制装置及存储介质

Publications (1)

Publication Number Publication Date
CN114116220A true CN114116220A (zh) 2022-03-01

Family

ID=80370844

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111430309.0A Pending CN114116220A (zh) 2021-11-29 2021-11-29 一种gpu共享控制方法、gpu共享控制装置及存储介质

Country Status (1)

Country Link
CN (1) CN114116220A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114860412A (zh) * 2022-05-19 2022-08-05 北京百度网讯科技有限公司 任务处理方法、装置、电子设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828833A (zh) * 2018-11-02 2019-05-31 上海帆一尚行科技有限公司 一种神经网络训练任务的排队系统及其方法
CN110399222A (zh) * 2019-07-25 2019-11-01 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
CN110780991A (zh) * 2019-09-12 2020-02-11 苏州浪潮智能科技有限公司 一种基于优先级的深度学习任务调度方法及装置
CN111400022A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种资源调度方法、装置及电子设备
KR20210115370A (ko) * 2020-03-12 2021-09-27 한국과학기술원 공유 gpu 클러스터를 위한 분산 딥러닝 작업 스케줄링 방법 및 이를 기록한 컴퓨터 판독 가능 기록매체

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828833A (zh) * 2018-11-02 2019-05-31 上海帆一尚行科技有限公司 一种神经网络训练任务的排队系统及其方法
CN111400022A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种资源调度方法、装置及电子设备
CN110399222A (zh) * 2019-07-25 2019-11-01 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
CN110780991A (zh) * 2019-09-12 2020-02-11 苏州浪潮智能科技有限公司 一种基于优先级的深度学习任务调度方法及装置
KR20210115370A (ko) * 2020-03-12 2021-09-27 한국과학기술원 공유 gpu 클러스터를 위한 분산 딥러닝 작업 스케줄링 방법 및 이를 기록한 컴퓨터 판독 가능 기록매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114860412A (zh) * 2022-05-19 2022-08-05 北京百度网讯科技有限公司 任务处理方法、装置、电子设备和介质

Similar Documents

Publication Publication Date Title
US9405572B2 (en) Optimized resource allocation and management in a virtualized computing environment
US20190324805A1 (en) Method, apparatus and computer program product for resource scheduling
CN112035238A (zh) 任务调度处理方法、装置、集群系统及可读存储介质
CN112905326B (zh) 任务处理方法及装置
CN113849312B (zh) 数据处理任务的分配方法、装置、电子设备及存储介质
WO2018233299A1 (zh) 调度处理器的方法、装置、设备及介质
CN109840142A (zh) 基于云监控的线程控制方法、装置、电子设备及存储介质
CN111506434B (zh) 一种任务处理方法、装置及计算机可读存储介质
CN112130963A (zh) 虚拟机任务的调度方法、装置、计算机设备及存储介质
CN106776395A (zh) 一种共享集群的任务调度方法及装置
CN110795238A (zh) 负载计算方法、装置、存储介质及电子设备
US9471387B2 (en) Scheduling in job execution
CN110764892A (zh) 任务处理方法、设备及计算机可读存储介质
CN116382880A (zh) 任务执行方法、装置、处理器、电子设备及存储介质
CN114116220A (zh) 一种gpu共享控制方法、gpu共享控制装置及存储介质
CN110795323A (zh) 负载统计方法、装置、存储介质及电子设备
CN114721818A (zh) 一种基于Kubernetes集群的GPU分时共享方法和系统
CN116069493A (zh) 一种数据处理方法、装置、设备以及可读存储介质
CN111813541B (zh) 一种任务调度方法、装置、介质和设备
CN109189581B (zh) 一种作业调度方法和装置
US9483317B1 (en) Using multiple central processing unit cores for packet forwarding in virtualized networks
CN114448909A (zh) 基于ovs的网卡队列轮询方法、装置、计算机设备及介质
CN115712337A (zh) 处理器的调度方法、装置、电子设备及存储介质
CN110955644A (zh) 一种存储系统的io控制方法、装置、设备及存储介质
CN113596125B (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