CN112204523A - 多内核波前调度程序 - Google Patents
多内核波前调度程序 Download PDFInfo
- Publication number
- CN112204523A CN112204523A CN201980036426.3A CN201980036426A CN112204523A CN 112204523 A CN112204523 A CN 112204523A CN 201980036426 A CN201980036426 A CN 201980036426A CN 112204523 A CN112204523 A CN 112204523A
- Authority
- CN
- China
- Prior art keywords
- scheduling
- wavefronts
- resource contention
- scheduling group
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000015654 memory Effects 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims 9
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Power Sources (AREA)
Abstract
公开了用于实现多内核波前调度程序的系统、设备和方法。一种系统至少包括耦接到一个或多个存储器的并行处理器,其中所述并行处理器包括命令处理器和多个计算单元。所述命令处理器启动多个内核用于在所述计算单元上执行。每个计算单元都包括多级调度程序,以用于调度来自多个内核的波前用于在其执行单元上执行。第一级调度程序通过基于波前的内核的优先级将波前一起分组来创建调度组。因此,来自具有相同优先级的内核的波前被第一级调度程序一起分组在相同调度组中。接下来,第一级调度程序从多个调度组中选择最高优先级的调度组用于执行。然后,第二级调度程序从由第一级调度程序选择的调度组中调度波前用于执行。
Description
背景技术
本发明是在美国劳伦斯·利弗莫尔国家安全局的PathForward项目(美国能源部授予的主要合同编号DE-AC52-07NA27344,分包合同编号B620717)的政府支持下完成的。美国政府具有本发明中的某些权利。
相关技术说明
现代处理器(例如,图形处理单元(GPU))包括支持同时运行多个进程的结构,其中每个进程潜在地会启动多个内核。结果,来自多个进程的多个内核可以在同一处理器上同时运行。如本文所用,“内核”是一个或多个可执行程序指令。通常,此类内核被标识为函数,并且在对多个数据元素进行操作时,并行地执行内核的多个实例。每个此类实例都被称为执行的“线程”。一组此类线程在本文中也被称为“线程束”或“波前”。通常,GPU内核具有多个线程束或波前。从单个进程或从多个进程同时运行多个内核会导致这些内核竞争处理器的共享资源。在这种情景下,来自寻求访问这些共享资源的多个内核的干扰可能降低整体性能。此外,当同时运行不同的内核时,共享资源的争用可能会更糟,因为与来自相同内核的工作组不同,来自不同内核的工作组是没有共同性的完全不同的实体。
附图说明
通过结合附图参考以下描述,可以更好地理解本文描述的方法和机制的优点,在附图中:
图1是计算系统的一个实现方式的框图。
图2是计算系统的另一实现方式的框图。
图3是计算单元的一个实现方式的框图。
图4是用于给定计算单元的波前调度的一个实现方式的框图。
图5是示出了用于调度来自多个内核的波前用于执行的方法的一个实现方式的通用流程图。
图6是示出了用于当优先级信息不被考虑或不可用时调度来自多个内核的工作组的方法的一个实现方式的通用流程图。
图7是示出了用于基于资源争用来动态地对波前调度进行节流的方法的一个实现方式的通用流程图。
图8是示出了用于调度来自多个内核的波前用于执行的方法的一个实现方式的通用流程图。
具体实施方式
在以下描述中,阐述了众多具体细节以提供对本文所呈现方法和机制的透彻理解。然而,本领域的普通技术人员应认识到,可在没有这些特定细节的情况下实践各种实现方式。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文描述的方法。应当理解,为了说明的简单和清楚起见,附图中所示的元件不一定按比例绘制。例如,一些元件的尺寸可相对于其他元件被放大。
本文公开了用于实现多内核波前调度程序的各种系统、设备和方法。一种系统至少包括处理器,该处理器具有耦接到一个或多个存储器的多个计算单元。在一些实现方式中,系统包括多个处理器。例如,在一个实现方式中,系统包括中央处理单元(CPU)和图形处理单元(GPU)。在其他实现方式中,系统包括其他数目和/或类型的处理器。在描述各个实现方式时,CPU在本文中被称为第一处理器,并且GPU在本文中被称为第二处理器。根据实现方式,第一处理器由任何类型的处理器实现。附加地,根据实现方式,第二处理器由任何类型的处理器实现。
在一个实现方式中,多个进程正在第一处理器上运行,并且每个进程潜在地调用一个或多个内核在第二处理器上执行。在第二处理器上被调用的内核通常包括多个波前。在一个实现方式中,第二处理器包括命令处理器和多个计算单元。命令处理器在第二处理器的各个计算单元上启动内核。在一个实现方式中,每个计算单元包括多级调度程序,以调度在计算单元上被启动和正在运行的内核的波前。多级调度程序以帮助减少在计算单元上运行的多个内核之间的资源争用同时还确保波前执行的向前推进的方式来调度波前。
在一个实现方式中,第一级调度程序基于波前的内核的优先级将波前一起分组到调度组中。例如,对于具有第一优先级的内核,将这些内核的所有波前一起分组到第一调度组中。对于具有第二优先级的内核,将这些内核的所有波前一起分组到第二调度组中。对于具有第三优先级的内核,将这些内核的所有波前一起分组到第三调度组中,依此类推。然后,第一级调度程序从多个调度组中选择最高优先级的调度组进行调度。接下来,第二级调度程序调度来自由第一级调度程序选择的调度组的波前。根据实现方式,第二级调度程序使用轮转策略、最早波前优先策略或另一策略来从由第一级调度程序选择的调度组中选择要调度哪些波前。
在一个实现方式中,每个计算单元包括用于监测指示计算单元上的资源利用的一个或多个条件的控制逻辑。控制逻辑基于被监测的一个或多个条件生成资源争用度量。如果资源争用度量大于第一阈值,则调度程序将最低优先级的调度组移入取消调度的队列中,以防止该组被调度用于执行。然后,控制逻辑在生成后续资源争用度量之前等待预定的时间量。如果后续度量仍大于第一阈值,则调度程序将下一最低优先级的调度组移入取消调度的队列中。但是,如果后续资源争用度量小于第二阈值,则调度程序会将最高优先级的调度组移出取消调度的队列,以允许该组被调度用于执行。控制逻辑和调度程序继续这种操作模式:监测条件、等待预定的时间量、然后基于资源争用度量与一个或多个阈值的比较来确定是否在队列之间迁移调度组。
现在参考图1,示出了计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100至少包括处理器105A至105N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130、网络接口135和一个或多个存储器装置140。在其他实现方式中,计算系统100包括其他部件并且/或者计算系统100以不同方式布置。处理器105A至105N表示系统100中包括的任何数目的处理器。
在一个实现方式中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在这个实现方式中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等。在一些实现方式中,处理器105A至105N包括多个数据并行处理器。在一个实现方式中,处理器105A至105N中的一个或多个包括多个计算单元。每个计算单元都包括多级调度程序,以用于以减少计算单元上的资源争用的方式调度来自多个内核的波前用于执行。如果所监测的资源争用度量大于阈值,则每个计算单元还监测资源争用并对波前的调度组进行节流。
一个或多个存储器控制器130表示可由处理器105A至105N和耦接到I/O接口120的I/O装置(未示出)访问的任何数目和类型的存储器控制器。一个或多个存储器控制器130耦接到任何数目和类型的一个或多个存储器装置140。一个或多个存储器装置140表示任何数目和类型的存储器装置。例如,一个或多个存储器装置140中的存储器的类型包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)等。
I/O接口120表示任何数目和类型的I/O接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI快速)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置(未示出)耦接到I/O接口120。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等等。网络接口135用于跨网络接收和发送网络消息。
在各种实现方式中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或者各种其他类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数目随实现方式的不同而不同。例如,在其他实现方式中,存在与图1中示出的数目相比更多或更少的每种部件。还应注意的是,在其他实现方式中,计算系统100包括图1中未示出的其他部件。附加地,在其他实现方式中,计算系统100以与图1中所示不同的方式进行结构化。
现在转到图2,示出了计算系统200的另一实现方式的框图。在一个实现方式中,系统200包括GPU 205、系统存储器225和本地存储器230。系统200还包括其他部件,未示出所述其他部件以避免使图混淆不清。GPU 205至少包括命令处理器235、控制逻辑240、分派单元250、计算单元255A至255N、存储器控制器220、全局数据共享270、一级(L1)高速缓存265以及二级(L2)高速缓存260。在其他实现方式中,即使在图2中仅示出一个实例和/或仅一个实例以其他合适的方式组织,GPU 205也可能包括其他部件、省略所示出的部件中的一个或多个、具有部件的多个实例。
在各种实现方式中,计算系统200执行各种类型的软件应用程序中的任一种。作为执行给定软件应用程序的一部分,计算系统200的主机CPU(未示出)启动要在GPU 205上执行的内核。命令处理器235从主机CPU接收内核,并使用分派单元250将内核分派到计算单元255A至255N。控制逻辑240监测GPU 205的各种资源,并帮助分派单元250基于资源利用来确定如何将波前分派给计算单元255A至255N。在计算单元255A至255N上执行的内核内的线程向GPU 205内的全局数据共享270、L1高速缓存265和L2高速缓存260读取和写入数据。尽管图2中未示出,但是在一个实现方式中,计算单元255A至255N也在每个计算单元255A至255N内包括一个或多个高速缓存和/或本地存储器。
现在参考图3,示出了计算系统300的一个实现方式的框图。在一个实现方式中,计算单元300包括第一级调度程序310、第二级调度程序320、单指令多数据(SIMD)单元325A至325N、调度队列330、取消调度的队列340、控制逻辑350和高速缓存子系统355。第一级调度程序310和第二级调度程序320用于为多个内核的波前实现两级调度方案,这帮助减少计算单元300上的资源争用。
在其他实现方式中,计算单元300包括其他部件并且/或者以不同方式布置。SIMD单元325A至325N表示用于执行波前的任何数目的SIMD单元。调度队列330表示用于存储能够在SIMD单元325A至325N上被调度的波前的调度组的任何数目的队列。取消调度的队列340表示用于存储不被允许在SIMD单元325A至325N上被调度的调度组的任何数目的队列。应注意,计算单元300还包括其他部件,这些部件并未示出以避免使附图模糊。
在一个实现方式中,第一级调度程序310基于波前的内核的优先级将波前一起分组到调度组中。例如,对于具有第一优先级的内核,将这些内核的所有波前一起分组到第一调度组中。对于具有第二优先级的内核,将这些内核的所有波前一起分组到第二调度组中,以此类推。然后,第一级调度程序310从多个调度组中选择最高优先级的调度组以进行调度。接下来,第二级调度程序320从第一级调度程序310选择的调度组中调度波前。根据实现方式,第二级调度程序320使用轮转策略、最早波前优先策略或另一策略来从由第一级调度程序310选择的调度组中选择要调度哪些波前。在另一实现方式中,如果优先级信息不可用,则第一级调度程序310将来自相同内核的波前一起分组到相同调度组中。然后,第一级调度程序310选择与最早的内核相对应的调度组。
在一个实现方式中,计算单元300包括用于监测指示计算单元300上的资源利用的一个或多个条件的控制逻辑350。在各种实现方式中,被监测的条件包括计算单元停顿周期、高速缓存未命中率、存储器访问延迟、链路利用率、和/或其他条件。控制逻辑350基于被监测的一个或多个条件来生成资源争用度量。如果资源争用度量大于第一阈值,则控制逻辑350将最低优先级的调度组从调度队列330移入取消调度的队列340中,以防止该组被调度用于执行。然后,控制逻辑350在生成后续资源争用度量之前等待预定的时间量。如果后续度量仍然大于第一阈值,则控制逻辑350将下一最低优先级的调度组从调度队列330移入取消调度的队列340中。然而,如果后续资源争用度量小于第二阈值,则控制逻辑350将最高优先级的调度组移出取消调度的队列340,并移回到调度队列330中,以允许该组被调度用于执行。控制逻辑350继续这种操作模式:监测条件、等待预定的时间量、然后基于资源争用度量与一个或多个阈值的比较来确定是否在队列之间迁移调度组。
现在转到图4,示出了用于给定计算单元的波前调度的一个实现方式的框图。给定的计算单元接收多个内核的波前。在一个实现方式中,调度程序(未示出)基于优先级将波前一起分组到调度组中。出于论述的目的,假定优先级信息可用于给定计算单元的调度逻辑。在其他实现方式中,当优先级信息不可用时,使用用于将来自多个内核的波前分组到调度组中的其他技术。图400的左侧示出了在一种特定情景下在给定计算单元上被启动的不同内核的优先级。每个内核包括任何数目的波前,其中数目随内核的不同而不同。
如图400所示,内核A具有为5的优先级,在这种示例情景中,该优先级是分派到给定计算单元的任何内核的最高优先级。同样如图400所示,内核B和C具有为4的优先级,内核E和D具有为3的优先级,内核H、F和G具有为2的优先级,内核I和J具有为1的优先级,以及内核K具有为0的优先级。图400的右侧示出了内核何时可用于在给定计算单元上执行的时序图。
在时隙t0期间,内核A在给定计算单元上运行。因此,第一级调度程序将创建具有来自内核A的波前的调度组,然后第二级调度程序将调度来自该调度组的波前在给定计算单元上执行。在下一时隙t1期间,内核B、C和D在给定计算单元上运行。第一级调度程序为内核B和C的波前创建调度组,因为这些内核具有相同的优先级。由于内核B和C具有比内核D更高的优先级,因此第一级调度程序选择内核B和C的调度组以进行调度。然后,第二级调度程序将从内核B和C的调度组中选择波前以在时隙t1期间执行。由于第一级调度程序未选择内核D,因此在时隙t1期间将不会执行来自内核D的波前。
在下一时隙t2期间,内核E和D在给定计算单元上运行。现在能够在时隙t2中调度来自内核D的波前,因为在相同周期中没有更高优先级的内核可用。因此,第一级调度程序为来自内核E和D的波前创建调度组,并且第二级调度程序调度来自该调度组的波前以在时隙t2期间在计算单元上执行。在时隙t3中,仍然调度来自内核E的波前,并且两个新的内核F和G在给定计算单元上运行。由于内核E具有高于内核F和G的优先级,因此第一级调度程序选择与内核E相对应的调度组,并且第二级调度程序调度来自该调度组的波前以在时隙t2期间在计算单元上执行。
在时隙t4期间,内核H以及在前一时隙t3中没有完成的内核F和G现在在给定计算单元上运行。由于所有可用的内核H、F和G具有相同的优先级(为2的优先级),因此第一级调度程序为内核H、F和G创建单个调度组,并且第二级调度程序调度来自内核H、F和G的波前以在时隙t4期间在给定计算单元上执行。在时隙t5期间,仍然存在来自内核H的、无法在时隙t4中进行调度的波前。而且,内核J现在在时隙t5中在给定计算单元上运行。由于内核H具有高于内核J的优先级,因此第一级调度程序选择与内核H相对应的调度组,然后第二级调度程序调度来自内核H的波前以在时隙t5期间在给定计算单元上执行。
然后,在时隙t6中,内核I以及在时隙t5中未选择的内核J现在在计算单元上运行。由于内核I和J具有相同的优先级,因此第一级调度程序为内核I和J的波前创建调度组,并且第二级调度程序调度来自内核I和J的波前以在时隙t6期间在计算单元上执行。在时隙t7中,内核K是在给定计算单元上运行的唯一内核。因此,第一级调度程序为内核K的波前创建调度组,然后第二级调度程序调度来自内核K的波前以在时隙t7期间在给定计算单元上执行。应注意,对于在给定计算单元上被启动的附加内核,图400中示出的调度决策的模式能够继续用于任何后续时隙。
现在参考图5,示出了用于调度来自多个内核的波前用于执行的方法500的一个实现方式。出于论述的目的,此实现方式中的步骤和图6至图7的那些步骤按顺序次序示出。然而,应注意,在所描述的方法的各种实现方式中,所描述的要素中的一个或多个同时执行,以不同于所示的次序执行,或者被完全省略。还根据需要执行其他另外的要素。本文中所描述的各种系统或设备中的任一者被配置为实现方法500。
波前调度程序从命令处理器接收多个内核的多个波前(框505)。第一级调度程序通过将来自具有相同优先级的内核的波前一起分组到相同的调度组中来创建多个调度组,其中每个调度组包括来自具有相同优先级的内核的波前(框510)。接下来,第一级调度程序从多个调度组中选择最高优先级的调度组以进行调度(框515)。然后,第一级调度程序确定所选择的调度组是否具有准备好在当前循环中执行的任何波前(条件框520)。如果所选择的调度组没有准备好在当前循环中执行的任何波前(条件框520,“否”支路),则第一级调度程序从多个调度组中选择下一最高优先级的调度组以进行调度(框525)。在框525之后,方法500返回到条件框520。如果所选择的调度组具有准备好在当前周期中执行的波前(条件框520,“是”支路),则第二级调度程序从由第一级调度程序选择的调度组中调度波前用于执行(框530)。根据实现方式,第二级调度程序采用最早内核优先调度、轮转策略或任何其他调度策略来从由第一级调度程序选择的调度组中调度波前。而且,第二级调度程序防止来自除所选择的调度组以外的调度组的波前被调度用于执行(框535)。在框535之后,方法500结束。
现在参考图6,示出了用于当优先级信息不被考虑或不可用时调度来自多个内核的工作组的方法600的一个实现方式。波前调度程序从命令处理器接收多个内核的多个波前(框605)。接下来,第一级调度程序通过将来自相同内核的波前一起分组到相同调度组中来创建多个调度组,其中每个调度组包括来自单个内核的波前(框610)。然后,第一级调度程序从多个调度组中选择与最早的内核相对应的调度组以进行调度(框615)。接下来,第二级调度程序从由第一级调度程序选择的调度组中调度波前用于执行(框620)。而且,第二级调度程序防止来自除所选择的调度组以外的调度组的波前被调度用于执行(框625)。在框625之后,方法600结束。
现在转到图7,示出了用于基于资源争用来动态地对波前调度进行节流的方法700的一个实现方式。计算单元的调度程序通过在不进行任何节流的情况下调度波前来开始操作(框705)。调度程序监测与计算单元的资源利用相关联的一个或多个条件(框710)。在各种实现方式中,被监测的条件包括计算单元停顿周期、高速缓存未命中率、存储器访问延迟、链路利用率、和/或其他条件。如果一个或多个条件指示资源争用已增加到第一阈值以上(条件框715,“是”支路),则调度程序对最低优先级的调度组进行节流,并将该调度组放入取消调度的调度组队列中(框720)。应注意,“取消调度的调度组队列”在本文中也称为“取消调度的队列”。在一个实现方式中,阈值是预定义的。在另一实现方式中,阈值是可编程的。如果一个或多个条件指示资源争用等于或小于第一阈值(条件框715,“否”支路),则方法700返回到框705。
在框720之后,调度程序等待给定的时间量(框725),然后调度程序再次监测指示资源争用的一个或多个条件(框730)。如果一个或多个条件指示资源争用仍高于第一阈值(条件框735,“是”支路),则调度程序通过将下一最低优先级的调度组移入取消调度的队列来对下一最低优先级的调度组(即,常规调度队列中剩余的最低优先级的调度组)进行节流(框740)。在框740之后,方法700返回到框725。
如果一个或多个条件指示资源争用已降至第一阈值以下或者等于第一阈值(条件框735,“否”支路),则调度程序确定一个或多个条件是否指示资源争用低于第二阈值(条件框745)。如果一个或多个条件指示资源争用低于第二阈值(条件框745,“是”支路),则调度程序从取消调度的队列中获取最高优先级的调度组,并将其放回到常规调度队列中(框750)。如果取消调度的队列为空(条件框755,“是”支路),则方法700返回到框705。如果在取消调度的队列中仍然存在一个或多个调度组(条件框755,“否”支路),或者如果一个或多个条件指示资源争用大于或等于第二阈值(条件框745,“否”支路),则方法700返回到框725。
现在转到图8,示出了一种用于调度来自多个内核的波前用于执行的方法的一个实现方式。处理器(例如,GPU)的计算单元接收多个内核的多个波前(框805)。计算单元至少部分地基于共同准则或属性将接收到的波前中的波前一起分组为调度组(框810)。例如,在一个实现方式中,波前共同的标准或属性是内核和优先级中的至少一个。接下来,计算单元从多个调度组中选择调度组(框815)。然后,计算单元仅从所选择的调度组中调度波前用于执行(框820)。在框820之后,方法800结束。应注意,在来自给定的所选择的调度组的波前已经完成之后,能够重复方法800的步骤815和820。
在各种实现方式中,使用软件应用程序的程序指令来实现本文所述的方法和/或机制。例如,可由通用或专用处理器执行的程序指令是预期的。在各种实现方式中,此类程序指令由高级编程语言表示。在其他实现方式中,程序指令从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,写入描述硬件的行为或设计的程序指令。此类程序指令由诸如C的高级编程语言表示。替代地,使用诸如Verilog的硬件设计语言(HDL)。在各种实现方式中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。在使用期间,计算系统可访问存储介质,以将程序指令提供到计算系统以用于程序执行。一般来讲,此类计算系统至少包括一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应当强调的是,上述实现方式仅是实现方式的非限制性示例。一旦完全明了以上公开内容,许多变化和修改对于本领域技术人员而言将变得显而易见。以下权利要求意图解释为包含所有此类变化和修改。
Claims (20)
1.一种系统,其包括:
多个计算单元;以及
命令处理器,所述命令处理器耦接到所述多个计算单元,其中所述命令处理器被配置为将内核分派给所述多个计算单元;
其中所述多个计算单元中的每个计算单元被配置为:
从所述命令处理器接收多个内核的多个波前;
至少部分地基于共同准则将所述多个波前中的波前一起分组为多个调度组;
从所述多个调度组中选择给定的调度组;以及
仅从所述给定的调度组调度波前用于执行。
2.如权利要求1所述的系统,其中所述共同准则是内核和优先级中的至少一个。
3.如权利要求2所述的系统,其中每个计算单元被配置为将具有相同优先级的波前一起分组到相同的调度组中。
4.如权利要求1所述的系统,其中每个计算单元还被配置为:
监测指示所述计算单元上的资源争用的一个或多个条件,所述一个或多个条件包括计算单元停顿周期、高速缓存未命中率、存储器访问延迟和链路利用率中的至少一项;
基于被监测的所述一个或多个条件,生成第一资源争用度量;
响应于确定所述第一资源争用度量大于第一阈值,将最低优先级的调度组移入取消调度的队列中,其中防止来自存储在所述取消调度的队列中的调度组的波前被调度用于在所述计算单元上执行。
5.如权利要求4所述的系统,其中每个计算单元被配置为:
在将所述最低优先级的调度组移入所述取消调度的队列中之后,等待给定的时间量;
基于被监测的所述一个或多个条件,生成第二资源争用度量;以及
响应于确定所述第二资源争用度量大于所述第一阈值,将下一最低优先级的调度组移入所述取消调度的队列中。
6.如权利要求4所述的系统,其中每个计算单元被配置为:
在将所述最低优先级的调度组移入所述取消调度的队列中之后,等待给定的时间量;
基于被监测的所述一个或多个条件,生成第二资源争用度量;以及
响应于确定所述第二资源争用度量小于第二阈值,将最高优先级的调度组移出所述取消调度的队列。
7.如权利要求1所述的系统,其中每个计算单元还被配置为从所述多个调度组中选择最高优先级的调度组。
8.一种方法,其包括:
接收多个内核的多个波前;
至少部分地基于共同准则将所述多个波前中的波前一起分组为多个调度组;
从所述多个调度组中选择给定的调度组;以及
仅从所述给定的调度组调度波前用于执行。
9.如权利要求8所述的方法,其中所述共同准则是内核和优先级中的至少一个。
10.如权利要求9所述的方法,其还包括:将来自具有相同优先级的内核的波前一起分组到相同的调度组中。
11.如权利要求8所述的方法,其还包括:
监测指示计算单元上的资源争用的一个或多个条件,所述一个或多个条件包括计算单元停顿周期、高速缓存未命中率、存储器访问延迟和链路利用率中的至少一项;
基于被监测的所述一个或多个条件,生成第一资源争用度量;
响应于确定所述第一资源争用度量大于第一阈值,将最低优先级的调度组移入取消调度的队列中,其中防止来自存储在所述取消调度的队列中的调度组的波前被调度用于在所述计算单元上执行。
12.如权利要求11所述的方法,其还包括:
在将所述最低优先级的调度组移入所述取消调度的队列中之后,等待给定的时间量;
基于被监测的所述一个或多个条件,生成第二资源争用度量;以及
响应于确定所述第二资源争用度量大于所述第一阈值,将下一最低优先级的调度组移入所述取消调度的队列中。
13.如权利要求11所述的方法,其还包括:
在将所述最低优先级的调度组移入所述取消调度的队列中之后,等待给定的时间量;
基于被监测的所述一个或多个条件,生成第二资源争用度量;以及
响应于确定所述第二资源争用度量小于第二阈值,将最高优先级的调度组移出所述取消调度的队列。
14.如权利要求8所述的方法,其还包括:从所述多个调度组中选择最高优先级的调度组。
15.一种设备,其包括:
存储器;以及
耦接到所述存储器的处理器;
其中所述处理器被配置为:
接收多个内核的多个波前;
至少部分地基于共同准则将所述多个波前中的波前一起分组为多个调度组;
从所述多个调度组中选择给定的调度组;以及
仅从所述给定的调度组调度波前用于执行。
16.如权利要求15所述的设备,其中所述共同准则是内核和优先级中的至少一个。
17.如权利要求16所述的设备,其中所述处理器被配置为将来自具有相同优先级的内核的波前一起分组到相同的调度组中。
18.如权利要求15所述的设备,其中所述处理器还被配置为:
监测指示所述处理器上的资源争用的一个或多个条件,所述一个或多个条件包括计算单元停顿周期、高速缓存未命中率、存储器访问延迟和链路利用率中的至少一项;
基于被监测的所述一个或多个条件,生成第一资源争用度量;
响应于确定所述第一资源争用度量大于第一阈值,将最低优先级的调度组移入取消调度的队列中,其中防止来自存储在所述取消调度的队列中的调度组的波前被调度用于在所述处理器上执行。
19.如权利要求18所述的设备,其中所述处理器还被配置为:
在将所述最低优先级的调度组移入所述取消调度的队列中之后,等待给定的时间量;
基于被监测的所述一个或多个条件,生成第二资源争用度量;以及
响应于确定所述第二资源争用度量大于所述第一阈值,将下一最低优先级的调度组移入所述取消调度的队列中。
20.如权利要求18所述的设备,其中所述处理器还被配置为:
在将所述最低优先级的调度组移入所述取消调度的队列中之后,等待给定的时间量;
基于被监测的所述一个或多个条件,生成第二资源争用度量;以及
响应于确定所述第二资源争用度量小于第二阈值,将最高优先级的调度组移出所述取消调度的队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/993,061 US12099867B2 (en) | 2018-05-30 | 2018-05-30 | Multi-kernel wavefront scheduler |
US15/993,061 | 2018-05-30 | ||
PCT/US2019/024354 WO2019231539A1 (en) | 2018-05-30 | 2019-03-27 | Multi-kernel wavefront scheduler |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112204523A true CN112204523A (zh) | 2021-01-08 |
Family
ID=66102796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980036426.3A Pending CN112204523A (zh) | 2018-05-30 | 2019-03-27 | 多内核波前调度程序 |
Country Status (6)
Country | Link |
---|---|
US (1) | US12099867B2 (zh) |
EP (1) | EP3803583B1 (zh) |
JP (1) | JP7320536B2 (zh) |
KR (1) | KR102586988B1 (zh) |
CN (1) | CN112204523A (zh) |
WO (1) | WO2019231539A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12086644B2 (en) | 2021-08-11 | 2024-09-10 | Apple Inc. | Logical slot to hardware slot mapping for graphics processors |
US12062126B2 (en) | 2021-09-29 | 2024-08-13 | Advanced Micro Devices, Inc. | Load multiple primitives per thread in a graphics pipeline |
US20230305887A1 (en) * | 2022-03-28 | 2023-09-28 | Honeywell International S.R.O. | Processing engine scheduling for time-space partitioned processing systems |
US20230305888A1 (en) * | 2022-03-28 | 2023-09-28 | Honeywell International S.R.O. | Processing engine mapping for time-space partitioned processing systems |
US11954492B1 (en) * | 2022-09-19 | 2024-04-09 | Apple Inc. | Fence enforcement techniques based on stall characteristics |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090150893A1 (en) * | 2007-12-06 | 2009-06-11 | Sun Microsystems, Inc. | Hardware utilization-aware thread management in multithreaded computer systems |
JP2010020683A (ja) * | 2008-07-14 | 2010-01-28 | Nec Electronics Corp | スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム |
CN103229580A (zh) * | 2012-12-21 | 2013-07-31 | 华为技术有限公司 | 资源调度的方法和装置 |
CN103336718A (zh) * | 2013-07-04 | 2013-10-02 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
CN103562870A (zh) * | 2011-05-11 | 2014-02-05 | 超威半导体公司 | 异构核心的自动加载平衡 |
CN104346220A (zh) * | 2013-07-31 | 2015-02-11 | 中国科学院计算技术研究所 | 一种任务调度方法与系统 |
CN104503838A (zh) * | 2014-11-23 | 2015-04-08 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN106325996A (zh) * | 2015-06-19 | 2017-01-11 | 华为技术有限公司 | 一种gpu资源的分配方法及系统 |
CN107145388A (zh) * | 2017-05-25 | 2017-09-08 | 深信服科技股份有限公司 | 一种多任务环境下任务调度方法及系统 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5900025A (en) * | 1995-09-12 | 1999-05-04 | Zsp Corporation | Processor having a hierarchical control register file and methods for operating the same |
US6697932B1 (en) * | 1999-12-30 | 2004-02-24 | Intel Corporation | System and method for early resolution of low confidence branches and safe data cache accesses |
US20020073129A1 (en) * | 2000-12-04 | 2002-06-13 | Yu-Chung Wang | Integrated multi-component scheduler for operating systems |
US20030065809A1 (en) * | 2001-10-03 | 2003-04-03 | Adc Telecommunications, Inc. | Scheduling downstream transmissions |
US7594102B2 (en) | 2004-12-15 | 2009-09-22 | Stmicroelectronics, Inc. | Method and apparatus for vector execution on a scalar machine |
US7793294B2 (en) * | 2005-02-22 | 2010-09-07 | Northrop Grumman Corporation | System for scheduling tasks within an available schedule time period based on an earliest possible end time of the task |
US7761697B1 (en) | 2005-07-13 | 2010-07-20 | Nvidia Corporation | Processing an indirect branch instruction in a SIMD architecture |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US8225325B2 (en) | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8151095B1 (en) | 2008-07-18 | 2012-04-03 | Nvidia Corporation | System and method for context migration across CPU threads |
US8700862B2 (en) | 2008-12-03 | 2014-04-15 | Nvidia Corporation | Compression status bit cache and backing store |
CN101753546B (zh) * | 2008-12-16 | 2012-10-31 | 中国移动通信集团公司 | 一种数据包传送方法及装置 |
US20110219221A1 (en) | 2010-03-03 | 2011-09-08 | Kevin Skadron | Dynamic warp subdivision for integrated branch and memory latency divergence tolerance |
US8285950B2 (en) * | 2010-06-03 | 2012-10-09 | International Business Machines Corporation | SMT/ECO mode based on cache miss rate |
US8751771B2 (en) | 2010-09-29 | 2014-06-10 | Nvidia Corporation | Efficient implementation of arrays of structures on SIMT and SIMD architectures |
US9830156B2 (en) | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
JP2014525619A (ja) | 2011-09-02 | 2014-09-29 | フリースケール セミコンダクター インコーポレイテッド | データ処理システム |
US8689237B2 (en) * | 2011-09-22 | 2014-04-01 | Oracle International Corporation | Multi-lane concurrent bag for facilitating inter-thread communication |
US9830158B2 (en) | 2011-11-04 | 2017-11-28 | Nvidia Corporation | Speculative execution and rollback |
US8842122B2 (en) * | 2011-12-15 | 2014-09-23 | Qualcomm Incorporated | Graphics processing unit with command processor |
US10152329B2 (en) | 2012-02-09 | 2018-12-11 | Nvidia Corporation | Pre-scheduled replays of divergent operations |
US20130226535A1 (en) * | 2012-02-24 | 2013-08-29 | Jeh-Fu Tuan | Concurrent simulation system using graphic processing units (gpu) and method thereof |
US9830163B2 (en) * | 2012-06-08 | 2017-11-28 | Advanced Micro Devices, Inc. | Control flow in a heterogeneous computer system |
JP6020091B2 (ja) | 2012-11-27 | 2016-11-02 | 富士通株式会社 | 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置 |
US9851977B2 (en) | 2012-12-06 | 2017-12-26 | Kalray | Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization |
US9588822B1 (en) * | 2012-12-18 | 2017-03-07 | Amazon Technologies, Inc. | Scheduler for data pipeline |
US9639371B2 (en) | 2013-01-29 | 2017-05-02 | Advanced Micro Devices, Inc. | Solution to divergent branches in a SIMD core using hardware pointers |
US9891949B2 (en) | 2013-03-06 | 2018-02-13 | Nvidia Corporation | System and method for runtime scheduling of GPU tasks |
US9256623B2 (en) | 2013-05-08 | 2016-02-09 | Nvidia Corporation | System, method, and computer program product for scheduling tasks associated with continuation thread blocks |
US9652284B2 (en) | 2013-10-01 | 2017-05-16 | Qualcomm Incorporated | GPU divergence barrier |
US9250953B2 (en) | 2013-11-12 | 2016-02-02 | Oxide Interactive Llc | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system |
US9485197B2 (en) * | 2014-01-15 | 2016-11-01 | Cisco Technology, Inc. | Task scheduling using virtual clusters |
US9807029B2 (en) * | 2014-01-17 | 2017-10-31 | Verizon Patent And Licensing Inc. | Providing quality of service based on bandwidth |
US9766895B2 (en) | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Opportunity multithreading in a multithreaded processor with instruction chaining capability |
CN104036001B (zh) * | 2014-06-13 | 2017-05-10 | 上海新炬网络信息技术有限公司 | 基于热表动态优先调度的数据快速清理方法 |
US11301256B2 (en) * | 2014-08-22 | 2022-04-12 | Advanced Micro Devices, Inc. | System and method for page-conscious GPU instruction |
US10713059B2 (en) | 2014-09-18 | 2020-07-14 | Advanced Micro Devices, Inc. | Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units |
US9898409B2 (en) | 2014-10-09 | 2018-02-20 | The Regents Of The University Of Michigan | Issue control for multithreaded processing |
US9804666B2 (en) | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
CN106325995B (zh) | 2015-06-19 | 2019-10-22 | 华为技术有限公司 | 一种gpu资源的分配方法及系统 |
US10019283B2 (en) * | 2015-06-22 | 2018-07-10 | Advanced Micro Devices, Inc. | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread |
US9779469B2 (en) * | 2015-08-17 | 2017-10-03 | Qualcomm Incorporated | Register spill management for general purpose registers (GPRs) |
US9778961B2 (en) | 2015-09-14 | 2017-10-03 | Qualcomm Incorporated | Efficient scheduling of multi-versioned tasks |
US10649810B2 (en) | 2015-12-28 | 2020-05-12 | Advanced Micro Devices, Inc. | Data driven scheduler on multiple computing cores |
US10210593B2 (en) * | 2016-01-28 | 2019-02-19 | Qualcomm Incorporated | Adaptive context switching |
US10853904B2 (en) | 2016-03-24 | 2020-12-01 | Advanced Micro Devices, Inc. | Hierarchical register file at a graphics processing unit |
US20180046577A1 (en) | 2016-08-15 | 2018-02-15 | National Taiwan University | Thread block managing method, warp managing method and non-transitory computer readable recording medium can perform the methods |
US20180046474A1 (en) * | 2016-08-15 | 2018-02-15 | National Taiwan University | Method for executing child kernels invoked on device side utilizing dynamic kernel consolidation and related non-transitory computer readable medium |
US11599541B2 (en) * | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US10026145B2 (en) * | 2016-12-13 | 2018-07-17 | Qualcomm Incorporated | Resource sharing on shader processor of GPU |
US10474468B2 (en) | 2017-02-22 | 2019-11-12 | Advanced Micro Devices, Inc. | Indicating instruction scheduling mode for processing wavefront portions |
US10261835B2 (en) * | 2017-03-21 | 2019-04-16 | Arm Limited | Hardware thread scheduling |
US10620994B2 (en) | 2017-05-30 | 2020-04-14 | Advanced Micro Devices, Inc. | Continuation analysis tasks for GPU task scheduling |
US20190102224A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corportation | Technologies for opportunistic acceleration overprovisioning for disaggregated architectures |
-
2018
- 2018-05-30 US US15/993,061 patent/US12099867B2/en active Active
-
2019
- 2019-03-27 EP EP19717060.8A patent/EP3803583B1/en active Active
- 2019-03-27 KR KR1020207037427A patent/KR102586988B1/ko active IP Right Grant
- 2019-03-27 JP JP2020566752A patent/JP7320536B2/ja active Active
- 2019-03-27 WO PCT/US2019/024354 patent/WO2019231539A1/en unknown
- 2019-03-27 CN CN201980036426.3A patent/CN112204523A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090150893A1 (en) * | 2007-12-06 | 2009-06-11 | Sun Microsystems, Inc. | Hardware utilization-aware thread management in multithreaded computer systems |
JP2010020683A (ja) * | 2008-07-14 | 2010-01-28 | Nec Electronics Corp | スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム |
CN103562870A (zh) * | 2011-05-11 | 2014-02-05 | 超威半导体公司 | 异构核心的自动加载平衡 |
CN103229580A (zh) * | 2012-12-21 | 2013-07-31 | 华为技术有限公司 | 资源调度的方法和装置 |
CN103336718A (zh) * | 2013-07-04 | 2013-10-02 | 北京航空航天大学 | 一种gpu线程调度优化方法 |
CN104346220A (zh) * | 2013-07-31 | 2015-02-11 | 中国科学院计算技术研究所 | 一种任务调度方法与系统 |
CN104503838A (zh) * | 2014-11-23 | 2015-04-08 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN106325996A (zh) * | 2015-06-19 | 2017-01-11 | 华为技术有限公司 | 一种gpu资源的分配方法及系统 |
CN107145388A (zh) * | 2017-05-25 | 2017-09-08 | 深信服科技股份有限公司 | 一种多任务环境下任务调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP7320536B2 (ja) | 2023-08-03 |
KR102586988B1 (ko) | 2023-10-10 |
EP3803583B1 (en) | 2024-10-09 |
EP3803583A1 (en) | 2021-04-14 |
US20190370059A1 (en) | 2019-12-05 |
US12099867B2 (en) | 2024-09-24 |
WO2019231539A1 (en) | 2019-12-05 |
JP2021526257A (ja) | 2021-09-30 |
KR20210013212A (ko) | 2021-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7320536B2 (ja) | マルチカーネル波面スケジューラ | |
KR102597570B1 (ko) | Gpu 태스크 스케줄링을 위한 연속 분석 태스크 | |
US8775762B2 (en) | Method and apparatus for batching memory requests | |
US10002031B2 (en) | Low overhead thread synchronization using hardware-accelerated bounded circular queues | |
US10503670B2 (en) | Dynamic per-bank and all-bank refresh | |
CN110168497B (zh) | 可变波阵面大小 | |
US10019283B2 (en) | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread | |
US8180998B1 (en) | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations | |
CN112764904A (zh) | 基于多任务系统中防止低优先级任务饿死的方法 | |
CN112041822A (zh) | 在服务于加速器请求时加强中央处理单元服务质量保证 | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
US10558489B2 (en) | Suspend and restore processor operations | |
US8918786B2 (en) | Generating simulated stall signals based on access speed model or history of requests independent of actual processing or handling of conflicting requests | |
US11507522B2 (en) | Memory request priority assignment techniques for parallel processors | |
US11875197B2 (en) | Management of thrashing in a GPU | |
US9817668B2 (en) | Batched replays of divergent operations | |
US11579922B2 (en) | Dynamic graphical processing unit register allocation | |
US11294710B2 (en) | Thread switch for accesses to slow memory | |
CN116594765A (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 |