CN113316767A - 处理器处的松弛度感知、动态优先级变化 - Google Patents

处理器处的松弛度感知、动态优先级变化 Download PDF

Info

Publication number
CN113316767A
CN113316767A CN201980084915.6A CN201980084915A CN113316767A CN 113316767 A CN113316767 A CN 113316767A CN 201980084915 A CN201980084915 A CN 201980084915A CN 113316767 A CN113316767 A CN 113316767A
Authority
CN
China
Prior art keywords
task
slack
tasks
job
priority
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
CN201980084915.6A
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN113316767A publication Critical patent/CN113316767A/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/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
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Multi Processors (AREA)

Abstract

一种处理系统(100)包括任务队列(232)、耦合到任务队列的松弛度感知任务调度程序(234)以及耦合到松弛度感知任务调度程序的工作组分派器(238)。基于对与存储在所述任务队列中的多个任务相关联的松弛度值的松弛度评估,所述工作组分派器调度所述多个任务。所述松弛度评估包括确定所述多个任务中的每个任务的优先级。使用松弛度信息确定所述松弛度值,其中所述松弛度信息包括到达时间、任务持续时间、任务截止期限和工作组的数量。

Description

处理器处的松弛度感知、动态优先级变化
背景技术
许多重要的机器学习计算应用,诸如卷积神经网络(CNN)和递归神经网络(RNN),都具有在调度任务时必须考虑的实时截止期限。可以将任务定义为通常在例如CNN和RNN应用中使用的窄数据相依内核。当前的机器学习系统通常使用由程序员静态设置或在任务排队时的运行时设置的任务优先级,以帮助通知硬件如何调度同时提交的任务。结果,优先级水平设置得比较保守,以确保满足截止期限。但是,仅考虑优先级水平是不够的,因为优先级水平通常不会提供有关何时必须完成任务的信息,而只是提供任务的相对重要性。此外,分配给各个任务的优先级水平不会为硬件提供何时必须共同完成一系列相关任务的全局观点。
已部署以满足中央处理单元(CPU)和图形处理单元(GPU)的实时截止期限的任务调度解决方案是抢占优先级较低的任务,以执行优先级较高的任务。这种抢占技术通常由多核CPU使用,且很少由GPU使用。大多数抢占方案受操作系统指导,并且由于抢占的开销,通常会降低总体吞吐量。由于GPU的大量上下文状态,抢占开销在GPU上尤其成问题。此外,OS与加速器之间的通信延迟使立即更改变得困难。
已部署以满足实时截止期限的另一个任务调度解决方案是同时执行多个队列中的任务,并将唯一的优先级与不同队列中的任务相关联。例如,某些GPU支持四个优先级水平(图形、高、中、低),这些优先级水平有助于将有关任务的实时约束的信息传达给调度程序。但是,由于高级软件提供的信息是静态的,并且仅与单个任务相关联,因此调度程序无法确定优先级如何与GPU的当前全局情况相关。
其他解决方案使用了持久线程或内核以及低级用户运行时来处理并发任务。对于当前的RNN推理应用,持久内核技术已变得特别流行。在充分了解任务运行时并且可用硬件资源保持不变的情况下,持久内核可以充分发挥作用,而在任务运行时和硬件资源动态变化时,持久内核会崩溃。因此,期望一种改进的任务调度技术,其改善延迟并利用动态调度应用。
附图说明
通过参考附图,可更好地理解本公开,并且它的许多特征和优点对本领域技术人员来说变得显而易见。在不同附图中使用相同附图标号来指示类似或相同项。
图1是根据一些实施方案的实现松弛度感知任务调度的处理系统的框图。
图2是根据一些实施方案的实现松弛度感知任务调度的图形处理单元的框图。
图3是根据一些实施方案的具有在实现松弛度感知任务调度时使用的表和队列的松弛度感知任务调度程序的框图。
图4是根据一些实施方案的松弛度感知任务调度程序的示例性操作的框图。
图5是根据一些实施方案的松弛度感知任务调度程序的示例性操作的框图。
图6是示出根据一些实施方案的用于利用处理系统的部件的至少一部分来执行松弛度感知任务调度的方法的流程图。
具体实施方式
参考图1至图6,松弛度感知任务调度系统基于例如针对由中央处理单元(CPU)或存储器提供给图形处理单元(GPU)的任务所计算的松驰度来对任务和/或作业进行优先级排序,包括切换与作业相关联的任务的优先级的时间。松弛度感知任务调度系统通过增强任务调度程序以基于与作业相关联的截止期限动态地更改任务的优先级而减轻了调度问题。
与其他任务调度程序相比,松弛度感知任务调度系统的改进和益处包括松弛度感知任务调度系统允许同时调度在GPU上运行的许多递归神经网络(RNN)推理作业的能力。在这种情况下,术语“作业”是指一组相关任务(例如,GPU内核),这些任务将按时完成以符合实时截止期限。松弛度感知调度系统管理重大实时约束的能力使松弛度感知调度系统能够处理发生在机器翻译、语音识别、自动驾驶汽车的对象跟踪和语音翻译中的许多重要的调度问题。单个RNN推理作业通常包含一系列窄数据相依内核(即,任务),如果没有适当的调度方法,这些窄数据相依内核通常无法充分利用GPU的处理能力。然而,使用松弛度感知任务调度系统允许同时调度许多独立的RNN推理作业,以提高调度效率并满足实时截止期限。
用于执行并发RNN推理作业的其他调度技术(其中与每个单独的RNN作业相关联的任务在单独的队列中排队)包括例如先进先出(FIFO)作业调度程序。FIFO作业调度程序总是尝试以FIFO方式执行各个作业,并跨各作业而静态划分GPU资源或将多个作业一起批量处理,这会导致响应时间增加和吞吐量降低,从而使调度系统的实时保证存在风险。松弛度感知任务处理系统将作业一起批量处理,并且平均响应时间比各个作业的FIFO调度提高了例如4.5倍。因此,与其他FIFO调度技术相比,松弛度感知调度系统显著提高了GPU性能。
图1是根据一些实施方案的实现松弛度感知任务调度的处理系统100的框图。处理系统100包括中央处理单元(CPU)145、存储器105、总线110、图形处理单元(GPU)115、输入/输出引擎160、显示器120和外部存储部件165。GPU 115包括松弛度感知任务调度程序142、计算单元125和内部(或片上)存储器130。CPU 145包括处理器核心150和松弛度信息模块122。存储器105包括指令135的副本、操作系统144和程序代码155。在各种实施方案中,CPU145经由总线110耦合到GPU 115、存储器105和I/O引擎160。
处理系统100有权访问使用诸如动态随机存取存储器(DRAM)之类的非暂时性计算机可读介质来实现的存储器105或其他存储部件。然而,存储器105也可使用包括静态随机存取存储器(SRAM)、非易失性RAM等的其他类型的存储器来实现。
处理系统100还包括总线110,以支持在处理系统100中实现的实体(诸如,存储器105)之间的通信。处理系统100的一些实施方案包括为了清楚起见未在图1中示出的其他总线、桥、开关、路由器等。
处理系统100包括一个或多个GPU 115,其被配置为执行机器学习任务并渲染图像以呈现在显示器120上。例如,GPU 115可渲染对象以产生像素值,所述像素值被提供给显示器120,所述显示器使用像素值来显示表示所渲染对象的图像。GPU 115的一些实施方案还可用于高端计算。例如,GPU 115可用于为各种类型的神经网络(例如,卷积神经网络(CNN)或递归神经网络(RNN))实现机器学习算法。在一些情况下,当例如单个GPU 115不具有足够的处理能力来执行所分配的机器学习算法时,协调多个GPU 115的操作以执行机器学习算法。多个GPU 115通过一个或多个接口(为了清楚起见,在图1中未示出)使用GPU间通信来通信。
处理系统100包括输入/输出(I/O)引擎160,其处理与显示器120以及处理系统100的其他元件(诸如,键盘、鼠标、打印机、外部磁盘等)相关联的输入或输出操作。I/O引擎160耦合到总线110,使得I/O引擎160与存储器105、GPU 115或CPU 145通信。在所示的实施方案中,I/O引擎160被配置为读取存储在外部存储部件165上的信息,所述外部存储部件使用非暂时性计算机可读介质(诸如,光盘(CD)、数字视频光盘(DVD)等)来实现。I/O引擎160还可将诸如由GPU 115或CPU 145处理的结果的信息写入到外部存储部件165。
处理系统100还包括连接到总线110并经由总线110与GPU 115和存储器105通信的CPU 145。在所示的实施方案中,CPU 145实现多个处理元件(还称为处理器核心)150,所述多个处理元件被配置为同时或并行地执行指令。CPU 145可执行存储在存储器105中的诸如程序代码155之类的指令,并且CPU 145可将诸如所执行指令的结果之类的信息存储在存储器105中。CPU 145还能够通过向GPU 115发出绘制调用(即,命令或指令)来发起图形处理。
GPU 115实现多个处理元件(还称为计算单元)125,所述多个处理元件被配置为同时或并行地执行指令。GPU 115还包括内部存储器130,所述内部存储器包括本地数据存储区(LDS)以及计算单元125所使用的高速缓存、寄存器或缓冲区。内部存储器130存储描述在计算单元125中的一个或多个上执行的任务的数据结构。
在所示的实施方案中,GPU 115通过总线110与存储器105通信。然而,GPU 115的一些实施方案通过直接连接或经由其他总线、桥、开关、路由器等与存储器105通信。GPU 115可执行存储在存储器105中的指令,并且GPU 115可将诸如所执行指令的结果之类的信息存储在存储器105中。例如,存储器105可以存储来自将由GPU 115执行的程序代码的指令135的副本,该程序代码诸如表示机器学习算法或神经网络的程序代码。GPU 115还包括协处理器140,该协处理器接收任务请求并将任务分派给计算单元125中的一个或多个。
在处理系统100的操作期间,CPU 145向GPU 115发出命令或指令,以发起对表示由GPU 115执行的程序指令的内核的处理。使用计算单元125的子集同时或并行执行内核的多个实例(在此称为线程或工作项)。在一些实施方案中,线程根据单指令多数据(SIMD)协议执行,使得每个线程对不同的数据执行相同的指令。将线程收集到在不同计算单元125上执行的工作组中。
至少部分地为了解决与常规任务调度实践相关联的问题,并且为了提高利用率、性能并满足一系列数据相依任务的实时截止期限,松弛度感知任务调度程序142被增强以基于作业或任务截止期限的松弛度动态地调整任务优先级。如本文中所使用的,松弛度是任务必须完成之前任务所具有的额外时间或松弛时间。在一些实施方案中,基于从软件提供的(或例如根据从CPU 145提供的松驰度信息计算出的)任务(或作业)的实时截止期限和与该作业相关联的剩余任务的集合完成将花费的估计时间量之间的差值来设置任务(或作业)的动态优先级。该估计基于例如先前已发生的相似任务所消耗的时间,并且由松弛度感知任务调度程序142将其存储在例如硬件表中。在各种实施方案中,通过例如数据包处理器(例如,GPU 115)分析相关联的作业队列中的剩余任务来确定该估计。一旦数据包处理器确定了剩余任务的类型,数据包处理器便会参考存储先前任务持续时间的硬件表。通过总结估计,松弛度感知任务调度程序142估计剩余时间。随着任务的松弛度降低,任务的优先级增加。而且,为了不断提高后续估计的准确性,在完成任务之后更新存储在硬件表中的信息,并进一步完善该信息以包括专用于该任务的资源量。
在各种实施方案中,处理系统100的松弛度感知任务调度程序142提供了用于任务调度的机制,该机制通过基于任务或作业在完成之前的松弛度的量动态地改变计算任务的任务优先级来增强现有调度策略,例如,最早截止期限优先(EDF)任务调度算法。在各种实施方案中,在必须完成任务截止期限或作业截止期限之前,当作业或任务具有松弛度时,可以在调度队列中降低具有松弛度的任务的优先级以允许其他任务完成。
在各种实施方案中,为了使GPU 115能够动态地调整任务以考虑松弛度,提供了硬件和软件,例如,松驰度感知任务调度程序142和松驰度信息模块122,作为对GPU 115的支持,同时还通知GPU 115有关作业的实时截止期限,提供对给定任务或作业完成的持续时间的估计,例如,任务或作业基于同一任务(或具有相似内核的其他任务)的先前运行所需的完成时间,并在任务完成之后更新所述估计。
图2示出了根据一些实施方案的实现松弛度感知任务调度的图形处理单元(GPU)200。GPU 200包括任务队列232、松弛度感知任务调度程序234、工作组分派器238、计算单元214、计算单元216、计算单元218、互连282、高速缓存284和存储器288。任务队列232耦合到松弛度感知任务调度程序234。松弛度感知任务调度程序234耦合到工作组分派器238。工作组分派器238耦合到计算单元214至216。计算单元214至216耦合到互连282。互连282耦合到高速缓存284。高速缓存284耦合到存储器288。在各种实施方案中,可以将其他类型的处理单元用于松弛度感知任务调度实现,例如CPU。
在GPU 200的操作期间,进一步参考图1,CPU 145通过发送诸如架构排队语言(AQL)数据包之类的数据包将工作分派给GPU 200,所述数据包描述将在GPU 200上执行的内核。数据包的一些实施方案包括要在GPU 200上执行的代码的地址、寄存器分配要求、本地数据存储区(LDS)的大小、工作组大小、定义初始寄存器状态的配置信息、指向变元缓冲区的指针等等。通过将数据包写入任务队列232(例如,AQL队列)来使该数据包排队。
在各种实施方案中,处理系统100的GPU 200可以使用可移植异构接口(HIP)流来异步地启动内核。由HIP流启动的内核被映射到任务队列232(AQL队列)。在各种实施方案中,每个RNN作业使用单独的HIP流,并且工作组分派器238扫描每个AQL队列以找到与该作业相关联的任务(例如,Q1、Q2、…、Q32)。工作组分派器238以循环方式在这些队列中调度工作。只要硬件资源(诸如工作组、寄存器和LDS)可用,则可以同时执行由不同的HIP流或AQL队列(代表不同的RNN作业)处理的内核。因此,可以在多个GPU 200上同时执行不同RNN作业的内核。在各种实施方案中,工作组分派器238的调度策略被重新配置或改变为松弛度感知调度策略,以促进RNN任务的响应时间。
在处理系统100的操作期间,GPU 200从CPU 145接收要执行的多个作业(例如,RNN作业)。在各种实施方案中,作业包括具有GPU 200要满足的实时约束的多个任务。每个任务可能具有相关联的松弛时间或松弛度,松弛时间或松弛度定义为作业的实时截止期限(任务截止期限或作业截止期限)之前剩余的时间与完成任务或作业所需的时间量(任务持续时间或作业持续时间)之间的差值。在这两种情况下,作业截止期限或任务截止期限可以由例如OS 144或CPU 145提供。
GPU 200接收作业并将所述作业和与每个作业相关联的任务存储在任务队列232中。为了执行松弛度感知任务调度,存储在任务队列232中的每个任务包括特定于每个作业和任务的松弛度信息。在各种实施方案中,松弛度信息包括例如作业到达时间、作业截止期限和工作组的数量。在各种实施方案中,松弛度信息包括例如任务到达时间、任务截止期限和工作组的数量。在各种实施方案中,松弛度信息还可包括由松弛度信息模块122和/或OS144提供的作业持续时间和/或任务持续时间。
松弛度感知任务调度程序234接收松弛度信息和任务持续时间,并确定与每个任务相关联的松弛度(如果有的话)。在各种实施方案中,如上所述,松弛度感知任务调度程序234通过从任务的作业截止期限减去任务的持续时间来确定与任务相关联的松弛度。例如,如果任务的作业截止期限时间步长(即时间增量)为七,任务持续时间的时间步长为四,并且它是任务队列中的最后一个任务,则与任务相关联的松弛度是三。松弛度感知任务调度程序234继续计算与作业相关联的每个任务的松弛度值,并将任务松弛度值提供给工作组分派器238以进行任务优先级分配。
在各种实施方案中,工作组分派器238从松弛度感知任务调度程序234接收与每个任务相关联的松弛度值,并基于所有任务的松弛度值为每个任务分配优先级。工作组分派器238通过将每个任务的松弛度值与其他任务的松弛度值进行比较来分配优先级。工作组分派器238基于比较结果动态地提高或降低每个任务的优先级。例如,与其他任务的松弛度值相比,松弛度值较低的任务接收较高的调度优先级。与其他任务的其他松弛度值相比,松弛度值较高的任务接收较低的调度优先级。调度优先级较高的任务被调度为先于调度优先级较低的任务执行。调度优先级较低的任务被调度为在调度优先级较高的任务之后执行。
在各种实施方案中,工作组分派器238使用工作组调度程序(未示出)从新更新的最高优先级任务到较低优先级任务来选择工作组,直到计算单元214至216没有可用于附加任务的附加时隙。计算单元214至216以给定的优先级执行任务,并将所执行的任务提供给互连282,以进一步分发给高速缓存284和存储器288以进行处理。
图3是根据一些实施方案的实现松弛度感知任务调度的松弛度感知任务调度程序300的框图。松弛度感知任务调度程序300包括任务延迟表310、内核表320和优先级队列表330。任务延迟表310包括任务标识(任务ID)312、内核名称314、工作组计数316和任务剩余时间318。任务ID 312存储任务的标识号。在各种实施方案中,任务ID与例如由CPU 145提供的AQL队列ID相同。内核名称314存储内核的名称。工作组计数存储作业中任务使用的内核数。
任务剩余时间318是任务中剩余的时间,并且通过将内核表320中的工作组执行时间(即内核时间324)乘以任务延迟表310的工作组计数条目(即工作组计数316)来确定。任务剩余时间存储内核表320中单个工作执行时间与任务延迟表310的内核名称–工作组计数中的工作组计数条目相乘的结果。
内核表320存储内核名称322和内核时间324。内核名称322是正在执行的内核的名称,并且内核时间324是内核工作组的平均执行时间。优先级队列表330包括任务优先级332和任务队列ID 334。任务优先级332是由松弛度感知任务调度程序300分配给任务的优先级。任务队列ID 334是队列中任务的ID号。在各种实施方案中,在松弛度感知任务调度程序300中可以将作业与任务互换,以启用处理系统100的GPU 200的松弛度感知作业调度。
参考图1至图3,松弛度感知任务调度程序300使用存储在任务延迟表310和内核表320中的值以及例如由OS 144或由运行时传递的或由用户从应用程序设置的松弛度信息来进行松弛度和任务优先级评估,即松弛度感知任务调度。松弛度信息包括例如作业到达时间、任务持续时间、作业截止期限和工作组的数量。作业到达时间是作业到达例如GPU 200的时间。作业截止期限是必须完成作业并由处理系统100决定的时间。任务持续时间是任务的估计长度。
可以通过OS 144将任务持续时间提供给松弛度感知任务调度程序300,或者松弛度感知任务调度程序300可以通过使用任务延迟表310和内核表320来估计任务持续时间。在各种实施方案中,松弛度感知任务调度程序300通过从当前任务时间中减去任务到达时间来估计任务持续时间。
在处理系统100完成内核后更新任务延迟表310、内核表320和优先级队列表330中的条目。当处理系统100完成内核时,内核表320和任务延迟表310中的对应条目被更新以确定后续的任务持续时间估计。使用任务延迟表310、内核表320和优先级队列表330中提供的信息,当与作业/队列相关联的所有任务都已知时,计算任务的松弛度。
图4是根据一些实施方案的松弛度感知任务调度的图示。参考图1至图3,对于所示出的示例,存在三个任务:TASK 1、TASK 2和TASK 3,其由松弛度感知任务调度程序300从任务队列232接收。每个任务包含单个内核,并且内核和任务编号为1到3(即,TASK 1、TASK 2和TASK 3),以表示每个任务到达的顺序。在图4所示的示例中,TASK 1第一个到达,TASK 2第二个到达,并且TASK 3第三个到达。在到达时,GPU 200假定所有三个内核具有相同的(静态)优先级。对于图4所示的示例,存在两个计算单元CU 214和CU 216,其可用于松弛度感知任务调度程序300的调度。水平轴表示时间步长0到8,例如,所述时间步长提供对每个任务的任务截止期限以及任务持续时间和松弛度值的指示。
例如,从CPU 145或OS 144提供的每个任务(TASK 1、TASK 2和TASK 3)的松弛度信息的形式为K(到达时间、任务持续时间、作业截止期限、工作组的数量)。对于TASK 1,K1(到达时间、任务持续时间、作业截止期限、工作组的数量)为K1(0、3、3、1)。对于TASK 2,K2(到达时间、任务持续时间、作业截止期限、工作组的数量)为K2(0、4、7、1)。对于TASK 3,K(到达时间、任务持续时间、作业截止期限、工作组的数量)为K3(0、8、8、1)。因此,对于K1,到达时间、任务持续时间、任务截止期限和工作组的数量分别为0、3、3和1。对于K2,到达时间、任务持续时间、任务截止期限和工作组的数量分别为0、4、7和1。对于K3,到达时间、任务持续时间、任务截止期限和工作组的数量分别为0、8、8和1。
在各种实施方案中,使用每个任务的到达时间、任务持续时间、作业截止期限和工作组的数量,计算每个任务的松弛度值以用于调度目的。对于TASK 1,松弛度值计算为3-3,即0。对于TASK 2,松弛度值计算为7-4,即3。对于TASK 3,松弛度值计算为8-8,即0。然后基于每个任务的松弛度值的比较,对任务进行调度,如从带圆圈的数字1、2和3可见。在三个任务中,TASK 3和TASK 1具有最低松弛度值,每个松弛度值均为0。由于TASK 1和TASK 3的松弛度值相等,因此比较TASK 1的任务持续时间和TASK 3的任务持续时间以确定哪个任务在任务中具有最低的任务持续时间。首先调度具有最大(最大值)任务持续时间的任务,并且第二个调度具有第二大任务持续时间的任务,依此类推。对于所提供的示例,TASK 3的任务持续时间大于TASK 1的任务持续时间,因此首先在计算单元216中调度TASK 3。第二个,在计算单元214中调度TASK 1。第三个,在计算单元214中调度TASK 2。因此,松弛度感知任务调度程序300基于每个任务的松弛度来调度TASK 1、TASK 2和TASK 3。
在各种实施方案中,例如,当在TASK 2之前在计算单元216上调度TASK 3时,则TASK 1和TASK 2可以利用TASK 2的松弛度依次利用计算单元214,而TASK 3通过使用计算单元216满足其任务截止期限。任务调度程序334已经动态地调整了所调度的任务,使得任务TASK 1和TASK 3由CU 214在八个时间步长内执行,而任务TASK 2由CU 216执行。因此,使用松弛度感知任务调度程序300已使GPU 200能够在八个时间步长截止期限内执行任务TASK 1、TASK 2和TASK 3。使用松弛度感知任务调度对任务进行调度允许最大化使用计算单元214和计算单元216,同时允许动态地提高具有最低松弛度值的任务的优先级。
图5是根据一些实施方案的松弛度感知任务调度的图示。图5描绘了具有多个任务的作业(即,其中每个作业具有至少一个任务)的松弛度感知任务调度的示例。参考图1至图3,对于所示出的示例,存在三个作业:JOB 1、JOB 2、JOB 3,其由松弛度感知任务调度程序300从任务队列232接收。在一些实施方案中,对于具有一个以上任务(即,多个任务)的每个作业,任务序列取决于任务的排序,即,每个作业的任务可以以预先设定的顺序执行,类似于任务图。也就是说,例如,JOB 1的TASK 1必须在JOB 1的TASK 2之前完成。JOB 2的TASK 1必须在JOB 2的TASK 2之前完成。每个作业包含单个内核,并且内核和作业被编号为1到3(即,JOB 1、JOB 2和JOB 3),以表示每个作业到达的顺序。在图5所示的示例中,JOB 1第一个到达,JOB 2第二个到达,并且JOB 3第三个到达。在到达时,GPU 200假定所有三个内核具有相同的(静态)优先级。对于图5所示的示例,存在两个计算单元CU 214和CU 216,其可用于松弛度感知任务调度程序300的调度。
例如,从CPU 145或OS 144提供的每个作业(JOB 1、JOB 2和JOB 3)的松弛度信息的形式为K(到达时间、任务持续时间、作业截止期限、工作组的数量)。对于JOB 1,K1(到达时间、作业持续时间、作业截止期限、工作组的数量)为K1(0、3、3、1)。对于JOB 2,K2(到达时间、作业持续时间、作业截止期限、工作组的数量)为K2(0、4、7、1)。对于JOB 3,K(到达时间、作业持续时间、作业截止期限、工作组的数量)为K3(0、8、8、1)。因此,对于K1,到达时间、作业持续时间、作业截止期限和工作组的数量分别为0、3、3和1。对于K2,到达时间、作业持续时间、作业截止期限和工作组的数量分别为0、4、7和1。对于K3,到达时间、作业持续时间、作业截止期限和工作组的数量分别为0、8、8和1。
在各种实施方案中,使用每个作业的到达时间、作业持续时间、作业截止期限和工作组的数量,计算每个作业的松弛度值以用于调度目的。对于JOB 1,松弛度值计算为3-3,即0。对于JOB 2,松弛度值计算为7-4,即3。对于JOB 3,松弛度值计算为8-8,即0。然后基于每个作业的松弛度值的比较,对作业进行调度,如从带圆圈的数字1、2和3可见。在三个作业中,JOB 3和JOB 1具有最低松弛度值,每个松弛度值均为0。由于JOB 1和JOB 3的松弛度值相等,因此比较JOB 1的作业持续时间和JOB 3的作业持续时间以确定哪个作业在作业中具有最低的作业持续时间。首先调度具有最大(最大值)作业持续时间的作业,并且第二个调度具有第二大作业持续时间的作业,依此类推。对于所提供的示例,JOB 3的作业持续时间大于JOB 1的作业持续时间,因此首先在计算单元216中调度JOB 3。第二个,在计算单元214中调度JOB 1。第三个,在计算单元214中调度JOB 2。因此,松弛度感知任务调度程序300基于每个任务的松弛度来调度JOB 1、JOB 2和JOB 3及其对应的任务。
在各种实施方案中,例如,当在JOB 2之前在计算单元216上调度JOB 3时,则JOB 1和JOB 2可以利用JOB 2的松弛度依次利用计算单元214,而JOB 3通过使用计算单元216满足其作业截止期限。任务调度程序334已经动态地调整了所调度的作业,使得JOB 1和JOB 3由CU 214在八个时间步长内执行,而任务JOB 2由CU 216执行。因此,使用松弛度感知任务调度程序300已使GPU 200能够在八个时间步长截止期限内执行作业JOB 1、JOB 2和JOB 3。使用松弛度感知任务调度对作业进行调度允许最大化使用计算单元214和计算单元216,同时允许动态地提高具有最低松弛度值的作业的优先级。
图6是示出根据一些实施方案的用于执行松弛度感知任务调度的方法600的流程图。方法600在图1中所示的处理系统100、图2中所示的GPU 200和图3中所示的松弛度感知任务调度程序300的一些实施方案中实现。
在各种实施方案中,方法流程从框620开始。在框620处,松弛度感知任务调度程序234从例如CPU 145接收作业和松弛度信息。在框630处,松弛度感知任务调度程序234确定每个任务的到达时间、任务持续时间、任务截止期限和工作组的数量。
在框634处,松弛度感知任务调度程序234确定每个接收到的任务的任务截止期限。在框640处,松弛度感知任务调度程序234确定每个接收到的任务的松弛度值。
在框644处,工作组分派器238确定任务的松弛度值是否大于GPU 200接收到的作业中其他任务的松弛度值。在框650处,当任务的松弛度值不大于作业中其他任务的松弛度值时,工作组分派器238按照标准EDF技术调度任务并将任务分配给GPU 200的可用计算单元214至216。
在框660处,当任务的松弛度值大于作业中其他任务的松弛度值时,工作组分派器238确定具有较低松弛度值的任务的松弛度值是否相等。在框670处,当具有较低松弛度值的任务的松弛度值相等时,工作组分派器238将最高优先级分配给具有最大任务持续时间的任务。
在框680处,当具有较低松弛度值的任务的松弛度值不相等时,工作组分派器238向具有最低松弛度值的任务分配最高优先级。
在框684处,工作组分派器238基于每个任务的优先级来调度任务并将任务分配给GPU 200的可用计算单元214至216,其中优先级最高的任务首先被调度。在框688处,GPU200基于松弛度感知调度优先级执行任务。
在一些实施方案中,上文所描述的设备和技术被实现在包括一个或多个集成电路(IC)装置(也称为集成电路封装或微芯片)的系统中,诸如上文参考图1至图6所述的处理系统。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可用于设计和制作这些IC装置。这些设计工具通常被表示为一个或多个软件程序。所述一个或多个软件程序包括可由计算机系统执行的代码,以操纵计算机系统来操作表示一个或多个IC装置的电路的代码,从而执行用于设计或调适制造系统的过程的至少一部分来制造电路。此代码可包括指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令通常存储在可由计算系统访问的计算机可读存储介质中。同样地,表示IC装置的设计或制造的一个或多个阶段的代码可以存储在同一计算机可读存储介质或不同的计算机可读存储介质中,以及从同一计算机可读存储介质或不同的计算机可读存储介质进行访问。
计算机可读存储介质可包括在使用期间可由计算机系统访问以将指令和/或数据提供给计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可存取存储装置(NAS))。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可包括例如磁盘或光盘存储装置、固态存储装置(诸如快闪存储器、高速缓存、随机存取存储器(RAM)或一个或多个其他非易失性存储器装置)等。存储在非暂时性计算机可读存储介质上的可执行指令可为源代码、汇编语言代码、对象代码或由一个或多个处理器解译或以其他方式执行的其他指令格式。
应注意,并不需要上文在一般描述中所描述的所有活动或元件,特定活动或装置的一部分可能是不需要的,并且可以执行一个或多个其他活动,或者可以包括除所描述的那些元件之外的元件。此外,列出活动的顺序不一定是执行活动的顺序。另外,已经参考具体实施方案描述了相应概念。然而,本领域中的普通技术人员会了解,可在不背离所附权利要求书中所阐述的本公开范围的情况下,做出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。
上文已经参照具体实施方案描述了相应益处、其它优点以及问题的解决方案。然而,所述益处、优点、问题解决方案以及可使任何益处、优点或解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,以上所公开的特定实施方案只是说明性的,因为所公开的主题可以按受益于本文教义的本领域的技术人员显而易知的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制本文所示的构造或设计的细节。因此,明显以上所公开的特定实施方案可更改或修改,并且所有此类变化形式被认为在所公开的主题的范围内。因此,本文所寻求的保护是在所附权利要求书中加以陈述。

Claims (20)

1.一种方法,其包括:
接收与多个任务中的每个任务相关联的松弛度信息;
基于所述松弛度信息确定所述多个任务中的每个任务的松弛度值;
执行对所述松弛度值的松弛度评估;以及
基于所述松弛度评估来调度所述多个任务。
2.根据权利要求1所述的方法,其中:
所述松弛度评估包括确定所述多个任务中的每个任务的优先级。
3.根据权利要求2所述的方法,其中:
所述松弛度信息用于确定用于完成每个任务的时间量,并且包括到达时间、任务持续时间、任务截止期限和工作组的数量。
4.根据权利要求3所述的方法,其中:
通过比较所述多个任务中的每个任务的所述松弛度值来确定所述多个任务中的每个任务的所述优先级。
5.根据权利要求4所述的方法,其还包括:
通过从所述任务截止期限减去所述任务持续时间来确定所述松弛度值。
6.根据权利要求4所述的方法,其中调度包括:
当与所述多个任务中的第一任务相关联的第一松弛度值小于与所述多个任务中的第二任务相关联的第二松弛度值时,所述第一任务接收高于所述第二任务的调度优先级。
7.根据权利要求4所述的方法,其中调度所述多个任务包括在向第一计算单元提供所述多个任务中具有较低优先级水平的第二任务之前,向所述第一计算单元提供所述多个任务中具有较高优先级水平的第一任务。
8.根据权利要求4所述的方法,其中在具有较高优先级的第一任务的第一任务持续时间小于或等于优先级比所述第一任务低的第二任务的松弛度值时,所述第一任务在所述第二任务之前调度在第一计算单元中。
9.根据权利要求4至8中任一项所述的方法,其还包括:
基于每个任务的所述优先级,将所述多个任务分配到至少第一计算单元和第二计算单元。
10.一种处理系统,其包括:
任务队列;
耦合到所述任务队列的松弛度感知任务调度程序;和
耦合到所述松弛度感知任务调度程序的工作组分派器,其中基于对与存储在所述任务队列中的多个任务相关联的松弛度值的松弛度评估,所述工作组分派器调度所述多个任务。
11.根据权利要求10所述的处理系统,其中:
所述松弛度评估包括确定所述多个任务中的每个任务的优先级。
12.根据权利要求11所述的处理系统,其中:
所述多个任务中的每个任务的所述优先级基于对所述多个任务中的每个任务的所述松弛度值的比较。
13.根据权利要求10所述的处理系统,其中:
使用松弛度信息确定所述松弛度值,所述松弛度信息包括到达时间、任务持续时间、任务截止期限和工作组的数量。
14.根据权利要求13所述的处理系统,其中:
通过从所述任务截止期限减去所述任务持续时间来确定所述松弛度值。
15.根据权利要求10所述的处理系统,其中:
当所述松弛度值中与所述多个任务中的第一任务相关联的第一松弛度值小于所述松弛度值中与所述多个任务中的第二任务相关联的第二松弛度值时,所述第一任务接收高于所述第二任务的调度优先级。
16.根据权利要求15所述的处理系统,其中:
所述工作组分派器通过在向第一计算单元提供所述多个任务中具有较低优先级水平的第二任务之前向所述第一计算单元提供所述多个任务中具有较高优先级水平的第一任务来调度所述多个任务。
17.根据权利要求16所述的处理系统,其中:
在具有较高优先级的第一任务的第一任务持续时间小于或等于具有较低优先级的第二任务的松弛度值时,所述第一任务在所述第二任务之前调度在第一计算单元中。
18.一种方法,其包括:
向松弛度感知任务调度程序提供多个作业,其中所述多个作业包括第一作业和第二作业;
确定所述第一作业的第一松弛度值和所述第二作业的第二松弛度值;以及
基于对所述第一松弛度值和所述第二松弛度值的松弛度评估,将第一优先级分配给所述第一作业并将第二优先级分配给所述第二作业。
19.根据权利要求18所述的方法,其还包括:
基于所述松弛度评估调度所述第一作业和所述第二作业。
20.根据权利要求18所述的方法,其还包括:
基于所述松弛度评估来调整所述第一作业的所述第一优先级和所述第二作业的所述第二优先级。
CN201980084915.6A 2018-11-26 2019-06-20 处理器处的松弛度感知、动态优先级变化 Pending CN113316767A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/200,503 2018-11-26
US16/200,503 US20200167191A1 (en) 2018-11-26 2018-11-26 Laxity-aware, dynamic priority variation at a processor
PCT/US2019/038292 WO2020112170A1 (en) 2018-11-26 2019-06-20 Laxity-aware, dynamic priority variation at a processor

Publications (1)

Publication Number Publication Date
CN113316767A true CN113316767A (zh) 2021-08-27

Family

ID=70770139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980084915.6A Pending CN113316767A (zh) 2018-11-26 2019-06-20 处理器处的松弛度感知、动态优先级变化

Country Status (6)

Country Link
US (1) US20200167191A1 (zh)
EP (1) EP3887948A4 (zh)
JP (1) JP7461947B2 (zh)
KR (1) KR20210084620A (zh)
CN (1) CN113316767A (zh)
WO (1) WO2020112170A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115276758A (zh) * 2022-06-21 2022-11-01 重庆邮电大学 一种基于任务松弛度的中继卫星动态调度方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748615B1 (en) * 2018-12-06 2023-09-05 Meta Platforms, Inc. Hardware-aware efficient neural network design system having differentiable neural architecture search
CN113296874B (zh) * 2020-05-29 2022-06-21 阿里巴巴集团控股有限公司 一种任务的调度方法、计算设备及存储介质
US20240095541A1 (en) * 2022-09-16 2024-03-21 Apple Inc. Compiling of tasks for streaming operations at neural processor
CN115495202B (zh) * 2022-11-17 2023-04-07 成都盛思睿信息技术有限公司 一种异构集群下的大数据任务实时弹性调度方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5058033A (en) * 1989-08-18 1991-10-15 General Electric Company Real-time system for reasoning with uncertainty
US7058946B2 (en) * 1999-06-21 2006-06-06 Lucent Technologies Inc. Adaptive scheduling of data delivery in a central server
US7526765B2 (en) * 2003-11-26 2009-04-28 International Business Machines Corporation Method and apparatus for on-demand resource allocation and job management
US20090217272A1 (en) * 2008-02-26 2009-08-27 Vita Bortnikov Method and Computer Program Product for Batch Processing
EP2256632B1 (en) * 2009-05-26 2013-07-31 Telefonaktiebolaget L M Ericsson (publ) Multi-processor scheduling
US8056080B2 (en) * 2009-08-31 2011-11-08 International Business Machines Corporation Multi-core/thread work-group computation scheduler
FR2997773B1 (fr) * 2012-11-06 2016-02-05 Centre Nat Rech Scient Procede d'ordonnancement avec contraintes d'echeance, en particulier sous linux, realise en espace utilisateur.
CN103870327A (zh) * 2012-12-18 2014-06-18 华为技术有限公司 一种实时多任务调度方法和装置
JP6365367B2 (ja) * 2015-03-17 2018-08-01 株式会社デンソー 電子制御装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115276758A (zh) * 2022-06-21 2022-11-01 重庆邮电大学 一种基于任务松弛度的中继卫星动态调度方法
CN115276758B (zh) * 2022-06-21 2023-09-26 重庆邮电大学 一种基于任务松弛度的中继卫星动态调度方法

Also Published As

Publication number Publication date
WO2020112170A1 (en) 2020-06-04
EP3887948A1 (en) 2021-10-06
KR20210084620A (ko) 2021-07-07
EP3887948A4 (en) 2022-09-14
JP2022509170A (ja) 2022-01-20
US20200167191A1 (en) 2020-05-28
JP7461947B2 (ja) 2024-04-04

Similar Documents

Publication Publication Date Title
JP7461947B2 (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
EP3008594B1 (en) Assigning and scheduling threads for multiple prioritized queues
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US10552213B2 (en) Thread pool and task queuing method and system
US9176794B2 (en) Graphics compute process scheduling
US8963933B2 (en) Method for urgency-based preemption of a process
US8775762B2 (en) Method and apparatus for batching memory requests
US9448846B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US8028286B2 (en) Methods and apparatus for scheduling threads on multicore processors under fair distribution of cache and other shared resources of the processors
US10242420B2 (en) Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta
US20120229481A1 (en) Accessibility of graphics processing compute resources
KR20050020942A (ko) 연속 매체 우선순위 인식 저장장치 스케줄러
EP2652614A1 (en) Graphics processing dispatch from user mode
US20130141447A1 (en) Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
EP2663926B1 (en) Computer system interrupt handling
US11113101B2 (en) Method and apparatus for scheduling arbitration among a plurality of service requestors
US11061724B2 (en) Programmable hardware scheduler for digital processing systems
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
US20240160364A1 (en) Allocation of resources when processing at memory level through memory request scheduling
US10713089B2 (en) Method and apparatus for load balancing of jobs scheduled for processing
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法

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