CN110678847A - 用于gpu任务调度的连续分析任务 - Google Patents

用于gpu任务调度的连续分析任务 Download PDF

Info

Publication number
CN110678847A
CN110678847A CN201880035453.4A CN201880035453A CN110678847A CN 110678847 A CN110678847 A CN 110678847A CN 201880035453 A CN201880035453 A CN 201880035453A CN 110678847 A CN110678847 A CN 110678847A
Authority
CN
China
Prior art keywords
task
queue
packet
tasks
command processor
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
CN201880035453.4A
Other languages
English (en)
Inventor
史蒂文·托尼·泰伊
布莱恩·L·萨姆纳
布拉德福德·迈克尔·贝克曼
苏拉杰·普索尔
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 CN110678847A publication Critical patent/CN110678847A/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/505Allocation 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 load
    • 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/5083Techniques for rebalancing the load in a distributed 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

Abstract

公开了用于实现连续分析任务(CAT)的系统、设备和方法。在一个实施方案中,一种系统实现CAT的硬件加速来管理由多个任务构成的应用的依赖性和调度。在一个实施方案中,连续包由第一任务直接参考。当所述第一任务完成时,所述第一任务将连续包排入第一队列中。所述第一任务可以指定将所述连续包放在哪个队列中。负责所述第一队列的代理使所述连续包退出队列并执行所述连续包,所述连续包调用在确定将哪些依赖任务排入队列之前执行的分析阶段。如果在所述分析阶段期间确定第二任务现在准备好被发起,则将所述第二任务排入所述队列中的一者中。然后,负责该队列的代理使所述第二任务退出队列并执行所述第二任务。

Description

用于GPU任务调度的连续分析任务
背景技术
相关技术的描述
任务并行应用因为能够有效地利用并行执行资源而在高性能计算(HPC)领域中变得日益流行。然而,关于任务并行应用的挑战中的一项是有效地管理依赖性。当前依赖性跟踪和解决方法,诸如异构系统架构的(HSA的)架构队列语言(AQL)屏蔽包或软件管理的集中依赖性跟踪表效率不高。具体地说,当AQL屏蔽包由图形处理单元的(GPU的)命令处理器直接执行时,包本身可能阻隔任务队列并使谨慎的队列管理为必要的。同时,当前软件依赖性跟踪解决方案需要主机中央处理单元(CPU)线程参与GPU调度,这防止依赖任务的低延迟分派。另外,一些软件依赖性跟踪解决方案使用不按比例绘制的集中跟踪表。
附图说明
通过结合附图参考以下描述可以更好地理解本文中描述的方法和机构的优点,附图中:
图1是计算系统的一个实施方案的框图。
图2是计算系统的另一实施方案的框图。
图3是示出用于实现连续分析任务(CAT)的方法的一个实施方案的一般化流程图。
图4是示出用于实现CAT的方法的另一实施方案的一般化流程图。
图5是示出用于实现CAT的方法的另一实施方案的一般化流程图。
图6是示出用于实现CAT的方法的另一实施方案的一般化流程图。
图7是示出用于实现CAT的方法的另一实施方案的一般化流程图。
图8是示出用于使CAT指定CPU任务的方法的一个实施方案的一般化流程图。
图9是示出用于处置内核完成的方法的一个实施方案的一般化流程图。
具体实施方式
在以下描述中,阐述众多具体细节以提供对本文中呈现的方法和机构的透彻理解。然而,本领域技术人员应认识到,可以在没有这些具体细节的情况下实践各种实施方案。在一些情况下,未详细示出众所周知的结构、部件、信号、计算机程序指令和技术以避免使本文中描述的方法模糊不清。应了解,为了简单和清楚地进行说明,图中所示的元件不一定按比例绘制。例如,元件中的一些的尺寸相对于其他元件可能被夸大。
本文中公开了用于实现连续分析任务(CAT)的系统、设备和方法。在一个实施方案中,一种系统包括多个命令处理器、多个队列和多个计算单元。在一个实施方案中,所述系统被配置为实现CAT的硬件加速,所述CAT被设计为处置由多个任务构成的应用的依赖性和调度。CAT可以由指定其母任务的数据结构,由AQL包直接参考,或CAT可以与信号联结。
在各种实施方案中,命令处理器被配置为在多个计算单元上发起多个线程,其中给定任务可以包括多个线程。当第一任务完成时,第一任务将连续包排入给定队列中。在一个实施方案中,第一任务指定将连续包放在哪个队列中。在稍后的时间点,命令处理器使连续包退出队列并执行由连续包指定的一个或多个动作。由连续包指定的动作在本文中可以称作“任务”。在一个实施方案中,如果任务是固定功能动作,则包是包括代码的代理分派包,所述代码指示执行哪个固定功能。固定功能可以由专用硬件或微代码执行,或固定功能可以由CPU上的软件模拟队列实现。如果任务是应用动作,则包是参考执行任务的内核的内核分派包。在其他实施方案中,可以利用其他类型的包。
在另一实施方案中,当第一任务完成时,产生中断以发起连续动作。例如,在该实施方案中,当第一任务完成时,第一任务向给定硬件单元产生中断,所述硬件单元将以中断的有效负载指定的动作进行响应。所述动作可以涉及发起分析任务,执行固定功能,和/或其他任务。
当连续包发起CAT以执行分析阶段时,在分析阶段期间执行的动作的特定类型在不同实施方案中可以是不同的。在一个实施方案中,分析阶段可以包括确定既然第一任务已经完成哪些任务准备好被发起。如果在分析阶段期间确定依赖于第一任务的第二任务准备好被发起,则将对应于第二任务的第二包排入多个队列中的指定队列中。然后,命令处理器使发起第二任务的第二包退出队列并执行第二包。在另一实施方案中,分析阶段可以导致确定多个任务现在准备好被发起,并且可以将多个包排入指定队列中以致使发起这些多个任务。
现在参考图1,示出了计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括联接到存储器180的片上系统(SoC)105。SoC 105也可以称作集成电路(IC)。在一个实施方案中,SoC 105包括中央处理单元(CPU)165的处理单元175A-N、输入/输出(I/O)接口155、高速缓冲存储器160A-B、构造120、图形处理单元(GPU)130、本地存储器110和存储器控制器150。SoC 105还可以包括图1中未示出的其他部件以避免使图模糊不清。处理单元175A-N表示任何数目和类型的处理单元。在一个实施方案中,处理单元175A-N是CPU核。在另一实施方案中,处理单元175A-N中的一个或多个是其他类型的处理单元(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP))。CPU 165的处理单元175A-N联接到高速缓冲存储器160A-B和构造120。
在一个实施方案中,处理单元175A-N被配置为执行特定指令集架构(ISA)的指令。每个处理单元175A-N包括一个或多个执行单元、高速缓冲存储器、调度器、分支预测电路等等。在一个实施方案中,处理单元175A-N被配置为执行系统100的主控制软件,诸如操作系统。一般来说,由处理单元175A-N在使用期间执行的软件可以控制系统100的其他部件来实现系统100的期望功能。处理单元175A-N还可以执行其他软件,诸如应用程序。
在一个实施方案中,GPU 130被配置为执行图形管线操作,诸如绘制命令、像素操作、几何计算、光栅化操作,和用于将图像渲染到显示器的其他操作。在另一实施方案中,GPU 130被配置为执行与图形无关的操作。在进一步实施方案中,GPU 130被配置为执行图形操作和非图形相关操作。
GPU 130至少包括命令处理器135A-N、硬件队列140A-N和计算单元145A-N。应理解,命令处理器的数目可以不同于硬件队列的数目以及不同于计算单元的数目。还应理解,命令处理器、硬件队列与计算单元之间的一对一对应关系的出现不是必要的并且仅仅为了易于说明而示出。命令处理器135A-N表示用于从硬件队列140A-N检索并执行包的任何数目和类型的命令处理器。在一个实施方案中,将“包”定义为对单个命令进行编码的存储器缓冲器。可以将不同类型的包存储在硬件队列140A-N中。例如,用于分派内核的包称作“内核分派包”。
计算单元145A-N表示用于图形处理或通用处理的任何数目和类型的计算单元。每个计算单元145A-N包括任何数目的执行单元,其中每个计算单元的执行单元的数目在不同实施方案之间是不同的。在一些实施方案中,计算单元可以是虚拟的(例如,虚拟机)。各种这类实施方案是可能的并且预期的。GPU 130联接到本地存储器110和构造120。在一个实施方案中,本地存储器110使用高带宽存储器(HBM)来实现。本地存储器110与存储器180的组合在本文中可以称作“存储器子系统”。或者,本地存储器110或存储器180在本文中可以称作“存储器子系统”。
在一个实施方案中,当第一任务完成执行时,第一任务指定将排入指定队列中的连续包。应注意,“任务”也可以称作“内核”。如本文中所使用,将术语“连续包”定义为对一个或多个命令进行编码的数据单元和/或指向可执行代码的指针。在一个实施方案中,将“连续包”定义为响应于第一任务完成而排入指定队列中的包,其中包响应于从指定队列退出而致使执行一个或多个连续动作。当包退出队列时发起第一任务的包在本文中可以称作“普通包”以与“连续包”进行区分。在一个实施方案中,普通包含有或参考连续包和目标队列ID。当普通包中指定的任务完成时,将自动将连续包排入目标队列中。
当第一任务完成时,将连续包排入硬件队列140A-N中的一者中。也可以将连续包排入其他代理的AQL队列中,包括CPU 165的AQL队列。应注意,可以通过调度器将AQL队列映射到硬件队列。在一个实施方案中,第一任务指定硬件队列140A-N中的哪个硬件队列用于将连续包排入其中。然后,在将连续包排入队列之后,命令处理器135A-N中的命令处理器使连续包退出队列并执行连续包。在一个实施方案中,在将第二任务排入硬件队列140A-N中的一者中之前,连续包发起CAT,所述CAT执行一个或多个功能。这些功能执行动作,所述动作可以包括将进一步任务排入队列中。这些功能还可以执行其他类型的动作,诸如自动更新由未来CAT检查的全局存储器数据结构。在一个实施方案中,CAT确定是否满足允许执行第二任务和任何额外任务的所有依赖性。
在另一实施方案中,CAT确定(CPU 165的)计算单元145A-N和/或处理单元175A-N的当前工作负载并将第二任务和任何额外任务指派给指定队列,其目标为平衡计算单元145A-N和/或处理单元175A-N上的负载。应注意,给定队列将由负责在特定计算单元或处理单元上分派内核的命令处理器处理。在进一步实施方案中,CAT确定哪些任务在关键路径上,然后CAT致使按基于将在关键路径上的任务列入优先的顺序将任务排入队列中。
I/O接口155联接到构造120,并且I/O接口155表示任何数目和类型的接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(快速PCI)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置可以联接到I/O接口155。这类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等等。
SoC 105联接到存储器180,所述存储器包括一个或多个存储器模块。存储器模块中的每一者包括安装在其上的一个或多个存储器装置。在一些实施方案中,存储器180包括安装在母板或其他载体上的一个或多个存储器装置,SoC 105也安装在所述母板或其他载体上。在一个实施方案中,存储器180用于实现随机存取存储器(RAM)以在操作期间与SoC105一起使用。实现的RAM可以是静态RAM(SRAM)、动态RAM(DRAM)、电阻RAM(ReRAM)、相变RAM(PCRAM),或任何其他易失性或非易失性RAM。用来实现存储器180的DRAM的类型包括(但不限于)双倍数据速率(DDR)DRAM、DDR2 DRAM、DDR3 DRAM等等。尽管图1中未明确示出,但SoC105还可以包括在处理单元175A-N和/或计算单元145A-N内部的一个或多个高速缓冲存储器。在一些实施方案中,SoC 105包括由处理单元175A-N利用的高速缓冲存储器160A-B。应注意,高速缓冲存储器160A-B表示可以包括在SoC 105中的任何数目的高速缓冲存储器。在一个实施方案中,高速缓冲存储器160A-B是包括高速缓冲存储器控制器的高速缓冲存储器子系统的一部分。
应注意,字母“N”当在本文中紧接着各种结构显示时意味着通常指示该结构的任何数目个元件(例如,CPU 165中的任何数目的处理单元175A-N,包括一个处理单元)。另外,图1中使用字母“N”的不同附图标记(例如,计算单元145A-N)不旨在指示提供相等数目的不同元件(例如,CPU 165中的处理单元175A-N的数目可以不同于GPU130的计算单元145A-N的数目)。
在各种实施方案中,计算系统100可以是计算机、膝上型计算机、移动装置、服务器或各种其他类型的计算系统或装置中的任一者。应注意,计算系统100和/或SoC 105的部件的数目在不同实施方案中可以是不同的。可能存在比图1中所示的数目更多或更少的每个部件/子部件。还应注意,计算系统100和/或SoC 105可以包括图1中未示出的其他部件。另外,在其他实施方案中,计算系统100和SoC 105可以除了图1中所示的之外的方式构造。
现在转向图2,示出了计算系统200的另一实施方案的框图。计算系统200至少包括GPU 210、CPU 215和存储器220。存储器220表示可由GPU 210和CPU 215存取的任何数目和类型的存储器装置。命令处理器240A-N表示任何数目和类型的命令处理器。在一个实施方案中,每个命令处理器240A-N等效于另一命令处理器240A-N。在另一实施方案中,不同类型的命令处理器包括在命令处理器240A-N中。每个命令处理器240A-N被配置为从对应的一组队列230A-N检索包并处理所述包。如果包是内核分派包,则命令处理器240A-N被配置为在计算单元245A-N中的一个或多个上起始内核。
计算单元245A-N表示任何数目和类型的计算单元。每个计算单元245A-N包括任何数目的执行单元,其中执行单元的数目在不同实施方案之间是不同的。在一个实施方案中,每个计算单元245A-N包括或联接到对应的高速缓冲存储器250A-N。而且,计算单元245A-N联接到共享的高速缓冲存储器255。在其他实施方案中,计算单元245A-N可以存取其他类型的高速缓冲存储器结构和/或储存器子系统。
队列230A-N表示分配在存储器220中的任何数目和类型的队列。每一组队列230A-N包括任何数目的队列。在一个实施方案中,按顺序处理存储在队列230A-N中的每个队列中的包。因此,在该实施方案中,将队列230A-N中的每个队列作为先进先出(FIFO)队列处理。在一个实施方案中,队列230A-N中的不同队列被配置为存储不同类型的包。包是对一个或多个命令进行编码的存储器缓冲器,并且包还可以包括指向存储在存储器220中其他地方的可执行代码的指针。在一个实施方案中,包(例如,AQL包)包括单个命令。
在一个实施方案中,将每个队列230A-N指派给命令处理器240A-N中的单独的命令处理器。例如,在该实施方案中,通过命令处理器240A检索和处理存储在队列230A中的包,通过命令处理器240B检索和处理存储在队列230B中的包,等等。另外,在一个实施方案中,该组队列230A-N中的一个或多个由将任务分派给CPU 215的命令处理器监测。
当给定任务在系统200上完成执行时,给定任务可以将连续包排入队列中。给定任务参考连续包并指定队列230A-N中的应将连续包排入其中的队列。然后,在一个实施方案中,当通过负责存储连续包的队列的代理处理连续包时,将发起CAT。取决于实施方案,当通过对应的命令处理器240A-N从队列中选择连续包时,CAT可以起始一个或多个功能。在一个实施方案中,CAT确定既然先前任务已经完成哪些任务准备好被执行。例如,在该实施方案中,CAT可以检查各种依赖性并确定任何任务是否准备好被执行。如果CAT确定给定任务现在准备好被执行,则CAT将给定任务排入队列230A-N中的适当队列中。
在另一实施方案中,CAT执行分析阶段。例如,CAT可以执行负载平衡分析来确定系统的状态并基于系统的状态确定应在计算单元和/或CPU中的哪个上执行依赖任务。在其他实施方案中,CAT可以起始其他类型的功能。
在进一步实施方案中,CAT由原始任务识别,并且当原始任务完成时,产生中断以开始识别的CAT。在该实施方案中,CAT存储在存储器220中的位置,并且中断包括指向CAT的地址的指针。
现在参考图3,示出了用于实现连续分析任务(CAT)的方法300的一个实施方案。出于讨论的目的,按顺序示出了本实施方案和图4至图8的实施方案中的步骤。然而,应注意,在所描述的方法的各种实施方案中,同时地、以与所示不同的顺序执行所描述的元素中的一个或多个,或完全省略所描述的元素中的一个或多个。在需要时也执行其他额外元素。本文中描述的各种系统或设备中的任一者被配置为实现方法300。
系统在一个或多个计算单元上执行第一任务(方框305)。第一任务指定连续包和当第一任务完成时将连续包排入其中的第一队列(方框310)。系统响应于完成第一任务而将连续包排入第一队列中(方框315)。在一个实施方案中,系统包括多个计算单元、一个或多个命令处理器以及多个队列。在一个实施方案中,对于给定队列,通过对应的命令处理器按顺序处理存储在给定队列中的包。然而,排入不同队列中的包不一定相对于其他队列中的包按顺序处理。接下来,第一命令处理器使连续包从第一队列退出(方框320)。然后,第一命令处理器执行连续包以发起连续分析任务(CAT),所述CAT将一个或多个任务排入一个或多个不同队列中以作为执行一个或多个功能的一部分,其中一个或多个任务依赖于第一任务(方框325)。应注意,致使发起CAT的连续包在本文中也可以称作“CAT包”。在一个实施方案中,CAT发现多个任务已被解除封锁并且试图将所有这些任务排入队列中,其中每个任务可能被排入不同队列中。一般来说,一个或多个任务可以包括排入给定队列中的第二任务。在一个实施方案中,给定队列不同于第一队列。在另一实施方案中,给定队列是与第一队列相同的队列。在一个实施方案中,CAT识别用于将第二任务排入其中的指定队列。在方框325之后,方法300结束。
在一个实施方案中,由CAT执行的一个或多个功能包括确定是否满足允许将第二任务(以及任选地一个或多个其他任务)排入给定队列中的一个或多个依赖性。在该实施方案中,第一命令处理器被配置为响应于确定满足一个或多个依赖性而将第二任务排入给定队列中。在另一实施方案中,由CAT执行的一个或多个功能包括确定多个计算单元的负载平衡状态以及响应于确定给定计算单元上的负载低于阈值而选择对应于所述给定计算单元的队列来将第二任务排入其中。
现在转向图4,示出了用于实现连续分析任务(CAT)的方法400的另一实施方案。第一任务在系统的一个或多个计算单元上执行(方框405)。在一个实施方案中,系统包括多个计算单元、一个或多个命令处理器以及多个队列。而且,第一任务指定当第一任务完成时应执行的连续分析任务(CAT)(方框410)。然后,响应于第一任务完成而产生中断以发起CAT(方框415)。响应于产生中断,命令处理器执行CAT(方框420)。然后,CAT将第二任务排入给定队列中以作为执行一个或多个功能的一部分,其中第二任务依赖于第一任务(方框425)。在一些实施方案中,CAT将多个任务排入一个或多个队列中。在方框425之后,方法400结束。
现在参考图5,示出了用于实现连续分析任务(CAT)的方法500的另一实施方案。命令处理器将一组GPU任务队列映射到可用的硬件队列槽口(方框505)。该组GPU任务队列可以包括任何数目的任务队列。在一个实施方案中,通过多个命令处理器中的对应的命令处理器来监测每个任务队列。接下来,命令处理器处理致使发起内核的第一包(方框510)。在一个实施方案中,第一包是架构队列语言(AQL)包。
然后,在稍后的时间点,当内核完成时,内核指定连续包和将连续包排入哪里(方框515)。接下来,命令处理器使连续包退出队列并执行连续包(方框520)。连续包调用执行连续分析任务(CAT)的内核以将一个或多个第二包排入队列中(方框525)。在一个实施方案中,命令处理器是在多线程命令处理器上运行的线程。命令处理器紧密地集成在GPU存储器系统和GPU的任务调度和完成接口内。因此,在CP上执行CAT比在CPU主机上执行类似的功能效率更高。在方框525之后,方法500结束。
现在转向图6,示出了用于实现连续分析任务(CAT)的方法600的另一实施方案。命令处理器将一组GPU任务队列映射到可用的硬件队列槽口(方框605)。该组GPU任务队列可以包括任何数目的任务队列。在一个实施方案中,通过多个命令处理器中的对应的命令处理器来监测每个任务队列。接下来,命令处理器处理致使发起内核的第一包(方框610)。
然后,在稍后的时间点,内核完成并指定连续包和将连续包排入哪里(方框615)。然后,在稍后的时间点,命令处理器使连续包退出队列并执行连续包,所述连续包发起连续分析任务(CAT)以评估依赖任务的依赖性逻辑(方框620)。如果已经解决依赖任务的所有依赖性(条件方框625,“是”支路),则命令处理器将依赖任务排入指定队列中(方框630)。否则,如果没有解决依赖任务的所有依赖性(条件方框625,“否”支路),则CAT完成而不将依赖任务排入队列中(方框635)。在方框630和635之后,方法600结束。
现在参考图7,示出了用于实现连续分析任务(CAT)的方法700的另一实施方案。命令处理器将一组GPU任务队列映射到可用的硬件队列槽口(方框705)。该组GPU任务队列可以包括任何数目的任务队列。在一个实施方案中,通过多个命令处理器中的对应的命令处理器来监测每个任务队列。接下来,命令处理器处理致使发起内核的第一包(方框710)。
然后,在稍后的时间点,内核完成并指定连续包和将连续包排入哪里(方框715)。然后,在稍后的时间点,命令处理器使连续包退出队列并执行连续包,所述连续包发起连续分析任务(CAT)以评估多个依赖任务的依赖性逻辑(方框720)。如果多个任务在等待由该任务产生的未来(条件方框725,“是”支路),则命令处理器取决于依赖任务距应用的最终任务的距离而将依赖任务排入指定队列中(方框730)。在一个实施方案中,命令处理器执行CAT以通过评估每个依赖任务在任务依赖性图或任务依赖性图的一部分中距出口节点(即,最后任务)的距离来优化将依赖任务排入队列中的顺序。通过将距出口节点的距离进行比较,CAT确定哪些依赖任务在完成应用的关键路径上并将这些依赖任务列入优先。在一个实施方案中,CAT读取GPU性能计数器并取决于先前任务的高速缓冲存储器位置而将依赖任务排入队列中。
否则,如果没有多个任务在等待该任务产生的未来(条件方框725,“否”支路),则CAT完成并将其依赖性已满足的任何任务排入队列中(方框735)。在方框730和735之后,方法700结束。在方法700的一个实施方案中,CAT评估应用特定的“未来”。未来是最初在函数编程中引入的众所周知的并行编程概念。基本上未来是最初未知的结果的代表并且应用使用未来来识别任务之间的数据依赖性。在母任务产生未来变量后,等待未来的子任务可以进行。另外,多个任务可以依赖于共享的未来,因此针对命令处理器产生的CAT可以创建依赖于共享的未来的多个子任务并将所述多个子任务排入队列中。
现在转向图8,示出了用于使CAT指定CPU任务的方法800的一个实施方案。命令处理器将一组GPU任务队列映射到可用的硬件队列槽口(方框805)。在一个实施方案中,将每个GPU任务队列分配在存储器中,并且命令处理器在方框805中确定每个GPU任务队列的地址。接下来,命令处理器处理致使发起由第一包指定的内核的第一包(方框810)。
当内核完成时,内核指定连续包和将连续包排入哪里(方框815)。然后,CPU线程使连续包退出队列并执行连续包以将CPU任务排入CPU软件队列中(方框820)。在方框820之后,方法800结束。在方法800的一个实施方案中,连续包致使发起分析由GPU产生的结果的CPU任务。在其他实施方案中,连续包可以致使在其他装置(诸如其他GPU、DSP、FPGA、ASIC或其他装置)上发起任务。
现在参考图9,示出了用于处置内核完成的方法900的一个实施方案。命令处理器处理第一AQL包以发起内核(方框905)。内核完成并且命令处理器将与第一AQL包相关联的CAT包排入由第一AQL包指定的AQL队列中(方框910)。CAT包和CAT包所放置的AQL队列可以是任何队列,包括由GPU或CPU处理的队列。执行可以是任何包的CAT可以评估依赖性,并且如果满足则可以将额外的AQL包排入可以执行所述额外的AQL包的AQL队列中。这允许GPU包的完成具有导致在GPU上评估更多GPU包的依赖性,同时还允许导致在CPU上执行CPU通知的依赖性。执行依赖性分析的计算可以是从完全一般的内核到由在GPU或CPU上实现的代理分派AQL队列处理的专用包的任何动作。在方框910之后,方法900结束。
在各种实施方案中,软件应用程序的程序指令用以实现先前描述的方法和/或机构。程序指令用编程语言(诸如C)描述硬件的行为。替代地,使用硬件设计语言(HDL),诸如Verilog。将程序指令存储在非暂时性计算机可读存储介质上。各种类型的存储介质是可用的。存储介质可由计算系统在使用期间存取以向计算系统提供程序指令和随附数据以用于程序执行。计算系统至少包括一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应强调,上述实施方案仅仅是实现方式的非限制性示例。在完全了解以上公开内容后,各种变化和修改对本领域技术人员来说将变得显而易见。旨在将随附权利要求解释为涵盖所有此类变化和修改。

Claims (20)

1.一种系统,所述系统包括:
多个计算单元;
一个或多个命令处理器;以及
多个队列;
其中所述系统被配置为:
在一个或多个计算单元上执行第一任务;
通过所述第一任务指定连续包和当所述第一任务完成时将所述连续包排入其中的第一队列;
响应于完成所述第一任务而将所述连续包排入所述第一队列中;以及
通过第一命令处理器使所述连续包退出队列并执行所述连续包,其中所述连续包致使将一个或多个任务排入一个或多个队列中,其中所述一个或多个任务依赖于所述第一任务。
2.如权利要求1所述的系统,其中所述一个或多个任务包括排入给定队列中的第二任务,其中由所述第一命令处理器执行的一个或多个功能包括确定是否满足允许将所述第二任务排入所述给定队列中的一个或多个依赖性。
3.如权利要求2所述的系统,其中所述第一命令处理器被配置为响应于确定满足所述一个或多个依赖性而将所述第二任务排入所述给定队列中,并且其中所述一个或多个任务指定用于将所述第二任务排入其中的所述给定队列。
4.如权利要求2所述的系统,其中所述一个或多个功能包括:
确定所述多个计算单元的负载平衡状态;以及
响应于确定第一计算单元上的负载低于阈值而选择对应于所述第一计算单元的队列来将所述第二任务排入其中。
5.如权利要求1所述的系统,其中所述系统包括图形处理单元(GPU)和中央处理单元(CPU),并且其中所述第一命令处理器是在多线程命令处理器上运行的线程,所述多线程命令处理器集成在所述GPU和所述GPU的任务调度和完成接口内。
6.如权利要求1所述的系统,其中按顺序处理存储在所述多个队列中的每个队列中的包。
7.如权利要求1所述的系统,所述系统还包括中央处理单元(CPU),其中所述CPU使所述连续包退出队列并执行所述连续包以致使将第二任务排入CPU软件队列中。
8.一种方法,所述方法包括:
在一个或多个计算单元上执行第一任务;
通过所述第一任务指定连续包和当所述第一任务完成时将所述连续包排入其中的第一队列;
响应于完成所述第一任务而将所述连续包排入所述第一队列中;以及
通过第一命令处理器使所述连续包退出队列并执行所述连续包,其中所述连续包致使将一个或多个任务排入一个或多个队列中,其中所述一个或多个任务依赖于所述第一任务。
9.如权利要求8所述的方法,其中所述一个或多个任务包括排入给定队列中的第二任务,其中由所述第一命令处理器执行的一个或多个功能包括确定是否满足允许将所述第二任务排入所述给定队列中的一个或多个依赖性。
10.如权利要求9所述的方法,其中所述第一命令处理器被配置为响应于确定满足所述一个或多个依赖性而将所述第二任务排入所述给定队列中,并且其中所述一个或多个任务指定用于将所述第二任务排入其中的所述给定队列。
11.如权利要求9所述的方法,其中所述一个或多个功能包括:
确定多个计算单元的负载平衡状态;以及
响应于确定第一计算单元上的负载低于阈值而选择对应于所述第一计算单元的队列来将所述第二任务排入其中。
12.如权利要求8所述的方法,其中所述第一命令处理器是在多线程命令处理器上运行的线程,所述多线程命令处理器集成在图形处理单元(GPU)和所述GPU的任务调度和完成接口内。
13.如权利要求8所述的方法,其中按顺序处理存储在多个队列中的每个队列中的包。
14.如权利要求8所述的方法,所述方法还包括通过中央处理单元(CPU)使所述连续包退出队列并执行所述连续包以致使将第二任务排入CPU软件队列中。
15.一种设备,所述设备包括:
一个或多个命令处理器;以及
多个队列;
其中所述设备被配置为:
在一个或多个计算单元上执行第一任务;
通过所述第一任务指定连续包和当所述第一任务完成时将所述连续包排入其中的第一队列;
响应于完成所述第一任务而将所述连续包排入所述第一队列中;以及
通过第一命令处理器使所述连续包退出队列并执行所述连续包,其中所述连续包致使将一个或多个任务排入一个或多个队列中,其中所述一个或多个任务依赖于所述第一任务。
16.如权利要求15所述的设备,其中所述一个或多个任务包括排入给定队列中的第二任务,其中由所述第一命令处理器执行的一个或多个功能包括确定是否满足允许将所述第二任务排入所述给定队列中的一个或多个依赖性。
17.如权利要求16所述的设备,其中所述第一命令处理器被配置为响应于确定满足所述一个或多个依赖性而将所述第二任务排入所述给定队列中,并且其中所述一个或多个任务指定用于将所述第二任务排入其中的所述给定队列。
18.如权利要求16所述的设备,其中所述一个或多个功能包括:
确定多个计算单元的负载平衡状态;以及
响应于确定第一计算单元上的负载低于阈值而选择对应于所述第一计算单元的队列来将所述第二任务排入其中。
19.如权利要求15所述的设备,其中所述设备包括图形处理单元(GPU)和中央处理单元(CPU),并且其中所述第一命令处理器是在多线程命令处理器上运行的线程,所述多线程命令处理器集成在所述GPU和所述GPU的任务调度和完成接口内。
20.如权利要求15所述的设备,其中按顺序处理存储在所述多个队列中的每个队列中的包。
CN201880035453.4A 2017-05-30 2018-05-25 用于gpu任务调度的连续分析任务 Pending CN110678847A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/607,991 2017-05-30
US15/607,991 US10620994B2 (en) 2017-05-30 2017-05-30 Continuation analysis tasks for GPU task scheduling
PCT/US2018/034601 WO2018222522A1 (en) 2017-05-30 2018-05-25 Continuation analysis tasks for gpu task scheduling

Publications (1)

Publication Number Publication Date
CN110678847A true CN110678847A (zh) 2020-01-10

Family

ID=62705684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880035453.4A Pending CN110678847A (zh) 2017-05-30 2018-05-25 用于gpu任务调度的连续分析任务

Country Status (6)

Country Link
US (2) US10620994B2 (zh)
EP (1) EP3631636B1 (zh)
JP (1) JP7092801B2 (zh)
KR (1) KR102597570B1 (zh)
CN (1) CN110678847A (zh)
WO (1) WO2018222522A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114995882A (zh) * 2022-07-19 2022-09-02 沐曦集成电路(上海)有限公司 一种异构结构系统包处理的方法
WO2023142091A1 (zh) * 2022-01-29 2023-08-03 华为技术有限公司 计算任务调度装置、计算装置、计算任务调度方法和计算方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620994B2 (en) 2017-05-30 2020-04-14 Advanced Micro Devices, Inc. Continuation analysis tasks for GPU task scheduling
US20190317825A1 (en) * 2018-04-16 2019-10-17 Kazuhm, Inc. System for managing deployment of distributed computing resources
US11494237B2 (en) 2019-06-26 2022-11-08 Microsoft Technology Licensing, Llc Managing workloads of a deep neural network processor
US11055130B2 (en) 2019-09-15 2021-07-06 Mellanox Technologies, Ltd. Task completion system
US11822973B2 (en) * 2019-09-16 2023-11-21 Mellanox Technologies, Ltd. Operation fencing system
US11436055B2 (en) * 2019-09-28 2022-09-06 Apple Inc. Execution graph acceleration
US11275586B2 (en) 2020-05-29 2022-03-15 Advanced Micro Devices, Inc. Task graph generation for workload processing
US11481256B2 (en) 2020-05-29 2022-10-25 Advanced Micro Devices, Inc. Task graph scheduling for workload processing
KR102245208B1 (ko) * 2020-09-07 2021-04-28 박성빈 다중처리방법 및 그 장치
US11809902B2 (en) * 2020-09-24 2023-11-07 Advanced Micro Devices, Inc. Fine-grained conditional dispatching
US20220197696A1 (en) * 2020-12-23 2022-06-23 Advanced Micro Devices, Inc. Condensed command packet for high throughput and low overhead kernel launch
US11966631B2 (en) * 2021-04-16 2024-04-23 Western Digital Technologies, Inc. Command queue order adjustment in a data storage device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294536A (zh) * 2012-01-31 2013-09-11 辉达公司 控制用于处理任务的工作分布
US20140337389A1 (en) * 2013-05-08 2014-11-13 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
CN104426799A (zh) * 2013-08-26 2015-03-18 Vm维尔股份有限公司 通信量和负载感知动态队列管理

Family Cites Families (45)

* Cited by examiner, † Cited by third party
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
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
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
CN103765384A (zh) 2011-09-02 2014-04-30 飞思卡尔半导体公司 数据处理系统和在数据处理系统中进行任务调度的方法
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
US20130226535A1 (en) 2012-02-24 2013-08-29 Jeh-Fu Tuan Concurrent simulation system using graphic processing units (gpu) and method thereof
US9135077B2 (en) * 2012-03-16 2015-09-15 Advanced Micro Devices, Inc. GPU compute optimization via wavefront reforming
US9928109B2 (en) * 2012-05-09 2018-03-27 Nvidia Corporation Method and system for processing nested stream events
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
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
US9652284B2 (en) 2013-10-01 2017-05-16 Qualcomm Incorporated GPU divergence barrier
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
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
US10853904B2 (en) 2016-03-24 2020-12-01 Advanced Micro Devices, Inc. Hierarchical register file at a graphics processing unit
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294536A (zh) * 2012-01-31 2013-09-11 辉达公司 控制用于处理任务的工作分布
US20140337389A1 (en) * 2013-05-08 2014-11-13 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
CN104426799A (zh) * 2013-08-26 2015-03-18 Vm维尔股份有限公司 通信量和负载感知动态队列管理

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023142091A1 (zh) * 2022-01-29 2023-08-03 华为技术有限公司 计算任务调度装置、计算装置、计算任务调度方法和计算方法
CN114995882A (zh) * 2022-07-19 2022-09-02 沐曦集成电路(上海)有限公司 一种异构结构系统包处理的方法
CN114995882B (zh) * 2022-07-19 2022-11-04 沐曦集成电路(上海)有限公司 一种异构结构系统包处理的方法

Also Published As

Publication number Publication date
JP2020522797A (ja) 2020-07-30
EP3631636B1 (en) 2023-03-15
US11544106B2 (en) 2023-01-03
US20200379802A1 (en) 2020-12-03
EP3631636A1 (en) 2020-04-08
KR102597570B1 (ko) 2023-11-02
JP7092801B2 (ja) 2022-06-28
US10620994B2 (en) 2020-04-14
KR20200011958A (ko) 2020-02-04
US20180349145A1 (en) 2018-12-06
WO2018222522A1 (en) 2018-12-06

Similar Documents

Publication Publication Date Title
US11544106B2 (en) Continuation analysis tasks for GPU task scheduling
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US9135077B2 (en) GPU compute optimization via wavefront reforming
US7627744B2 (en) External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US8963933B2 (en) Method for urgency-based preemption of a process
KR102466984B1 (ko) 중앙 프로세싱 유닛(cpu)과 보조 프로세서 사이의 개선된 함수 콜백 메커니즘
US9678806B2 (en) Method and apparatus for distributing processing core workloads among processing cores
JP6336399B2 (ja) マルチスレッドコンピューティング
US9507632B2 (en) Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta
US11029968B1 (en) Operating system with a single kernel stack per processor
CN110168497B (zh) 可变波阵面大小
US10795722B2 (en) Compute task state encapsulation
US20230120934A1 (en) Gpu networking using an integrated command processor
US9122522B2 (en) Software mechanisms for managing task scheduling on an accelerated processing device (APD)
US10664282B1 (en) Runtime augmentation of engine instructions
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
US10558489B2 (en) Suspend and restore processor operations
US10255104B2 (en) System call queue between visible and invisible computing devices
US10127076B1 (en) Low latency thread context caching
US20130135327A1 (en) Saving and Restoring Non-Shader State Using a Command Processor
US20110247018A1 (en) API For Launching Work On a Processor
US9921891B1 (en) Low latency interconnect integrated event handling
CN112559403B (zh) 一种处理器及其中的中断控制器
KR20190116260A (ko) 보류 로드 및 스토어의 별도 추적

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