CN107871301A - 在gpu中的任务调度 - Google Patents

在gpu中的任务调度 Download PDF

Info

Publication number
CN107871301A
CN107871301A CN201710864618.6A CN201710864618A CN107871301A CN 107871301 A CN107871301 A CN 107871301A CN 201710864618 A CN201710864618 A CN 201710864618A CN 107871301 A CN107871301 A CN 107871301A
Authority
CN
China
Prior art keywords
task
type
queue
data
correlation
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.)
Granted
Application number
CN201710864618.6A
Other languages
English (en)
Other versions
CN107871301B (zh
Inventor
西蒙·尼尔德
亚当·德格拉斯
卢卡·尤利亚诺
奥利·莫厄尔
Y-C·弗
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN107871301A publication Critical patent/CN107871301A/zh
Application granted granted Critical
Publication of CN107871301B publication Critical patent/CN107871301B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/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/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals
    • 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)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及在GPU内的任务调度。描述了在GPU或其他高度并行处理单元内调度任务的方法,其是年龄感知和唤醒事件驱动的。接收到的任务被添加到基于年龄的任务队列。任务类型或者任务类型和数据组的组合的唤醒事件位响应于任务相关性的完成来进行设置,并且这些唤醒事件位用于从队列中选择满足预定义标准的最旧的任务。

Description

在GPU中的任务调度
技术领域
本申请涉及,但不限于,在GPU中的任务调度。
背景
图形处理单元(GPU)包括高度并行的结构,其被设计为并行地对大量数据进行高效处理。GPU通常用于计算机图形(例如,在屏幕上渲染3D图像),但是它们也可用于受益于其所提供的并行性的其他操作。
以下所描述的实施例仅通过示例来提供,并且不限于解决已知GPU的任何或所有缺点的实现。
概述
提供本概述来以简化的形式引入概念的选择,以下在详细描述中对这些概念进一步描述。本概述并非旨在确定要求保护的主题的关键特征或必要特征,亦非旨在用于限定要求保护的主题的范围。
描述了在GPU或其他高度并行处理单元内调度任务的方法,其是年龄感知(age-aware)和唤醒事件驱动的。收到的任务被添加到基于年龄的任务队列(age-based taskqueue)。任务类型或者任务类型和数据组的组合的唤醒事件位响应于任务相关性的完成来进行设置,并且这些唤醒事件位用于从满足预定义标准的队列中选择最旧的任务。
第一方面提供了在处理器内调度任务的方法,每个任务具有任务类型标识符,该方法包括:响应于在任务调度引擎处接收到任务队列中的任务的相关性完成的指示,更新与所完成的相关性相关的任务的状态数据,并设置与任务的任务类型标识符对应的任务类型的唤醒事件状态数据;基于唤醒事件状态数据来识别一个或更多个候选任务类型;选择候选任务类型中的一个;识别任务队列中的所选任务类型的最旧的未执行的任务;以及响应于确定所选任务类型的所识别的任务其所有相关性都被满足,选择该任务以执行。
第二方面提供了用于处理器的调度器,该调度器包括:任务调度引擎;任务队列;以及被布置为存储唤醒状态数据的数据存储装置,以及其中,任务调度引擎包括:第一硬件逻辑块,其被布置为响应于接收到任务队列中的任务的相关性完成的指示,清除与所完成的相关性相关的任务的状态数据,并更新与任务的任务类型标识符对应的任务类型的唤醒事件状态数据;第二硬件逻辑块,其被布置为基于唤醒事件状态数据来识别一个或更多个候选任务类型,选择候选任务类型中的一个,识别任务队列中的所选任务类型的最旧的未执行的任务,并响应于确定所选任务类型的所识别的任务其所有相关性都被满足,选择该任务以执行。
第三方面提供了集成电路制造系统,其包括:非暂时性计算机可读存储介质,其具有在其上存储的描述调度器的集成电路的计算机可读描述;布局处理系统,其被配置为对集成电路描述进行处理,以便生成体现调度器的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造调度器,其中,调度器包括:任务调度引擎;任务队列;以及被布置为存储唤醒状态数据的数据存储装置,以及其中,任务调度引擎包括:第一硬件逻辑块,其被布置为响应于接收到任务队列中的任务的相关性完成的指示,清除与所完成的相关性相关的任务的状态数据,并更新与任务的任务类型标识符对应的任务类型的唤醒事件状态数据;第二硬件逻辑块,其被布置为基于唤醒事件状态数据来识别一个或更多个候选任务类型,选择候选任务类型中的一个,识别任务队列中的所选任务类型的最旧的未执行的任务,并响应于确定所选任务类型的所识别的任务其所有相关性被满足,选择该任务以执行。
本申请的实施方式还包括以下内容:
1.一种在处理器内调度任务队列中的任务的方法,所述任务队列包括具有任务类型标识符和识别任何任务特定的相关性的相关联的状态数据的任务,所述方法包括:响应于在任务调度引擎处接收到所述任务队列中的任务的相关性完成的指示,更新与所完成的相关性相关的所述任务的所述状态数据以指示所述相关性已完成,并更新所述处理器的唤醒事件状态数据以指示所述任务的任务类型标识符的唤醒事件;基于指示唤醒事件的所述唤醒事件状态数据来识别一个或更多个候选任务类型;选择所述候选任务类型中的一个;识别所述任务队列中所选择的候选任务类型的最旧的未执行的任务;以及响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
2.根据项1所述的方法,其中,更新与所完成的相关性相关的所述任务的所述状态数据包括清除与所完成的相关性相关的所述任务的状态位。
3.根据项1所述的方法,其中,更新所述任务的所述任务类型标识符的唤醒事件状态数据包括设置与所述任务的所述任务类型标识符对应的任务类型的唤醒事件状态位。
4.根据项1所述的方法,其中,所述任务具有所述任务类型标识符和数据组标识符二者,其中,所述唤醒事件状态数据针对与所述任务的所述任务类型标识符对应的任务类型和与所述任务的所述数据组标识符对应的数据组的组合被更新,以及其中,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务包括:识别所述任务队列中的、是所选择的候选任务类型且具有与已被更新的唤醒事件状态数据对应的任务类型标识符和数据组标识符的最旧的未执行的任务。
5.根据项4所述的方法,其中,唤醒事件状态位针对与所述任务的所述任务类型标识符对应的所述任务类型和与所述任务的所述数据组标识符对应的所述数据组的组合被设置,并且识别所述任务队列中的、是所选择的候选任务类型且具有与已被更新的唤醒事件状态数据对应的任务类型标识符和数据组标识符的最旧的未执行的任务包括:识别所述任务队列中的、是所选择的候选任务类型且具有与已被设置的唤醒事件状态位对应的任务类型标识符和数据组标识符的最旧的未执行的任务。
6.根据项4所述的方法,还包括:响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性没有都被满足,清除所识别的最旧的未执行的任务的所述任务类型标识符和所述数据组标识符的所述唤醒事件状态数据;以及识别所述任务队列中的、是所选择的候选任务类型且具有与已被更新的唤醒事件状态数据对应的任务类型标识符和数据组标识符的另一个最旧的未执行的任务。
7.根据项1所述的方法,还包括:响应于在所述任务调度引擎处接收到任务,将所接收的任务添加到所述任务队列并设置所接收的任务的状态数据以识别所接收的任务的任何相关性。
8.根据项1所述的方法,还包括:响应于在所述任务调度引擎处接收到所述任务已完成执行的指示,将所述任务从所述任务队列中移除。
9.根据项1所述的方法,还包括:响应于在所述任务调度引擎处接收到所述任务已完成执行的指示,确定所述任务是否是多阶段任务的第一阶段任务;响应于确定所述任务不是多阶段任务的第一阶段任务,将所述任务从所述任务队列中移除;以及响应于确定所述任务是多阶段任务的第一阶段任务,对所述多阶段任务的第二阶段任务进行调度。
10.根据项9所述的方法,其中,识别所述任务队列中所选择的候选任务类型的最旧的未执行的任务还包括使对作为多阶段任务的第二阶段任务的任务的识别优先于对不是第二阶段任务的任务的识别。
11.根据项1所述的方法,其中,所述处理器是GPU。
12.根据项1所述的方法,其中,任务定义要在一组数据上运行的程序。
13.一种用于处理器的调度器,包括:任务调度引擎;任务队列,所述任务队列包括具有任务类型标识符和识别任何任务特定的相关性的相关联的状态数据的任务;以及数据存储装置,所述数据存储装置被布置为存储唤醒状态数据,以及其中,所述任务调度引擎包括:第一硬件逻辑块,所述第一硬件逻辑块被布置为响应于接收到所述任务队列中的任务的相关性完成的指示,通过清除与所完成的相关性相关的所述任务的状态数据来更新所述任务的所述状态数据以指示所述相关性已完成,并更新所述处理器的唤醒事件状态数据以指示所述任务的任务类型标识符的唤醒事件;第二硬件逻辑块,所述第二硬件逻辑块被布置为基于指示唤醒事件的所述唤醒事件状态数据来识别一个或更多个候选任务类型,选择所述候选任务类型中的一个,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务,并响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
14.根据项13所述的调度器,其中,所述唤醒状态数据包括多个唤醒状态位,其中,所述第一硬件逻辑块被布置为响应于接收到所述任务队列中的任务的相关性完成的指示,清除与所完成的相关性相关的所述任务的状态位,并更新与所述任务的所述任务类型标识符对应的任务类型的唤醒事件状态位,以及其中,所述第二硬件逻辑块被布置为基于所述唤醒事件状态位来识别一个或更多个候选任务类型,选择所述候选任务类型中的一个,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务,并响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
15.根据项14所述的调度器,其中,所述任务具有所述任务类型标识符和数据组标识符二者,其中,所述第一硬件逻辑块被布置为针对与所述任务的所述任务类型标识符对应的所述任务类型和与所述任务的所述数据组标识符对应的数据组的组合设置唤醒事件状态位,以及其中,所述第二硬件逻辑块被布置为识别具有与已被更新的唤醒事件状态位对应的任务类型标识符和数据组标识符的、所选择的候选任务类型的所述最旧的未执行的任务。
16.根据项15所述的调度器,其中,所述第二硬件逻辑块还被布置为响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性没有都被满足,清除所识别的最旧的未执行的任务的所述任务类型标识符和所述数据组标识符的所述唤醒事件状态位,并识别所述任务队列中的、是所选择的候选任务类型且具有与已被设置的唤醒事件状态位对应的任务类型标识符和数据组标识符的另一最旧的未执行的任务。
17.根据项13所述的调度器,其中,所述任务队列包括与被存储在所述任务队列中的每个任务相关联的状态数据,并且所述调度器还包括:第三硬件逻辑块,所述第三硬件逻辑块被布置为响应于接收到所述任务,将所述任务添加到所述任务队列,并设置所述任务的所述状态数据,以识别所述任务的任何相关性。
18.根据项17所述的调度器,其中,所述状态数据包括多个状态位。
19.根据项13所述的调度器,还包括:第四硬件逻辑块,所述第四硬件逻辑块被布置为响应于接收到所述任务已完成执行的指示,将所述任务从所述任务队列中移除。
20.根据项13所述的调度器,还包括:第四硬件逻辑块,所述第四硬件逻辑块被布置为响应于接收到所述任务已完成执行的指示,确定所述任务是否是多阶段任务的第一阶段任务;以及响应于确定所述任务不是多阶段任务的第一阶段任务,将所述任务从所述任务队列中移除;以及响应于确定所述任务是多阶段任务的第一阶段任务,对所述多阶段任务的第二阶段任务进行调度。
21.根据项20所述的调度器,其中,所述第二硬件逻辑块还被布置为在识别所选择的候选任务类型的所述最旧的未执行的任务时,使对作为多阶段任务的第二阶段任务的任务的识别优先于对不是第二阶段任务的任务的识别。
22.一种集成电路制造系统,包括:非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质具有在其上存储的描述调度器的集成电路的计算机可读描述;布局处理系统,所述布局处理系统被配置为对所述计算机可读描述进行处理,以便生成体现所述调度器的集成电路的电路布局描述;以及集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造所述调度器,其中,所述调度器包括:任务调度引擎;任务队列,所述任务队列包括具有任务类型标识符和识别任何任务特定的相关性的相关联的状态数据的任务;以及数据存储装置,所述数据存储装置被布置为存储唤醒状态数据,以及其中,所述任务调度引擎包括:第一硬件逻辑块,所述第一硬件逻辑块被布置为响应于接收到所述任务队列中的任务的相关性完成的指示,通过清除与所完成的相关性相关的所述任务的状态数据来更新所述任务的所述状态数据以指示所述相关性完成,并更新所述处理器的唤醒事件状态数据以指示所述任务的所述任务类型标识符的唤醒事件;第二硬件逻辑块,所述第二硬件逻辑块被布置为基于指示唤醒事件的所述唤醒事件状态数据来识别一个或更多个候选任务类型,选择所述候选任务类型中的一个,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务,并响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
其他方面提供了:
·调度器,其被配置为执行如本文中所述的方法,其中,调度器可以以包含在集成电路上的硬件中;
·处理器,其包括如本文中所述的调度器。
·计算机可读代码,其被配置为当代码在计算机上运行时执行如本文中所述的方法的步骤,其中,代码可在计算机可读存储介质上进行编码。
·在集成电路制造系统处制造如本文中所述的调度器的方法。
·集成电路定义数据集,其在集成电路制造系统中进行处理时,将集成电路制造系统配置为制造如本文中所述的调度器。
·计算机可读存储介质,其具有在其上存储的集成电路的计算机可读描述,当其在集成电路制造系统中进行处理时,使集成电路制造系统制造如本文中所述的调度器。
本文中所述的调度器可以包含在集成电路上的硬件中。可提供在集成电路制造系统处制造调度器的方法。可提供集成电路定义数据集,其在集成电路制造系统中进行处理时,将该系统配置为制造调度器。可提供非暂时性计算机可读存储介质,其具有在其上存储的集成电路的计算机可读描述,其在进行处理时,使布局处理系统生成在集成电路制造系统中使用的电路布局描述,以便制造调度器。
可提供集成电路制造系统,其包括:非暂时性计算机可读存储介质,其具有在其上存储的描述调度器的计算机可读集成电路描述;布局处理系统,其被配置为对集成电路描述进行描述,以便生成体现调度器的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造调度器。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供非暂时性计算机可读存储介质,其具有在其上存储的计算机可读指令,当计算机可读指令在计算机系统处执行时,使计算机系统执行如本文所述的方法。
如对技术人员将明显的是,以上特征可酌情进行组合,并且可与本文中所描述的示例的任意方面组合。
附图说明
现在,将参照附图对示例进行详细描述,在附图中:
图1是示出了包括调度器的处理器的示意图;
图2是示出了在任务调度引擎接收到新的任务时该任务调度引擎的示例操作方法的流程图;
图3是示出了在任务队列中的任务之一的相关性完成时任务调度引擎的示例操作方法的流程图;
图4是示出了用于选择任务以执行的任务调度引擎的示例操作方法的流程图;
图5A是示出了用于从任务队列中移除任务的任务调度引擎的第一示例操作方法的流程图;
图5B是示出了用于从任务队列中移除任务的任务调度引擎的第二示例操作方法的流程图;以及
图6示出了用于生成体现调度器的集成电路的集成电路制造系统。
附图图示了各个示例。技术人员将认识到,附图中示出的元素边界(例如,框、框组或其他形状)表示边界的一个示例。在一些示例中可能的是,一个元素可被设计为多个元素,或者多个元素可被设计为一个元素。在适当情况下,共同的参考数字在整个附图中用于指示类似的特征。
详细描述
以下的描述通过示例的方式来呈现,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中所描述的实施例,并且对所公开的实施例的各种修改对于本领域的技术人员来说将是明显的。
现在将仅通过示例来对实施例进行描述。
本文中描述了在GPU或其他高度并行处理单元内调度任务的方法(诸如,用于高性能计算应用或其中存在大量任务的任何其他应用)。本文中所使用的术语“任务”是指相同程序(例如,相同的ALU指令序列)应用于一组数据的一组工作,其中该数据可包括一个或更多个元素(例如,多个像素或顶点)。该方法在GPU或其他高度并行处理单元中的调度器内实现。
代替使用简单的循环调度法,调度方法使用响应于任务相关性的完成而被触发的唤醒事件来更新可从其中选择要执行的任务的候选任务集。一旦选择了要执行的任务,该任务就沿着执行流水线进一步进行,并且可能存在涉及用于确定在GPU或其他高度并行处理单元内的ALU(或ALU流水线)上执行来自哪些任务(其已经被选择用于执行)的哪些指令的进一步的调度。这种调度法例如通过避免搜索无法运行的任务提高了GPU整体的效率。
图1是示出了处理器100(其可以是GPU或其他高度并行处理单元)的示意图。将认识到的是,图1仅示出了处理器的一些元件,并且在处理器内可能存在未在图1中示出的许多其他元件(例如,缓存、接口等)。处理器100包括调度器102和处理块104。
处理块104包括硬件逻辑,其用于执行被调度以由调度器102执行的任务内的指令。因此,处理块104包括许多算术逻辑单元(ALU),并且ALU可以以任何方式分组。处理块104可包括不同类型的ALU,例如,其中每类型的ALU针对特定类型的计算进行优化。在处理器100是GPU的示例中,处理块104可包括多个着色器核,其中每个着色器核包括一个或更多个ALU。在各个示例中,处理块104可以是单指令多数据(SIMD)处理器(其在各个示例中可被称为统一着色集群(USC))或单指令单数据(SISD)处理器。
调度器102包括任务调度引擎106、任务队列108和被布置为存储一组唤醒事件状态位109的数据存储装置(例如,存储器或寄存器)。如图1所示,调度器102接收任务110,并且这些任务110被任务调度引擎106添加到任务队列108,然后如以下详细描述的被选择性地调度以由处理单元104执行。任务110可以是不同的类型(例如,它们可涉及不同类型的计算和/或不同类型的数据)。如上所述,任务是相同的程序(例如,ALU指令序列)应用于一组数据的一组工作,其中该数据可包括一个或更多个元素(例如,多个像素或顶点)。在处理器100是GPU的情况下,与任务相关的程序可以是着色器程序。
由调度器102(并且因此由任务调度引擎106)接收的每个任务110具有标识任务类型的标识符,并且该标识符可被称为任务类型ID。不同类型的任务可由不同的实体(其可以是处理器100的部分但未在图1中示出)生成,并且在各个示例中,生成任务的这些实体可被称为数据主管(master)。在这样的示例中,标识任务类型的标识符(任务类型ID)在各个示例中可被称为数据主管ID,并且标识任务类型和任务源二者(其中,不同的源生成不同的任务类型)。
由调度器102(并且因此由任务调度引擎106)接收的任务110除了任务类型ID之外还可具有另一个标识符。第二标识符在被提供的情况下标识任务所应用于的数据组,并可被称为数据组ID。在各个示例中,由调度器102(并且因此由任务调度引擎106)接收的所有任务110可具有任务类型ID和数据组ID二者。任务所涉及的数据可以是数据大集合的部分,例如计算机图形图像,并且为了降低处理的复杂性,这种数据大集合可以被细分为数据组(其中,这些数据组例如可被称为使用分片式渲染(tiled rendering)的GPU中的图块(tile))。数据组ID(在各种示例中,其可被称为图块ID)不是指任务所应用于的实际的数据片段(例如,像素、顶点等),而是指包括任务所应用于的实际的数据片段(可替代地,其可被称为数据项)的数据组。例如,对作为计算机图形图像的图块A的部分的像素0-31进行处理的任务将具有对应于图块A的数据组ID。类似地,对作为计算机图形图像的图块B的部分的顶点0-15进行处理的任务将具有对应于图块B的数据组ID。任务110可明确地指定与其相关的数据(例如,任务可包括任务与其相关的2×2的像素块的X和Y的坐标)。
调度器102内的任务调度引擎106将所接收的任务110添加到任务队列108,然后从队列108中选择性地调度任务以由处理单元104执行。任务调度引擎106可以以硬件实现。可替代地,其可在处理器100内进行微编码并执行。任务队列108是基于年龄的队列,使得新任务被添加到一端(例如,队列的后面),并且任务110保留在任务队列108中,直到执行完成。由于任务110可涉及许多数据片段(例如,可在任务内指定的多个像素或顶点),并且程序可能不会在所有的数据片段上完全同时被执行,程序可在其他数据片段之前完成对一些数据片段的执行,并且因而任务110保留在任务队列108中,直到程序(例如,ALU指令序列)完成了对任务与其相关的所有数据片段的执行。任务队列108中的任务110可不按顺序(即,以与任务由调度器102接收并被放置在任务队列108中的顺序不同的顺序)完成,并且如果在待完成的任务之后在任务队列108中存在任务,则当待完成的任务完成并从任务队列108中移除时,它们在任务队列108中的位置被移位。
图1还示出了包括按照年龄顺序排列的多个任务的任务队列108的示意图,其中队列108中的第一任务112(在队列的顶部)是最新的任务,队列108中的最后任务114(在队列的底部)是最旧的任务。如上所述,由任务调度引擎106接收并存储在任务队列108中的每个任务包括任务类型ID 116,并且还可包括数据组ID 118。另外,如图1所示,在队列108中存在与每个任务110相关联的数据120(例如,以多个状态位的形式),并且如以下详细描述的,该数据120在任务被添加到队列时由任务调度引擎106初始设置并用于选择任务以用于执行。与任务相关联的数据120随后可由任务调度引擎106或另一实体更新。
与队列108中的每个任务110相关联的数据120可采取任何形式,并且在各个示例中,其可如图1中所示包括多个状态位。这些状态位包括跟踪任务特定的相关性(其中,任务特定的相关性例如可能等待特定的缓存行写入发生)的一个或更多个状态位122,并且当相关性之一完成时(例如,一旦对特定的缓存行的写入发生),这些状态位122由任务调度引擎106更新。在其他示例中,可使用计数器来代替多个状态位,例如其中,计数器保持需要在任务可被调度之前完成的事物的数量的计数。对该计数的递减可由任务调度引擎106或另一实体执行,并且当计数器达到零时允许任务110进行。可替代地,可使用递增的计数器,其中当计数器达到预定义的非零值时,允许任务进行。
与任务相关联的数据120还(例如,使用位124)指示任务是否已被调度以用于在处理块104上执行(并且因此可能正在执行)。当任务110由任务调度引擎106添加到任务队列108时,数据由任务调度引擎106更新(例如,对位124进行设置),以指示任务尚未被调度以用于执行(或正在执行),然后当任务随后被选择用于执行时,数据(例如,位124)被更新。如以下更详细描述的,数据120用于选择要执行的任务。
调度器102还包括唤醒事件状态数据,例如,如图1中所示的多个唤醒事件状态位109。每个唤醒事件状态位109可对应于不同的任务类型ID,或者可替代地,每个唤醒事件状态位109可对应于任务类型ID和数据组ID的不同组合(例如,使得可存在对应于相同的任务类型ID但对应于不同的数据组ID且反之亦然的几个唤醒事件状态位)。最初,所有这些唤醒事件状态位由任务调度引擎106设置(例如,为零),以指示没有唤醒事件。当与任务相关联的任务特定的相关性之一完成时,相应的唤醒事件状态位109随后被更新(例如,从零到一),以指示与任务相关联的特定的任务类型ID(并且可选地,数据组ID)的唤醒事件。在其他示例中,唤醒事件状态数据可具有其他形式,但提供相同的功能(即,指示特定的任务类型ID和可选的数据组ID的唤醒事件)。如以下更详细描述的,唤醒事件状态数据(例如,位109)用于确定哪类型的任务被选择用于执行,并且还用于识别用于执行的所选择类型的任务。
尽管图1示出了作为单独的储存器块的唤醒状态数据109和任务队列108,但用于唤醒状态数据109和任务队列数据108的储存器可在系统中的任何地方实现(例如,在调度器102的外部,但可由调度器102访问),并且在各个示例中,唤醒状态数据109和任务队列108可位于同一位置。
图2是示出了在任务调度引擎106接收到新的任务110时该任务调度引擎的示例操作方法的流程图。响应于接收到任务110(块202),任务调度引擎106将任务添加到任务队列108(块204)。如上所述,任务队列108是基于年龄的队列,并且任务110被添加到队列108的一端(在块204中),例如,添加到图1中所示的任务队列108的顶部。新添加的任务的状态数据120由任务调度引擎106设置(块206),以指示该任务当前未在处理器块中执行(例如,位124),并识别任何任务特定的相关性(例如,位122)。
图3是示出了在任务队列108中的任务之一的相关性完成时任务调度引擎106的示例操作方法的流程图。响应于接收到任务相关性完成的指示(块302),任务调度引擎106更新状态数据120(块304)。例如,状态数据可通过清除与完成的相关性相关的任务的相应的状态位(例如,一个或更多个位122)或更新计数器值来更新(在块304中)。除了更新状态数据(例如,通过清除相应的状态位或更新计数器值)之外,任务调度引擎106还更新唤醒事件状态数据,以指示与完成的相关性相关的任务相关联的特定的任务类型ID(和可选的数据组ID)的唤醒事件(块306)。例如,任务调度引擎106可(在块306中)设置唤醒事件状态位,以指示与完成的相关性相关的任务相关联的特定的任务类型ID(和可选的数据组ID)的唤醒事件,并且位可对每个任务类型(例如,在数据组ID没有针对任务进行指定的情况下)或者每个任务类型和数据组(例如,在任务指定任务类型ID和数据组ID二者的情况下)进行设置。
图4是示出了用于选择要执行的任务的任务调度引擎106的示例操作方法的流程图。任务从存储在任务队列108中的那些任务中选择,并且选择基于每个任务的唤醒事件状态数据109和状态数据120来完成。如上所述,该状态数据109、120由任务调度引擎106(和可选的其他实体)设置和更新。如图4所示,该方法以两部分400、401进行操作。在第一部分400(块402-404)中,任务调度引擎106选择任务类型,并且在第二部分401(块406-412)中,任务调度引擎106选择所选类型的任务。
任务调度引擎106通过首先基于唤醒事件状态数据109和任务队列108的内容识别候选任务类型(块402)来选择任务类型。只有任务队列108中的任务(如图2的块204中所添加的)和相关联的唤醒事件状态数据109(例如,相关联的唤醒事件状态位)被设置以指示唤醒事件(如在图3的块306中所设置)的那些任务类型才是候选(或有效)任务类型。在(块402中)识别了候选任务类型之后,选择这些候选任务类型中的一个(块404)。在各个示例中,循环法可用于从一组候选任务类型中选择任务类型。
在任务110不包括数据组ID、(在块404中)已经选择任务类型的示例中,任务调度引擎106搜索任务队列108,以识别队列108中的、是所选类型且(例如,如由位124所指示的)当前没有执行的最旧的任务(块406)。在这样的示例中,(在块406中)选择基于三个标准:任务类型、任务的年龄以及它是否正在执行。
在任务110还包括数据组ID的示例中,数据组ID不涉及(在块404中的)任务类型的选择,但当(在块406中)识别所选的任务类型的任务时,考虑任务类型和数据组ID的组合。在这样的示例中,(在块406中)选择基于任务类型、任务的年龄、它是否正在执行,并且基于任务类型ID和数据组ID的组合与唤醒事件状态数据109的比较。(在块406中)所识别的任务是(如在块404中所识别的)所选类型的最旧的任务,其当前没有执行并且还具有匹配被存储在唤醒事件状态数据109中的唤醒事件之一(例如,唤醒事件位之一)的数据组ID和任务类型ID。在这样的示例中,如果在被设置为指示(从块404)所选的任务类型和特定数据组的特定组合的唤醒事件的唤醒事件状态数据109(例如,针对任务类型A和数据组1的组合所设置的唤醒事件位)中不存在唤醒事件,则不能(在块406中)识别出任务队列中的、是所选任务类型(根据块404,例如,任务A)且与特定数据组(例如,数据组1)相关的任务。被执行以(在块406中)识别任务的搜索可从队列108中的最旧的任务到最新的任务或以任何其他顺序来执行。
在(块406中)识别了所选任务类型的并且可选地具有匹配唤醒事件状态数据中的唤醒事件的数据组ID和任务类型的任务之后,对所识别的任务的相关性执行检查(块408)。如果所识别的任务的所有任务相关性都如所识别的任务的状态数据122(其例如可跟踪任务特定的相关性)所指示地满足(块408中为“是”),则所识别的任务被发送以用于执行,并且与所识别的任务相关联的状态数据(例如,位124)被设置以指示其已被发送以用于执行(块410)。然而,如果确定所识别的任务的所有任务相关性并不是都满足(块408中为“否”),则所识别的任务尚未准备用于执行。与所识别的任务的任务类型(和可选的数据组)相关联的唤醒事件状态数据109(例如,唤醒事件状态位)被清除(块412),并且方法可重复。
通过(在块412中)清除唤醒事件状态数据109中的唤醒事件状态(例如,位),这防止了具有任务类型ID和数据组ID的特定组合的任务(在块406中)被再次识别,直到另一个相关性满足并且(在块412中)被清除的唤醒事件状态(例如,位)(在图3的块306中)被重新设置,例如,在块408中测试失败的相同任务将不会(在块406中)被再次识别,直到对于任务类型ID和数据组ID的特定组合的另外的相关性满足。
例如,如果(在块404中)选择了任务类型A并且存在关于以下组合的唤醒事件(如在唤醒事件状态数据109中所识别的):任务类型A和数据组1、任务类型A和数据组2、任务类型A和数据组3,则(在块406中)识别出队列中具有任务类型A并与数据组1、2或3相关的最旧的未执行任务。如果(在块406中)所识别的任务与数据组1相关,并且发现所识别的任务的所有相关性没有都被满足(块408中为“否”),则与任务类型A和数据组1的组合相关的唤醒事件状态数据109(在块412中)被清除。这意味着,在块406的后续迭代中,除非生成了该任务类型和数据组的组合的另外的唤醒事件(例如,使用图3的方法),否则不能识别出与数据组1相关的任务类型A的未执行任务。
图4中所示的方法可在两个时钟周期内实现。在其中方法是在两个时钟周期内实现的示例中,在第一时钟周期(周期n)中,识别出候选任务类型,选择一个任务类型,识别出所选类型的最旧的未执行任务(其可选地也满足其他标准),并确定其所有相关性是否满足(块402-408)。如果所有相关性满足(块408中为“是”),则在下个时钟周期(周期n+1)实现(在块410中)对所识别的任务的发送和状态数据的设置,并且不再实施较早的方法步骤(块402-408),直到下个时钟周期(周期n+2)。然而,如果不是所有相关性都满足(块408中为“否”),则唤醒事件状态数据被清除(在块412中)作为第一时钟周期(周期n)的一部分,并且方法(块402-408)在下个时钟周期(周期n+1)内重复。
可替代地,图4中所示的方法可在每个时钟周期实施,使得识别出候选任务类型,选择一个任务类型,识别出所选类型的最旧的未执行任务(其可选地也满足其他标准),并确定其所有相关性在每个时钟周期是否满足(块402-408),而不管(在块408中)相关性确定的结果如何。
图5A是示出了用于从任务队列108中移除任务的任务调度引擎106的示例操作方法的流程图。如上所述,任务不从任务队列108中移除,直到它们完全完成执行,即,与任务相关联的程序已经在与任务相关联的所有数据上执行。响应于接收到任务已经完全执行的指示(块502),任务调度引擎106将特定任务从任务队列中移除(块504)。如上所述,任务可不按顺序完成,并且在被从任务队列108中移除的任务之后的任务可向上移动以填充队列中的空出位置。
在各个示例中,由调度器102接收的一个或更多个任务110是多阶段任务。多阶段任务包括第一阶段任务和第二阶段任务。在多阶段任务的情况下,当第一阶段任务完成时,整个多阶段任务不会从队列中移除,而是(来自多阶段任务的)第二阶段任务被调度(并因此成为图2的方法的新输入)。在这样的示例中,图5A中所示的方法可如图5B中所示地进行修改。如图5B所示,如果完成的任务不是多阶段任务的第一阶段(块506中为“否”),则任务如以上所述从任务队列中移除(块504)。然而,如果完成的任务是多阶段任务的第一阶段(块506中为“是”),则该特定多阶段任务的第二阶段被调度(块508),并因此成为新的任务,其根据图3中所示和以上所述的方法被接收和存储。
在由调度器接收到的一个或更多个任务110是多阶段任务的示例中,图4中所示的方法也可被修改为使第二阶段任务的执行优先于其他任务(即,非多阶段任务和多阶段任务的第一阶段任务)。在这样的示例中,可修改(在块406中)对任务的识别,使得队列中所选类型的最旧的未执行的第二阶段任务(其可选地具有匹配唤醒事件状态数据中的唤醒事件的数据组ID)优先于任何其他任务被识别。在队列中不存在满足标准(即,其是所选类型,并且可选地具有匹配唤醒事件状态数据中的唤醒事件的数据组ID)的待识别的任何未执行的第二阶段任务的情况下,满足标准(即,其是所选类型,并且可选地具有匹配唤醒事件状态数据中的唤醒事件的数据组ID)的最旧的未执行的其他任务(即,非多阶段任务或多阶段任务的第一阶段任务)(在块406中)被识别。
任务调度引擎106可如上所述以硬件和/或软件来实现。在各个示例中,任务调度引擎106可包括多个硬件逻辑块,例如,实现图2的方法的硬件逻辑块、实现图3的方法的硬件逻辑块、实现图4的方法的硬件逻辑块、以及实现图5A或图5B的方法的硬件逻辑块。虽然这些硬件逻辑块功能上分离,但可以以集成的方式实现,例如使得任务调度引擎106内的硬件可被认为是多于一个功能硬件逻辑块的一部分,因为其实现了以上所述并在图2-图5B中所示的方法中的不止一个方法的方面。
使用以上所述的方法,每个任务发生一次任务调度。一旦任务被选择并被发送用于执行(在图4的块410中),任务队列108中的状态数据120就被更新(例如,状态数据120中的位124被设置),并且这防止了任务在方法的后续迭代中被选择(即,其不可在块406中被选择)。
在各个示例中,可在(图4的块410中)选择任务之后实现进一步的调度,例如,以确定来自哪些正在执行的任务的哪些指令被发送到处理块104内的不同ALU。该进一步的调度可以以任何方式实现。
尽管图1示出了单个任务队列108,但在以上所述的方法的各个变型中,调度器102可包括多个任务队列,其中不同的任务队列可用于根据其状态(例如,两个任务队列-包括还未被选择用于执行的任务的第一任务队列,以及包括已经被选择用于执行的任务的第二任务队列)和/或根据其任务类型ID(例如,具有不同任务类型ID的任务的单独的基于年龄的队列)来存储任务。
在存在两个任务队列的示例中,一个任务队列包括还未被选择用于执行的任务,以及另一个包括已被选择用于执行的任务,指示任务是否已被选择用于执行的状态数据(例如,位124)被省略,并且代替(在图4的块410中)更新该数据,所识别的任务从第一任务队列移到第二任务队列。另外,在这样的示例中,图2中所示的方法可用于将任务添加到第一任务队列,并且图5A或图5B中所示的方法可用于将任务从第二任务队列中移除。在这样的示例中,第一任务队列是基于年龄的队列,以及第二任务队列可选地是基于年龄的队列。
在存在不同任务类型ID的不同任务队列的示例中,候选任务类型可通过分析所有任务队列然后(在块404中)在不同队列之间进行裁决(例如,使用循环方案或其他方案)来(在块402中)识别。
尽管图4中所示的调度方法以上结合添加任务并将任务从任务队列108中移除(如图2、图5A和图5B中所示)的方法和触发唤醒事件(如图3中所示)的方法进行了描述,但在各个示例中,图4中所示的调度方法可结合触发唤醒事件的不同方法和/或添加任务并将任务从任务队列108中移除的不同方法来使用。
类似地,尽管图3中所示的触发唤醒事件的方法以上结合添加任务并将任务从任务队列108中移除(如图2、图5A和图5B中所示)的方法以及(如图4中所示的)调度方法进行了描述,但在各个示例中,图3中所示的触发唤醒事件的方法可结合不同的调度方法和/或添加任务并将任务从任务队列108中移除的不同方法来使用。
使用以上所述的方法,任务的调度(并且特别地,如图4中所示和以上所述的搜索操作)通过唤醒事件驱动,并且这通过消除针对还未准备运行的任务对队列的不必要的搜索来提高了性能。除了提高性能之外,不必要搜索(即,最终不会导致任务被发送用于执行的搜索)的减少降低了功耗(例如,因为搜索硬件逻辑不是活动的,因此不消耗任何切换功率)。
图1中的处理器100被示为包括多个功能块。这仅是示意性且并不旨在定义这样的实体的不同逻辑元件之间的严格划分。可以以任何合适的方式设置每个功能块。应理解的是,本文中被描述为由(在图2-图5B中任一个中的)方法块形成的任何中间值不需要在任何点处由调度器102物理地生成,并且可仅表示方便地描述由调度器102在其输入端和输出端之间执行的处理的逻辑值。
本文中所描述的调度器102和/或处理器100可体现在集成电路上的硬件中。本文中所描述的调度器102和/或处理器100可被配置为执行本文中所描述的方法中的任一个方法。通常,以上描述的功能、方法、技术或组件中的任一个可以在软件、固件、硬件(例如,固定逻辑电路)或其任何组合中实现。本文中使用的术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”通常可以表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑表示程序代码,当其在处理器上执行时,程序代码执行指定的任务。本文所描述的算法和方法可由执行使处理器执行算法/方法的代码的一个或更多个处理器执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可使用磁、光和其他技术来存储指令或其他数据且可由机器访问的其他存储器设备。
如本文所使用的术语计算机程序代码和计算机可读指令指的是用于处理器的任何类型的可执行代码,其包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制码、机器码、字节码、定义集成电路的代码(诸如硬件描述语言或网表)以及以诸如C、Java或OpenCL的编程语言代码表达的代码。可执行代码可以是例如,任何类型的软件、固件、脚本、模块或库,当其在虚拟机或其他软件环境下被适当执行、处理、解释、编译、执行时,使支持可执行代码的计算机系统的处理器执行由代码指定的任务。
处理器、计算机或计算机系统可以是具有处理能力使得其可执行指令的任何类型的设备、机器或专用电路或其集合或部分。处理器可以是任何类型的通用处理器或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如,通用GPU)、微处理器、被设计为加速CPU以外的任务的任何处理单元等。计算机或计算机系统可以包括一个或更多个处理器。本领域中的技术人员将认识到,这样的处理能力被合并到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电设备、PC、服务器、移动电话、个人数字助理和很多其它设备。
还旨在包括定义如本文所述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片以执行期望功能。也就是说,可以提供计算机可读存储介质,其具有在其上编码的以集成电路定义数据集为形式的计算机可读程序代码,当其在集成电路制造系统中进行处理时,将系统配置为制造调度器102和/或处理器100,该调度器和/或处理器被配置为执行本文所述的方法中的任一个,或者将系统配置为制造包括本文所述的任何装置的调度器102和/或处理器100。集成电路定义数据集可以是例如,集成电路描述。
集成电路定义数据集可以是计算机代码的形式,例如,作为用于配置可编程芯片的网表、代码,作为定义任何级别的集成电路的硬件描述语言,包括作为寄存器传输级(RTL)代码、作为诸如Verilog或VHDL的高级电路表示以及作为诸如OASIS(RTM)和GDSII的低级电路表示。逻辑上定义集成电路的更高级表示(诸如RTL)可以在计算机系统处进行处理,该计算机系统被配置用于在软件环境的背景下生成集成电路的制造定义,其包括电路元件的定义和用于组合这些元件以便生成由表示如此定义的集成电路的制造定义的规则。如通常在计算机系统处执行以定义机器的软件的情况一样,可能需要一个或更多个中间用户步骤(例如,提供命令、变量等),以便使被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码,从而生成该集成电路的制造定义。
现在将参考图6对在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造调度器102和/或处理器100的示例进行描述。
图6示出了集成电路(IC)制造系统602的示例,其包括布局处理系统604和集成电路生成系统606。IC制造系统602被配置成接收IC定义数据集(例如,定义如在本文的任何示例中所述的调度器102和/或处理器100),处理IC定义数据集,并根据IC定义数据集来生成IC(例如,其实现如在本文的任何示例中所述的调度器102和/或处理器100)。IC定义数据集的处理对IC制造系统602进行配置,以制造体现如在本文中的任何示例中所述的调度器102和/或处理器100的集成电路。
布局处理系统604被配置成接收并处理IC定义数据集以确定电路布局。根据IC定义数据集来确定电路布局的方法在本领域中是已知的,且例如可涉及合成RTL代码以例如根据逻辑组件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)确定待生成的电路的门级表示。电路布局可通过确定逻辑组件的位置信息来从电路的门级表示确定。这可以自动地或者通过用户参与来完成,以便优化电路布局。当布局处理系统604已经确定电路布局时,它可以向IC生成系统606输出电路布局定义。电路布局定义例如可以是电路布局描述。
如本领域中已知的,IC生成系统606根据电路布局定义来生成IC。例如,IC生成系统606可以实现半导体设备制造过程以生成IC,半导体设备制造过程可涉及光刻的多步骤序列和化学处理步骤,在此期间,电子电路逐渐地在由半导体材料制成的晶片上形成。电路布局定义可以是掩模的形式,掩模可以在光刻过程中使用以用于根据电路定义来生成IC。可替代地,提供给IC生成系统606的电路布局定义可以是计算机可读代码的形式,IC生成系统606可以使用该计算机可读代码以形成用于生成IC的合适的掩模。
由IC制造系统602执行的不同过程可以都在一个位置上例如由一方实现。可替代地,IC制造系统602可以是分布式系统,使得一些过程可以在不同位置处执行并且可由不同方执行。例如,一些阶段为:(i)合成表示IC定义数据集的RTL代码以形成待生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路,以上均可在不同的位置执行和/或由不同方来执行。
在其它示例中,在集成电路制造系统处对集成电路定义数据集的处理可将系统配置为制造调度器102和/或处理器100,而无需对IC定义数据集进行处理,以便确定电路布局。例如,集成电路定义数据集可定义诸如FPGA的可重配置处理器的配置,并且对该数据集的处理可使IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有该所定义的配置的可重配置处理器。
在一些实施例中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可使得集成电路制造系统生成如本文描述的设备。例如,由集成电路制造定义数据集的以在上文中参考图6描述的方式的集成电路制造系统的配置可使如本文描述的设备被制造。
在一些示例中,集成电路定义数据集可包含在数据集处定义的硬件上运行或结合在数据集处定义的硬件运行的软件。在图6中示出的示例中,IC生成系统还可由集成电路定义数据集配置为在制造集成电路时,根据在集成电路定义数据集处定义的程序代码来将固件加载到该集成电路上,或者以其他方式向集成电路提供程序代码以供集成电路使用。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可被分布在网络当中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可替代地,本地计算机可根据需要下载软件的片段,或在本地终端处执行一些软件指令并在远程计算机(或计算机网络)处执行一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路(诸如DSP、可编程逻辑阵列等)执行。
本文所述的方法可由配置有软件的计算机执行,软件是以机器可读形式存储在有形存储介质上,例如,以包括用于配置计算机以执行所描述的方法的组成部分的计算机可读程序代码的计算机程序的形式或以包括适于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码装置的计算机程序的形式,且其中计算机程序可被包含在计算机可读存储介质上。有形(或非暂时性)存储介质的示例包括磁盘、拇指驱动器、存储卡等,且不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以以任何合适的顺序或同时执行。
本文描述的硬件组件可由非暂时性计算机可读存储介质生成,非暂时性计算机可读存储介质具有在其上编码的计算机可读程序代码。
存储机器可执行数据以用于实现所公开的方面的存储器可以是非暂时性介质。非暂时性介质可以是易失性或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,诸如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁存储器技术、闪存、相变存储器、电阻式RAM。
对“逻辑”的特定引用指的是执行一种或更多种功能的结构。逻辑的示例包括被布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为示例,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(诸如寄存器、触发器或锁存器)、逻辑运算符(诸如布尔运算)、数学运算符(诸如加法器、乘法器或移位器)并且互相连接的电路或结构。这样的元件可作为定制电路或标准单元库、宏或者在其它抽象级处提供。这样的元件可以以特定布置互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或更多种功能;这样的编程可从固件或软件更新或控制机制中被提供。被识别为执行一种功能的逻辑也可包括实现组成功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。
本文给出的任何范围或设备值可被扩展或改变而不失去所寻求的效应,如对技术人员将明显的。
将理解,上面所述的益处和优点可与一个实施例有关或可与几个实施例有关。实施例不限于解决任何或全部所陈述的问题的实施例或具有任何或所有所陈述的益处和优点的实施例。
对“一个(an)”项目的任何引用指的是那些项目中的一个或更多个。术语“包括(comprising)”在本文用于意指包括所识别的方法块或元件,但这样的块或元件不包括排他性列表,且装置可包含附加的块或元件,以及方法可包含附加的操作或元件。此外,块、元件和操作本身不是隐含地封闭的。
本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不旨在排除其它顺序或并行执行多个步骤。此外,各个块可从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的示例中的任一个的方面可与所描述的其它示例中的任一个的方面组合以形成另外的示例,而不失去所寻求的效果。在附图中的元件被示为由箭头连接的情况下,将认识到,这些箭头仅示出元件之间的通信(包括数据和控制消息)的一个示例流。元件之间的流可以在任一方向上或在两个方向上。
申请人由此单独地公开了本文所描述的每个单独特征和两个或更多个这样的特征的任意组合,在某种程度上,这样的特征或组合能够根据本领域中的技术人员的通用常识基于作为整体的本说明书来执行,而不管这样的特征或特征组合是否解决了本文所公开的任何问题。鉴于前述描述,对于本领域中的技术人员将明显的是,可以在本发明的范围内做出各种修改。

Claims (22)

1.一种在处理器内调度任务队列中的任务的方法,所述任务队列包括具有任务类型标识符和识别任何任务特定的相关性的相关联的状态数据的任务,所述方法包括:
响应于在任务调度引擎处接收到所述任务队列中的任务的相关性完成的指示(302),更新与所完成的相关性相关的所述任务的所述状态数据(304)以指示所述相关性已完成,并更新所述处理器的唤醒事件状态数据以指示所述任务的任务类型标识符的唤醒事件(306);
基于指示唤醒事件的所述唤醒事件状态数据来识别一个或更多个候选任务类型(402);
选择所述候选任务类型中的一个(404);
识别所述任务队列中所选择的候选任务类型的最旧的未执行的任务(406);以及
响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足(408),选择所述任务以用于执行(410)。
2.根据权利要求1所述的方法,其中,更新与所完成的相关性相关的所述任务的所述状态数据包括清除与所完成的相关性相关的所述任务的状态位。
3.根据权利要求1所述的方法,其中,更新所述任务的所述任务类型标识符的唤醒事件状态数据包括设置与所述任务的所述任务类型标识符对应的任务类型的唤醒事件状态位。
4.根据权利要求1所述的方法,其中,所述任务具有所述任务类型标识符和数据组标识符二者,
其中,所述唤醒事件状态数据针对与所述任务的所述任务类型标识符对应的任务类型和与所述任务的所述数据组标识符对应的数据组的组合被更新,
以及其中,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务包括:
识别所述任务队列中的、是所选择的候选任务类型且具有与已被更新的唤醒事件状态数据对应的任务类型标识符和数据组标识符的最旧的未执行的任务。
5.根据权利要求4所述的方法,其中,唤醒事件状态位针对与所述任务的所述任务类型标识符对应的所述任务类型和与所述任务的所述数据组标识符对应的所述数据组的组合被设置,并且识别所述任务队列中的、是所选择的候选任务类型且具有与已被更新的唤醒事件状态数据对应的任务类型标识符和数据组标识符的最旧的未执行的任务包括:
识别所述任务队列中的、是所选择的候选任务类型且具有与已被设置的唤醒事件状态位对应的任务类型标识符和数据组标识符的最旧的未执行的任务。
6.根据权利要求4所述的方法,还包括:
响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性没有都被满足,清除所识别的最旧的未执行的任务的所述任务类型标识符和所述数据组标识符的所述唤醒事件状态数据(412);以及
识别所述任务队列中的、是所选择的候选任务类型且具有与已被更新的唤醒事件状态数据对应的任务类型标识符和数据组标识符的另一个最旧的未执行的任务(406)。
7.根据权利要求1所述的方法,还包括:
响应于在所述任务调度引擎处接收到任务(202),将所接收的任务添加到所述任务队列(204)并设置所接收的任务的状态数据以识别所接收的任务的任何相关性(206)。
8.根据权利要求1所述的方法,还包括:
响应于在所述任务调度引擎处接收到所述任务已完成执行的指示(502),将所述任务从所述任务队列中移除(504)。
9.根据权利要求1所述的方法,还包括:
响应于在所述任务调度引擎处接收到所述任务已完成执行的指示(502),确定所述任务是否是多阶段任务的第一阶段任务(506);
响应于确定所述任务不是多阶段任务的第一阶段任务,将所述任务从所述任务队列中移除(504);以及
响应于确定所述任务是多阶段任务的第一阶段任务,对所述多阶段任务的第二阶段任务进行调度。
10.根据权利要求9所述的方法,其中,识别所述任务队列中所选择的候选任务类型的最旧的未执行的任务还包括使对作为多阶段任务的第二阶段任务的任务的识别优先于对不是第二阶段任务的任务的识别。
11.根据权利要求1所述的方法,其中,所述处理器是GPU。
12.根据权利要求1所述的方法,其中,任务定义要在一组数据上运行的程序。
13.一种用于处理器(100)的调度器(102),包括:
任务调度引擎(106);
任务队列(108),所述任务队列包括具有任务类型标识符和识别任何任务特定的相关性的相关联的状态数据的任务;以及
数据存储装置,所述数据存储装置被布置为存储唤醒状态数据(109),
以及其中,所述任务调度引擎(106)包括:
第一硬件逻辑块,所述第一硬件逻辑块被布置为响应于接收到所述任务队列中的任务的相关性完成的指示,通过清除与所完成的相关性相关的所述任务的状态数据来更新所述任务的所述状态数据(304)以指示所述相关性已完成,并更新所述处理器的唤醒事件状态数据以指示所述任务的任务类型标识符的唤醒事件;
第二硬件逻辑块,所述第二硬件逻辑块被布置为基于指示唤醒事件的所述唤醒事件状态数据来识别一个或更多个候选任务类型,选择所述候选任务类型中的一个,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务,并响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
14.根据权利要求13所述的调度器,其中,所述唤醒状态数据包括多个唤醒状态位,
其中,所述第一硬件逻辑块被布置为响应于接收到所述任务队列中的任务的相关性完成的指示,清除与所完成的相关性相关的所述任务的状态位,并更新与所述任务的所述任务类型标识符对应的任务类型的唤醒事件状态位,
以及其中,所述第二硬件逻辑块被布置为基于所述唤醒事件状态位来识别一个或更多个候选任务类型,选择所述候选任务类型中的一个,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务,并响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
15.根据权利要求14所述的调度器,其中,所述任务具有所述任务类型标识符和数据组标识符二者,
其中,所述第一硬件逻辑块被布置为针对与所述任务的所述任务类型标识符对应的所述任务类型和与所述任务的所述数据组标识符对应的数据组的组合设置唤醒事件状态位,
以及其中,所述第二硬件逻辑块被布置为识别具有与已被更新的唤醒事件状态位对应的任务类型标识符和数据组标识符的、所选择的候选任务类型的所述最旧的未执行的任务。
16.根据权利要求15所述的调度器,其中,所述第二硬件逻辑块还被布置为响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性没有都被满足,清除所识别的最旧的未执行的任务的所述任务类型标识符和所述数据组标识符的所述唤醒事件状态位,并识别所述任务队列中的、是所选择的候选任务类型且具有与已被设置的唤醒事件状态位对应的任务类型标识符和数据组标识符的另一最旧的未执行的任务。
17.根据权利要求13所述的调度器,其中,所述任务队列(108)包括与被存储在所述任务队列中的每个任务相关联的状态数据(120),并且所述调度器还包括:
第三硬件逻辑块,所述第三硬件逻辑块被布置为响应于接收到所述任务,将所述任务添加到所述任务队列,并设置所述任务的所述状态数据,以识别所述任务的任何相关性。
18.根据权利要求17所述的调度器,其中,所述状态数据包括多个状态位。
19.根据权利要求13所述的调度器,还包括:
第四硬件逻辑块,所述第四硬件逻辑块被布置为响应于接收到所述任务已完成执行的指示,将所述任务从所述任务队列中移除。
20.根据权利要求13所述的调度器,还包括:
第四硬件逻辑块,所述第四硬件逻辑块被布置为响应于接收到所述任务已完成执行的指示,确定所述任务是否是多阶段任务的第一阶段任务;以及响应于确定所述任务不是多阶段任务的第一阶段任务,将所述任务从所述任务队列中移除;以及响应于确定所述任务是多阶段任务的第一阶段任务,对所述多阶段任务的第二阶段任务进行调度。
21.根据权利要求20所述的调度器,其中,所述第二硬件逻辑块还被布置为在识别所选择的候选任务类型的所述最旧的未执行的任务时,使对作为多阶段任务的第二阶段任务的任务的识别优先于对不是第二阶段任务的任务的识别。
22.一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质具有在其上存储的描述调度器的集成电路的计算机可读描述;
布局处理系统,所述布局处理系统被配置为对所述计算机可读描述进行处理,以便生成体现所述调度器的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造所述调度器,
其中,所述调度器包括:
任务调度引擎(106);
任务队列(108),所述任务队列包括具有任务类型标识符和识别任何任务特定的相关性的相关联的状态数据的任务;以及
数据存储装置,所述数据存储装置被布置为存储唤醒状态数据(109),
以及其中,所述任务调度引擎(106)包括:
第一硬件逻辑块,所述第一硬件逻辑块被布置为响应于接收到所述任务队列中的任务的相关性完成的指示,通过清除与所完成的相关性相关的所述任务的状态数据来更新所述任务的所述状态数据(304)以指示所述相关性完成,并更新所述处理器的唤醒事件状态数据以指示所述任务的所述任务类型标识符的唤醒事件;
第二硬件逻辑块,所述第二硬件逻辑块被布置为基于指示唤醒事件的所述唤醒事件状态数据来识别一个或更多个候选任务类型,选择所述候选任务类型中的一个,识别所述任务队列中的所选择的候选任务类型的最旧的未执行的任务,并响应于确定所选择的候选任务类型的所识别的最旧的未执行的任务其所有相关性被满足,选择所述任务以用于执行。
CN201710864618.6A 2016-09-23 2017-09-22 在gpu中的任务调度 Active CN107871301B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662398747P 2016-09-23 2016-09-23
US62/398,747 2016-09-23
GB1616244.8A GB2554392B (en) 2016-09-23 2016-09-23 Task scheduling in a GPU
GB1616244.8 2016-09-23

Publications (2)

Publication Number Publication Date
CN107871301A true CN107871301A (zh) 2018-04-03
CN107871301B CN107871301B (zh) 2023-06-09

Family

ID=57539944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710864618.6A Active CN107871301B (zh) 2016-09-23 2017-09-22 在gpu中的任务调度

Country Status (4)

Country Link
US (3) US11204800B2 (zh)
EP (1) EP3299961A1 (zh)
CN (1) CN107871301B (zh)
GB (1) GB2554392B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124625A (zh) * 2018-10-30 2020-05-08 阿里巴巴集团控股有限公司 任务队列的处理方法和装置以及存储介质

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2554392B (en) * 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU
GB2563582B (en) * 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
CN108491259B (zh) * 2018-03-30 2019-04-02 北京航天宏图信息技术股份有限公司 遥感算法流程并行调度方法及装置
CN110825342B (zh) * 2018-08-10 2023-04-04 昆仑芯(北京)科技有限公司 存储调度器件和用于处理信息的系统、方法及装置
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
CN111857865A (zh) * 2020-06-28 2020-10-30 珠海豹趣科技有限公司 一种事件型任务的处理方法、装置、电子设备及存储介质
JP2022124361A (ja) * 2021-02-15 2022-08-25 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN113495791B (zh) * 2021-09-07 2021-12-14 上海燧原科技有限公司 一种任务处理系统、方法及芯片
CN114168314B (zh) * 2021-10-27 2022-09-20 厦门国际银行股份有限公司 一种多线程并发的数据指标批量处理方法、装置及存储介质
CN116483584B (zh) * 2023-05-26 2024-05-03 摩尔线程智能科技(北京)有限责任公司 Gpu的任务处理方法、装置、电子设备和存储介质
CN117170889B (zh) * 2023-11-01 2024-01-23 沐曦集成电路(上海)有限公司 异构非阻塞数据包同步处理系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090158293A1 (en) * 2005-09-05 2009-06-18 Nec Corporation Information processing apparatus
CN102273166A (zh) * 2008-10-31 2011-12-07 高通股份有限公司 用于执行目标动作的唤醒触发器
US20130326537A1 (en) * 2012-06-05 2013-12-05 International Business Machines Corporation Dependency management in task scheduling
US20140237474A1 (en) * 2013-02-19 2014-08-21 Appsense Limited Systems and methods for organizing dependent and sequential software threads
CN104995603A (zh) * 2013-11-14 2015-10-21 联发科技股份有限公司 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4980824A (en) * 1986-10-29 1990-12-25 United Technologies Corporation Event driven executive
US7117500B2 (en) * 2001-12-20 2006-10-03 Cadence Design Systems, Inc. Mechanism for managing execution of interdependent aggregated processes
US7185338B2 (en) 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
US8271986B2 (en) 2003-12-31 2012-09-18 Intel Corporation Visual and graphical data processing using a multi-threaded architecture
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US20110276966A1 (en) * 2010-05-06 2011-11-10 Arm Limited Managing task dependency within a data processing system
US9027022B2 (en) 2011-06-16 2015-05-05 Argyle Data, Inc. Software virtual machine for acceleration of transactional data processing
US9104500B1 (en) 2011-09-29 2015-08-11 Emc Corporation Lock-free job scheduler for multi-processor systems
US9286106B1 (en) * 2013-04-16 2016-03-15 Ca, Inc. Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set
US20170300361A1 (en) * 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization
US10095305B2 (en) 2016-06-18 2018-10-09 Qualcomm Incorporated Wake lock aware system wide job scheduling for energy efficiency on mobile devices
US10318348B2 (en) * 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
GB2554392B (en) * 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090158293A1 (en) * 2005-09-05 2009-06-18 Nec Corporation Information processing apparatus
CN102273166A (zh) * 2008-10-31 2011-12-07 高通股份有限公司 用于执行目标动作的唤醒触发器
US20130326537A1 (en) * 2012-06-05 2013-12-05 International Business Machines Corporation Dependency management in task scheduling
US20140237474A1 (en) * 2013-02-19 2014-08-21 Appsense Limited Systems and methods for organizing dependent and sequential software threads
CN104995603A (zh) * 2013-11-14 2015-10-21 联发科技股份有限公司 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124625A (zh) * 2018-10-30 2020-05-08 阿里巴巴集团控股有限公司 任务队列的处理方法和装置以及存储介质
CN111124625B (zh) * 2018-10-30 2024-03-26 阿里云计算有限公司 任务队列的处理方法和装置以及存储介质

Also Published As

Publication number Publication date
US20230376348A1 (en) 2023-11-23
US11720399B2 (en) 2023-08-08
GB201616244D0 (en) 2016-11-09
US11204800B2 (en) 2021-12-21
EP3299961A1 (en) 2018-03-28
GB2554392B (en) 2019-10-30
CN107871301B (zh) 2023-06-09
GB2554392A (en) 2018-04-04
US20200073713A1 (en) 2020-03-05
US20220091885A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
CN107871301A (zh) 在gpu中的任务调度
US10503547B2 (en) Task scheduling in a GPU
EP3388940B1 (en) Parallel computing architecture for use with a non-greedy scheduling algorithm
US12020067B2 (en) Scheduling tasks using targeted pipelines
US10860370B2 (en) Synchronizing scheduling tasks with atomic ALU
CN108292237A (zh) 控制gpu的操作
CN108292238A (zh) 控制gpu的调度
US11531545B2 (en) Scheduling tasks using swap flags
US11755365B2 (en) Scheduling tasks in a processor
US20180365058A1 (en) Scheduling tasks
GB2578223A (en) Task scheduling in a GPU
GB2585306A (en) Task scheduling in a GPU
KR20240050339A (ko) 원자 조작을 위한 병렬 처리 아키텍처
GB2597868A (en) Scheduling tasks in a processor

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