CN117032937B - 基于gpu的任务调度方法、电子装置和存储介质 - Google Patents

基于gpu的任务调度方法、电子装置和存储介质 Download PDF

Info

Publication number
CN117032937B
CN117032937B CN202311271781.3A CN202311271781A CN117032937B CN 117032937 B CN117032937 B CN 117032937B CN 202311271781 A CN202311271781 A CN 202311271781A CN 117032937 B CN117032937 B CN 117032937B
Authority
CN
China
Prior art keywords
gpu
task
new task
executor
running
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
Application number
CN202311271781.3A
Other languages
English (en)
Other versions
CN117032937A (zh
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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202311271781.3A priority Critical patent/CN117032937B/zh
Publication of CN117032937A publication Critical patent/CN117032937A/zh
Application granted granted Critical
Publication of CN117032937B publication Critical patent/CN117032937B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种基于GPU的任务调度方法、电子装置和存储介质,其中,该任务调度方法包括:统计预设运行时间内调度器的GPU执行新任务时计算资源使用率超过计算资源平均使用率的时间占比和显存占用率超过显存平均占用率的时间占比;获取性能拐点显存占用率;据此划分新任务的类型并根据该类型和各执行器的GPU的运行任务数据,将新任务调度至匹配的执行器;执行前基于GPU运行状态、显存占用情况、新任务及正运行的任务的性能拐点显存占用率,分配GPU资源。通过本申请,解决了不具备优先级信息时GPU资源利用率低的问题,实现了在不具备任务优先级信息的情况下提高GPU资源利用率。

Description

基于GPU的任务调度方法、电子装置和存储介质
技术领域
本申请涉及深度学习领域,特别是涉及基于GPU的任务调度方法、电子装置和存储介质。
背景技术
随着深度学习技术的发展,GPU(Graphics Processing Unit,简称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是本实施例的基于GPU的任务调度方法的流程图;
图3是本实施例的基于GPU的任务调度装置的设备组成架构图;
图4是本实施例的用于执行器中计算资源管理器的GPU资源分配方法的工作原理示意图;
图5是本实施例的用于执行器中显存管理器的显存释放方法的工作原理示意图;
图6是一个优选实施例的基于GPU的任务调度方法的流程图;
图7是一个优选实施例的用于调度器中计算资源分析器的任务分类方法的流程图;
图8是一个优选实施例的用于调度器中显存性能分析器的性能分析方法的流程图;
图9是本实施例的基于GPU的任务调度装置的结构框图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是本实施例的基于GPU的任务调度方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的基于GPU的任务调度方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(RadioFrequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种基于GPU的任务调度方法,图2是本实施例的基于GPU的任务调度方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,新任务到达任务处理集群时,计算预设运行时间内任务处理集群中调度器的GPU执行新任务的计算资源平均使用率,以及计算预设运行时间内调度器的GPU执行新任务的显存平均占用率。
具体地,图3是本实施例的基于GPU的任务调度装置的设备组成架构图,如图3所示,本实施例的任务处理集群中包含一个调度器和多个执行器,例如图3包括一个调度器,以及执行器1和执行器2。调度器用于对到达任务处理集群的新任务进行分析,并基于分析结果将新任务调度到匹配的执行器中执行。参照图3,调度器根据计算资源分析器和显存性能分析器的处理,结合调度算法,将任务1调度至执行器1中运行,将任务2调度至执行器2中运行。执行器是该任务处理集群中实际的计算节点,用于执行任务;其中,调度器中至少包含计算资源分析器、显存性能分析器、多个GPU如GPU1和GPU2、以及数据库;任意一个执行器中包含计算资源管理器、显存管理器、一个GPU以及主机内存。例如,执行器1包括计算资源管理器1、显存管理器1、GPU3以及主机内存1;执行器2包括计算资源管理器2、显存管理器2、GPU4以及主机内存2。分析过程中,调度器的GPU在预设的运行时间内执行新任务,该执行过程仅用于为调度器的分析提供依据;新任务的实际执行者是执行器的GPU。此外,上述计算资源分析器、显存分析器、计算资源管理器以及显存管理器均为实现特定功能的计算机程序,例如,计算资源管理器为用于实现GPU计算资源分配的计算机程序。
新任务到达任务处理集群时,将新任务分配至该任务处理集群中调度器的GPU中运行,调度器中预先设有运行时间,在该预设运行时间内执行新任务,同时通过该调度器中的计算资源分析器收集该调度器的GPU在预设运行时间内的计算资源使用数据和显存占用数据。对收集到的计算资源使用数据求平均值,将该平均值作为新任务的计算资源平均使用率;对收集到的显存占用数据求平均值,将该平均值作为新任务的显存平均占用率。
步骤S202,统计预设运行时间内调度器的GPU的计算资源使用率超过计算资源平均使用率的时间占比,作为第一统计结果。
具体地,通过计算资源分析器统计该GPU的计算资源使用率超过计算资源平均使用率的总时长,并计算该总时长在前述预设运行时间中的占比,该占比为第一统计结果。
步骤S203,统计预设运行时间内调度器的GPU的显存占用率超过显存平均占用率的时间占比,作为第二统计结果。
具体地,在分析过程中,统计该GPU的显存占用率超过显存平均占用率的总时长,并计算该总时长在前述预设运行时间中的占比,该占比为第二统计结果。
步骤S204,获取新任务的性能拐点显存占用率。
具体地,令调度器的GPU在不同显存占用率下执行该新任务,并通过调度器中的显存性能分析器收集该GPU在不同显存占用率下的性能数据,基于上述收集到的性能数据确定性能拐点,将性能拐点对应的GPU显存占用率作为新任务的性能拐点显存占用率。
步骤S205,基于第一统计结果、第二统计结果以及预设的划分规则,划分新任务的类型。
具体地,根据用户需求预设一个比例阈值,当新任务的第一统计结果和第二统计结果均超过预设比例阈值时,确定新任务的类型为计算和输入输出密集型;当新任务的第一统计结果超过预设比例阈值,且第二统计结果未超过预设比例阈值时,确定新任务的类型为计算密集型;当新任务的第一统计结果未超过预设比例阈值,且第二统计结果超过预设比例阈值时,确定新任务的类型为输入输出密集型;当新任务的第一统计结果和第二统计结果均未超过所述预设比例阈值时,确定新任务的类型为计算和输入输出非密集型。
步骤S206,根据新任务的类型和任务处理集群中各执行器的GPU的运行任务数据,将新任务调度至匹配的执行器的GPU中执行。
具体地,通过调度算法完成该调度过程,若存在未运行任务的执行器的GPU,将新任务调度至该GPU执行;
若全部执行器的GPU均正在运行至少两个任务,将新任务调度至正在运行任务数量最少的GPU执行;
若全部执行器的GPU均正在运行任务,且其中存在正在运行一个任务的GPU,则根据新任务的类型进行调度:当新任务的类型为计算和输入输出密集型时,将新任务调度至正在运行任务数量最少的GPU执行;当新任务的类型为计算密集型时,判断是否存在正在运行一个任务且正在运行的任务类型为输入输出密集型的第一目标GPU,若存在,将新任务调度至该第一目标GPU执行,若不存在,则将新任务调度至正在运行任务数量最少的GPU执行;当新任务的类型为输入输出密集型时,判断是否存在正在运行一个任务且正在运行的任务类型为计算密集型的第二目标GPU,若存在,将新任务调度至该第二目标GPU执行,若不存在,则将新任务调度至正在运行任务数量最少的GPU执行;当新任务的类型为计算和输入输出非密集型时,将新任务调度至正在运行任务数量最多的GPU执行。
S207,在执行新任务之前,基于执行器的GPU的运行状态、显存占用情况、新任务的性能拐点显存占用率以及执行器的GPU中正在运行的任务的性能拐点显存占用率,为执行器的GPU中所有任务分配执行器的GPU的资源。
具体地,当新任务被分配到匹配的执行器中时,该执行器中的GPU可能未运行任务,也可能正在运行一个或多个任务,在执行新任务前,需要根据具体情况为该GPU中所有任务分配GPU资源。
其中,基于执行器中的计算资源管理器实现GPU计算资源的分配。图4是本实施例的用于执行器中计算资源管理器的GPU资源分配方法的工作原理示意图,如图4所示,执行器的GPU中包含正在运行的任务,以及调度至该GPU的新任务,通过执行器中的计算资源管理器监控该执行器中的GPU的运行状态,若该GPU为空闲状态,则将新任务的GPU算子发送至该GPU上执行,若该执行器的GPU被正在运行的任务占用,则等待该GPU出现空闲时,再执行新任务。
另外,基于执行器中的显存管理器实现GPU显存资源的分配。当执行器中新任务和正在运行的任务的运行所需显存之和所超过该执行器的GPU的显存总量时,可以通过释放该GPU中正在运行的任务所占用的显存,为待执行的新任务换取空余显存资源。具体地,图5是本实施例的用于执行器中显存管理器的显存释放方法的工作原理示意图,如图5所示,将该GPU显存中正在运行任务的张量数据1卸载到主机内存中,主机内存中501部分即表示被卸载到主机内存中的正在运行任务1数据,GPU显存中502部分表示代表上述被卸载的正在运行任务张量数据1原本占据GPU显存;经过上述缓存释放操作后,该GPU再执行新任务时,则可以将新任务张量数据存储于被卸载的张量数据原本占据的GPU显存中;图中的箭头表示张量数据的传输方向。
上述显存释放方法是存在极限的,该极限可以通过执行器的GPU中新任务和正在运行的任务的性能拐点显存占用量之和来确定;当新任务和正在运行的任务的性能拐点显存占用量之和未超过GPU显存总量时,可以通过该显存释放方法换取足够的显存;当新任务和正在运行的任务的性能拐点显存占用量之和超过GPU显存总量时,则无法通过该显存释放方法够获取足够的显存。
进一步地,新任务和正在运行的任务的性能拐点显存占用量之和是否超过所在执行器的GPU的显存总量,可以通过判断新任务的性能拐点显存占用率与该执行器的GPU中正在运行的任务的性能拐点显存占用率之和是否超过百分之一百来确定。若新任务的性能拐点显存占用率与该执行器的GPU中正在运行的任务的性能拐点显存占用率之和超过百分之一百,则说明新任务和正在运行的任务的性能拐点显存占用量之和超过GPU显存总量,即使通过上述显存释放方法,也无法提供足够新任务与正在运行的任务共享的GPU显存资源,因此在正在运行的任务运行完毕后,执行新任务;若不超过,则说明新任务和正在运行的任务的性能拐点显存占用量之和未超过GPU显存总量,可以通过上述显存释放方法提供足够新任务与正在运行的任务共享的GPU显存资源,因此立即执行新任务。其中,上述新任务的性能拐点占用率可以通过前述步骤S204测量得到。
另外,在新任务的性能拐点显存占用量与正在运行的任务的运行所需显存占用量之和不超过该GPU的显存总量的情况下,分配给新任务的显存不超过其性能拐点显存占用量,当该GPU的显存资源不足时,将新任务占用的显存中超出其性能拐点显存占用量的部分对应的张量数据卸载到主机内存中;在新任务的性能拐点显存占用量与正在运行的任务的运行所需显存占用量之和超过该GPU的显存总量的情况下,分配给新任务的显存不超过其性能拐点显存占用量,分配给正在运行的任务的显存也不超过其性能拐点显存占用量,当该GPU的显存资源不足时,将新任务与正在运行的任务所占用的显存中超过其性能拐点显存占用量的部分对应的张量数据都卸载到主机内存中。
基于上述过程,可以分别将执行器的GPU的计算资源和显存资源合理分配给新任务和正在运行的任务,根据执行器的GPU的计算资源使用情况和显存占用情况,新任务和正在运行的任务可以同时在该GPU上运行,而不会出现GPU资源闲置的问题,从而实现了GPU资源的合理利用。
通过上述步骤S201至S207,在执行深度学习任务时,基于计算资源使用率与显存占用率进行任务调度,当新任务到达任务处理集群时,先对该新任务进行分析:将该新任务发送至调度器的GPU中执行,并统计预设运行时间内该调度器的GPU计算资源使用率超过计算资源平均使用率的时间占比,以及显存占用率超过显存平均占用率的时间占比,同时获取该新任务的性能拐点显存占用率;调度器中根据用户需求预设有比例阈值,基于上述两种时间占比及预设比例阈值,划分新任务的类型,具体地,新任务类型可以为计算和输入输出密集型、计算密集型、输入输出密集型以及计算和输入输出密集型。基于新任务的类型和任务处理集群中各执行器的GPU的运行任务数据,调度器将新任务调度至匹配的执行器的GPU中执行。一个执行器的GPU中,可以同时存在正在运行的任务和待执行的新任务,根据该GPU的运行状态、显存占用情况以及新任务和正在运行的任务的性能拐点显存占用率,将该GPU的资源动态分配给新任务和正在运行的任务。本实施例不需要为任务区分优先级,而是依据任务的计算资源使用情况和显存占用情况这两个因素进行任务调度,具体来说,对GPU资源进行了两次分配,第一次分配是调度器根据新任务的类型将其调度至计算资源和显存资源与之相匹配的执行器的GPU中执行,第二次分配是执行器为其中正在运行的任务和待执行的新任务分配该执行器的GPU资源,其中,上述GPU资源具体可以包括GPU的计算资源和显存资源。本实施例在确保执行器的GPU的计算资源和显存资源足够支持新任务的运行的前提下,充分利用了任务处理集群中的GPU资源,避免GPU资源闲置的情况,实现了在不具备任务优先级信息的情况下提高GPU资源利用率。
进一步地,在其中的一些实施例中,基于上述步骤S201,计算预设运行时间内任务处理集群中调度器的GPU执行新任务的计算资源平均使用率,具体可以包括:
通过任务处理集群中调度器的计算资源分析器收集预设运行时间内调度器的GPU执行新任务的计算资源使用数据;根据该计算资源使用数据,计算新任务的计算资源平均使用率。
进一步地,在其中的一些实施例中,基于上述步骤S201,计算预设运行时间内调度器的GPU执行新任务的显存平均占用率,具体可以包括:
通过任务处理集群中调度器的计算资源分析器收集预设运行时间内调度器的GPU执行新任务的显存占用数据;根据该显存占用数据,计算新任务的显存平均占用率。
其中,通过计算新任务在预设运行时间内运行的计算资源平均使用率和显存平均占用率,预估了新任务被执行时需要消耗的计算资源和显存资源,可以以此为依据,在后续步骤中划分新任务的类型,将不同类型的任务调度至匹配的执行器的GPU中执行。
进一步地,在其中的一些实施例中,基于上述步骤S204,获取新任务的性能拐点显存占用率,具体可以包括:
通过任务处理集群中调度器的显存性能分析器,收集新任务在调度器的GPU的不同显存占用率下被执行时调度器的GPU的性能数据;根据该性能数据画出性能散点图,并利用预设的数学模型拟合该性能散点图,得到性能曲线;基于该性能曲线获取性能曲线拐点,计算该性能曲线拐点对应的显存占用率,作为新任务的性能拐点显存占用率。
其中,该性能拐点显存占用率能够表征执行该新任务所需要的GPU显存资源。
进一步地,在其中的一些实施例中,基于上述步骤S205,基于第一统计结果、第二统计结果以及预设的划分规则,划分新任务的类型,具体可以包括:
当新任务的第一统计结果和第二统计结果均超过预设比例阈值时,确定新任务的类型为计算和输入输出密集型;当新任务的第一统计结果超过预设比例阈值,且第二统计结果未超过预设比例阈值时,确定新任务的类型为计算密集型;当新任务的第一统计结果未超过预设比例阈值,且第二统计结果超过预设比例阈值时,确定新任务的类型为输入输出密集型;当新任务的第一统计结果和第二统计结果均未超过预设比例阈值时,确定新任务的类型为计算和输入输出非密集型。
其中,上述第一统计结果、第二统计结果是通过步骤S201得到的,具体地,统计预设运行时间内调度器的GPU的计算资源使用率超过计算资源平均使用率的时间占比,作为第一统计结果;统计预设运行时间内调度器的GPU的显存占用率超过显存平均占用率的时间占比,作为第二统计结果。
深度学习中,有的新任务包含大量计算操作,需消耗大量的GPU计算资源,有的新任务包含大量输入输出操作,需要消耗大量的GPU显存资源。本实施例中,根据用户具体需求预设某一适当的比例阈值,当新任务的第一统计结果和第二统计结果均超过该预设比例阈值时,认为该新任务既需消耗大量计算资源,又需要消耗大量显存资源,因此确定该新任务的类型为计算和输入输出密集型;当新任务的第一统计结果超过该预设比例阈值,且第二统计结果未超过该预设比例阈值时,认为该新任务需消耗大量计算资源,但不需要消耗大量显存资源,因此确定该新任务的类型为计算密集型;当新任务的第一统计结果未超过该预设比例阈值,且第二统计结果超过该预设比例阈值时,认为该新任务不需消耗大量计算资源,只需要消耗大量显存资源,因此确定该新任务的类型为输入输出密集型;当新任务的第一统计结果和第二统计结果均未超过该预设比例阈值时,认为该新任务既不需消耗大量计算资源,也不需消耗大量显存资源,因此确定该新任务的类型为计算和输入输出密集型。
进一步地,在一些实施例中,基于上述步骤S206,根据新任务的类型和任务处理集群中各执行器的GPU的运行任务数据,将新任务调度至匹配的执行器的GPU中执行,具体可以包括:
若存在未运行任务的执行器的GPU,将新任务调度至未运行任务的执行器的GPU执行;若全部执行器的GPU均正在运行至少两个任务,将新任务调度至正在运行任务数量最少的执行器的GPU执行。
另外地,在一些实施例中,全部执行器的GPU均正在运行任务,且存在正在运行一个任务的执行器的GPU,基于上述步骤S206,根据新任务的类型和任务处理集群中各执行器的GPU的运行任务数据,将新任务调度至匹配的执行器的GPU中执行,具体可以包括:
当新任务的类型为计算和输入输出密集型时,将新任务调度至正在运行任务数量最少的执行器的GPU执行;当新任务的类型为计算密集型时,判断是否存在正在运行一个任务且正在运行的任务类型为输入输出密集型的第一目标GPU,若存在,将新任务调度至该第一目标GPU执行,若不存在,将新任务调度至正在运行任务数量最少的执行器的GPU执行;当新任务的类型为输入输出密集型时,判断是否存在正在运行一个任务且正在运行的任务类型为计算密集型的第二目标GPU,若存在,将新任务调度至该第二目标GPU执行,若不存在,将新任务调度至正在运行任务数量最少的执行器的GPU执行;当新任务的类型为计算和输入输出非密集型时,将新任务调度至正在运行任务数量最多的执行器的GPU执行。
基于此,将新任务调度至计算资源与显存资源与之匹配的执行器的GPU执行。
进一步地,在一些实施例中,基于上述步骤S207,在执行新任务之前,基于执行器的GPU的运行状态、显存占用情况以及性能拐点显存占用率,为执行器的GPU中所有任务分配执行器的GPU资源,具体可以包括:
通过任务处理集群中执行器的计算资源管理器监控该执行器的GPU的运行状态,若执行器的GPU为空闲状态,则执行该新任务。具体地,如图4所示,新任务到达相应的执行器后,计算资源管理器判断执行器的GPU状态是否为空闲,若该GPU为空闲状态,即该GPU的计算资源未被占用,则执行新任务;若该GPU不为空闲状态,即该GPU的计算资源被正在运行的任务占用,则暂不执行新任务,等待该GPU出现空闲时,再执行新任务;其中,该GPU出现空闲可以指正在运行的任务运行至输入输出进程,此时,正在运行的任务不占用GPU计算资源,因此该GPU出现空闲,可用于执行新任务,而当正在运行的任务运行至GPU计算进程时,GPU资源用于处理正在运行的任务,此时不执行新任务,直至该GPU出现空闲时再执行新任务。通过上述过程,可以在正在运行的任务处于输入输出进程时利用空闲的GPU执行新任务,从而实现了GPU计算资源的合理分配,提高了GPU计算资源的利用率。
另外地,在一些实施例中,基于上述步骤S207,在执行新任务之前,基于执行器的GPU的运行状态、显存占用情况以及性能拐点显存占用率,为执行器的GPU中所有任务分配执行器的GPU资源,具体可以包括:
通过任务处理集群中执行器的显存管理器计算该执行器的GPU的显存总量,判断新任务的性能拐点显存占用率与该执行器的GPU中正在运行的任务的性能拐点显存占用率之和是否超过该执行器的GPU的显存总量;若超过,则在正在运行的任务运行完毕后执行新任务;若不超过,则执行新任务。
具体地,当显存资源管理器判断新任务的性能拐点显存占用率与执行器的GPU中正在运行的任务的性能拐点显存占用率之和超过百分之一百时,说明正在运行的任务的性能拐点显存占用率之和超过该执行器的GPU的显存总量,此时,执行器的GPU的显存资源不足以支持新任务和正在执行的任务同时运行,因此等待正在运行的任务运行完毕后,再执行新任务;当显存资源管理器判断新任务的性能拐点显存占用率与执行器的GPU中正在运行的任务的性能拐点显存占用率之和未超过百分之一百时,说明正在运行的任务的性能拐点显存占用率之和未超过该执行器的GPU的显存总量,此时,可以通过图5所示的显存释放方法,通过将正在运行的任务的张量数据由执行器的GPU显存释放到主机内存中,来换取空余显存资源,使新任务和正在运行的任务可以同时在执行器的GPU上运行。基于此,在特定的执行器中,执行器的GPU的显存资源被合理分配给新任务和正在运行的任务,提高了GPU显存资源的利用率。
下面通过优选实施例对本实施例进行描述和说明。
图6是一个优选实施例的基于GPU的任务调度方法的流程图。如图6所示,该任务调度方法包括如下步骤:
S601,新任务到达任务处理集群时,计算运行时间内任务处理集群中调度器的GPU执行新任务的计算资源平均使用率,以及计算预设运行时间内调度器的GPU执行新任务的显存平均占用率;
S602,统计预设运行时间内调度器的GPU的计算资源使用率超过计算资源平均使用率的时间占比,作为第一统计结果;统计预设运行时间内调度器的GPU的显存占用率超过显存平均占用率的时间占比,作为第二统计结果;
S603,获取新任务的性能拐点显存占用率;
S604,基于第一统计结果、第二统计结果以及预设的划分规则,划分新任务的类型;
S605,判断是否存在未运行任务的执行器的GPU;若是,则执行步骤S606,否则,执行步骤S607;
S606,将新任务调度至未运行任务的执行器的GPU执行,然后执行步骤S610;
S607,判断是否存在正在运行一个任务的执行器的GPU,若是则执行步骤S608,否则,执行S609;
S608,根据新任务的类型进行调度,然后执行步骤S610;
S609,将新任务调度至正在运行任务数量最少的执行器的GPU执行;
S610,在执行新任务之前,基于执行器的GPU的运行状态、显存占用情况、新任务的性能拐点显存占用率以及执行器的GPU中正在运行的任务的性能拐点显存占用率,为执行器的GPU中所有任务分配执行器的GPU资源。
在本实施例中还提供了一种基于GPU的任务调度装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是一个优选实施例的用于调度器中计算资源分析器的任务分类方法的流程图。如图7所示,该任务分类方法包括如下步骤:
S701,调度器的GPU执行新任务;收集计算资源使用数据和显存占用数据;
S702,对收集到的数据求平均值;
S703,统计计算资源使用率和显存占用率在平均值以上的时间占比;
S704,根据统计结果和预设的划分规则,划分新任务的类型。
图8是一个优选实施例的用于调度器中显存性能分析器的性能分析方法的流程图。如图8所示,该性能分析方法包括如下步骤:
S801,收集新任务在不同显存占用率下被执行时的性能数据;
S802,根据该新能数据画出性能散点图,并利用预设的数学模型拟合该性能散点图,得到性能曲线;
S803,基于性能曲线获取性能曲线拐点,计算性能曲线拐点对应的显存占用率。
图9是本实施例的基于GPU的任务调度装置的结构框图,如图9所示,该任务调度装置包括:计算模块91、第一统计模块92、第二统计模块93、获取模块94、分类模块95、调度模块96以及执行模块97;其中:
计算模块91用于新任务到达任务处理集群时,计算预设运行时间内任务处理集群中调度器的GPU执行新任务的计算资源平均使用率,以及计算预设运行时间内调度器的GPU执行新任务的显存平均占用率;第一统计模块92用于统计预设运行时间内调度器的GPU的计算资源使用率超过上述计算资源平均使用率的时间占比,作为第一统计结果;第二统计模块93用于统计预设运行时间内调度器的GPU的显存占用率超过上述显存平均占用率的时间占比,作为第二统计结果;获取模块94用于获取新任务的性能拐点显存占用率;分类模块95用于基于第一统计结果、第二统计结果以及预设的划分规则,划分新任务的类型;调度模块96用于根据新任务的类型和任务处理集群中各执行器的GPU的运行任务数据,将新任务调度至匹配的执行器的GPU中执行;执行模块97用于在执行新任务之前,基于执行器的GPU的运行状态、显存占用情况、新任务的性能拐点显存占用率以及执行器的GPU中正在运行的任务的性能拐点显存占用率,为执行器的GPU中所有任务分配执行器的GPU资源。
在本实施例中还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,新任务到达任务处理集群时,计算运行时间内任务处理集群中调度器的GPU执行新任务的计算资源平均使用率,以及计算预设运行时间内调度器的GPU执行新任务的显存平均占用率;
S2,统计预设运行时间内调度器的GPU的计算资源使用率超过计算资源平均使用率的时间占比,作为第一统计结果;
S3,统计预设运行时间内调度器的GPU的显存占用率超过显存平均占用率的时间占比,作为第二统计结果;
S4,获取新任务的性能拐点显存占用率;
S5,基于第一统计结果、第二统计结果以及预设的划分规则,划分新任务的类型;
S6,根据新任务的类型和任务处理集群中各执行器的GPU的运行任务数据,将新任务调度至匹配的执行器的GPU中执行;
S7,在执行新任务之前,基于执行器的GPU的运行状态、显存占用情况、新任务的性能拐点显存占用率以及执行器的GPU中正在运行的任务的性能拐点显存占用率,为执行器的GPU中所有任务分配执行器的GPU资源。
需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
此外,结合上述实施例中提供的基方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于GPU的任务调度方法。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (8)

1.一种基于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资源。
2.根据权利要求1所述的基于GPU的任务调度方法,其特征在于,所述计算预设运行时间内所述任务处理集群中调度器的GPU执行所述新任务的计算资源平均使用率,包括:
通过所述任务处理集群中所述调度器的计算资源分析器收集所述预设运行时间内所述调度器的GPU执行所述新任务的计算资源使用数据;
根据所述计算资源使用数据,计算所述计算资源平均使用率。
3.根据权利要求1所述的基于GPU的任务调度方法,其特征在于,所述计算所述预设运行时间内所述调度器的GPU执行所述新任务的显存平均占用率,包括:
通过所述任务处理集群中所述调度器的计算资源分析器收集所述预设运行时间内所述调度器的GPU执行所述新任务的显存占用数据;
根据所述显存占用数据,计算所述显存平均占用率。
4.根据权利要求1所述的基于GPU的任务调度方法,其特征在于,所述基于所述执行器的GPU的运行状态、显存占用情况、所述新任务的所述性能拐点显存占用率以及所述执行器的GPU中正在运行的任务的性能拐点显存占用率,为所述执行器的GPU中所有任务分配所述执行器的GPU资源,包括:
通过所述任务处理集群中所述执行器的计算资源管理器监控所述执行器的GPU的运行状态,若所述执行器的GPU为空闲状态,则执行所述新任务。
5.根据权利要求1所述的基于GPU的任务调度方法,其特征在于,所述基于所述执行器的GPU的运行状态、显存占用情况、所述新任务的所述性能拐点显存占用率以及所述执行器的GPU中正在运行的任务的性能拐点显存占用率,为所述执行器的GPU中所有任务分配所述执行器的GPU资源,还包括:
判断所述新任务的所述性能拐点显存占用率与所述执行器的GPU中正在运行的任务的性能拐点显存占用率之和是否超过百分之一百;
若超过,则在所述正在运行的任务运行完毕后,执行所述新任务;
若不超过,则执行所述新任务。
6.一种基于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资源。
7.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至权利要求5中任一项所述的基于GPU的任务调度方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求5中任一项所述的基于GPU的任务调度方法的步骤。
CN202311271781.3A 2023-09-28 2023-09-28 基于gpu的任务调度方法、电子装置和存储介质 Active CN117032937B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311271781.3A CN117032937B (zh) 2023-09-28 2023-09-28 基于gpu的任务调度方法、电子装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311271781.3A CN117032937B (zh) 2023-09-28 2023-09-28 基于gpu的任务调度方法、电子装置和存储介质

Publications (2)

Publication Number Publication Date
CN117032937A CN117032937A (zh) 2023-11-10
CN117032937B true CN117032937B (zh) 2024-01-09

Family

ID=88632096

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311271781.3A Active CN117032937B (zh) 2023-09-28 2023-09-28 基于gpu的任务调度方法、电子装置和存储介质

Country Status (1)

Country Link
CN (1) CN117032937B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117806807B (zh) * 2024-02-29 2024-05-17 双一力(宁波)电池有限公司 任务调度方法、装置、电子设备和计算机可读存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101794696B1 (ko) * 2016-08-12 2017-11-07 서울시립대학교 산학협력단 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템
CN109992422A (zh) * 2019-04-11 2019-07-09 北京朗镜科技有限责任公司 一种面向gpu资源的任务调度方法、装置和系统
CN110689262A (zh) * 2019-09-25 2020-01-14 中国人民解放军战略支援部队航天工程大学 天基信息系统任务调度方法、装置和电子设备
CN111930522A (zh) * 2020-09-24 2020-11-13 常州微亿智造科技有限公司 Gpu虚拟化和资源调度方法和装置
CN112035266A (zh) * 2020-10-16 2020-12-04 腾讯科技(深圳)有限公司 资源分配方法、装置、设备及存储介质
CN112328399A (zh) * 2020-11-17 2021-02-05 中国平安财产保险股份有限公司 一种集群资源调度方法、装置、计算机设备及存储介质
CN113377540A (zh) * 2021-06-15 2021-09-10 上海商汤科技开发有限公司 集群资源调度方法及装置、电子设备和存储介质
CN113568730A (zh) * 2021-08-03 2021-10-29 北京八分量信息科技有限公司 异构任务的约束调度方法、装置及相关产品
CN114647515A (zh) * 2022-04-12 2022-06-21 杭州电子科技大学 一种面向gpu集群的动态资源调度方法
CN115586961A (zh) * 2022-09-28 2023-01-10 苏州浪潮智能科技有限公司 一种ai平台计算资源任务调度方法、装置及介质
WO2023050712A1 (zh) * 2021-09-30 2023-04-06 苏州浪潮智能科技有限公司 一种深度学习业务的任务调度方法及相关装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101794696B1 (ko) * 2016-08-12 2017-11-07 서울시립대학교 산학협력단 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템
CN109992422A (zh) * 2019-04-11 2019-07-09 北京朗镜科技有限责任公司 一种面向gpu资源的任务调度方法、装置和系统
CN110689262A (zh) * 2019-09-25 2020-01-14 中国人民解放军战略支援部队航天工程大学 天基信息系统任务调度方法、装置和电子设备
CN111930522A (zh) * 2020-09-24 2020-11-13 常州微亿智造科技有限公司 Gpu虚拟化和资源调度方法和装置
CN112035266A (zh) * 2020-10-16 2020-12-04 腾讯科技(深圳)有限公司 资源分配方法、装置、设备及存储介质
CN112328399A (zh) * 2020-11-17 2021-02-05 中国平安财产保险股份有限公司 一种集群资源调度方法、装置、计算机设备及存储介质
CN113377540A (zh) * 2021-06-15 2021-09-10 上海商汤科技开发有限公司 集群资源调度方法及装置、电子设备和存储介质
CN113568730A (zh) * 2021-08-03 2021-10-29 北京八分量信息科技有限公司 异构任务的约束调度方法、装置及相关产品
WO2023050712A1 (zh) * 2021-09-30 2023-04-06 苏州浪潮智能科技有限公司 一种深度学习业务的任务调度方法及相关装置
CN114647515A (zh) * 2022-04-12 2022-06-21 杭州电子科技大学 一种面向gpu集群的动态资源调度方法
CN115586961A (zh) * 2022-09-28 2023-01-10 苏州浪潮智能科技有限公司 一种ai平台计算资源任务调度方法、装置及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Kubeflow异构算力调度策略研究;孙毅等;《计算机工程》;全文 *
RAISE: Efficient GPU Resource Management via Hybrid Scheduling;Weng, Yue等;《 2022 22ND IEEE/ACM INTERNATIONAL SYMPOSIUM ON CLUSTER, CLOUD AND INTERNET COMPUTING (CCGRID 2022)》;全文 *
数据中心上异构资源的细粒度分配算法研究;汤小春;符莹;樊雪枫;;西北工业大学学报(第03期);全文 *

Also Published As

Publication number Publication date
CN117032937A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
CN105718479B (zh) 跨idc大数据处理架构下执行策略生成方法、装置
Yang et al. A framework for partitioning and execution of data stream applications in mobile cloud computing
CN110389816B (zh) 用于资源调度的方法、装置以及计算机可读介质
CN111176840B (zh) 分布式任务的分配优化方法和装置、存储介质及电子装置
CN117032937B (zh) 基于gpu的任务调度方法、电子装置和存储介质
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
CN111176792B (zh) 一种资源调度方法、装置及相关设备
US11496413B2 (en) Allocating cloud computing resources in a cloud computing environment based on user predictability
CN107656813A (zh) 一种负载调度的方法、装置及终端
CN112068957B (zh) 资源分配方法、装置、计算机设备及存储介质
CN111625331A (zh) 任务调度方法、装置、平台、服务器及存储介质
CN111104211A (zh) 基于任务依赖的计算卸载方法、系统、设备及介质
CN113238848A (zh) 一种任务调度方法、装置、计算机设备和存储介质
CN103455375B (zh) Hadoop云平台下基于负载监控的混合调度方法
CN113946431B (zh) 一种资源调度方法、系统、介质及计算设备
CN112559147B (zh) 基于gpu占用资源特点的动态匹配方法、系统和设备
CN112181613A (zh) 异构资源分布式计算平台批量任务调度方法及存储介质
CN115460216A (zh) 算力资源调度方法和装置、算力资源调度设备、系统
CN116089051A (zh) 一种任务分配方法、装置及系统
CN115373826B (zh) 一种基于云计算的任务调度方法及装置
CN109670932B (zh) 信贷数据核算方法、装置、系统和计算机存储介质
CN106354553A (zh) 一种大数据系统中基于资源估算的任务调度方法及装置
CN113301087B (zh) 资源调度方法、装置、计算设备和介质
CN111459651B (zh) 一种负载均衡方法、装置、存储介质及调度系统
CN115269131A (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