Task scheduling in a GPU using wakeup event state data

US11720399B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11720399-B2
Application numberUS-202117540009-A
CountryUS
Kind codeB2
Filing dateDec 1, 2021
Priority dateSep 23, 2016
Publication dateAug 8, 2023
Grant dateAug 8, 2023

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A method of scheduling tasks within a GPU or other highly parallel processing unit is described which is both age-aware and wakeup event driven. Tasks which are received are added to an age-based task queue. Wakeup event bits for task types, or combinations of task types and data groups, are set in response to completion of a task dependency and these wakeup event bits are used to select an oldest task from the queue that satisfies predefined criteria.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of scheduling tasks in a task queue within a processor, the task queue comprising tasks having task identifiers, wherein a task identifier is a task type identifier or a source identifier, the method comprising: in response to receiving, at a task scheduling engine, an indication that a dependency for a task in the task queue has completed, updating wakeup event state data of the processor to indicate a wakeup event for the task identifier of the task; identifying one or more candidate task types or sources based on the wakeup event state data indicating a wakeup event; and selecting a task for execution based on the identified one or more candidate task types or sources. 2. The method according to claim 1 , further comprising, in response to receiving an indication that a dependency for a task in the task queue has completed, clearing a state bit for the task that relates to the completed dependency. 3. The method according to claim 1 , wherein updating wakeup event state data for the task identifier of the task comprises setting a wakeup event state bit for a task type or source corresponding to the task identifier of the task. 4. The method according to claim 1 , wherein a task has a both a task identifier and a data group identifier, wherein the wakeup event state data is updated for a combination of the task type or source corresponding to the task identifier of the task and the data group corresponding to the data group identifier of the task, and wherein selecting a task for execution based on the identified one or more candidate task types or sources comprises: selecting a task for execution based on the identified one or more candidate task types or sources that has a task identifier and data group identifier that correspond to wakeup event state data that has been updated. 5. The method according to claim 4 , wherein a wakeup event state bit is set for the combination of the task type or source corresponding to the task identifier of the task and the data group corresponding to the data group identifier of the task and selecting a task for execution based on the identified one or more candidate task types or sources that has a task identifier and data group identifier that correspond to wakeup event state data that has been updated comprises: selecting a task for execution based on the identified one or more candidate task types or sources that has a task identifier and data group identifier that correspond to a wakeup event state bit that has been set. 6. The method according to claim 4 , further comprising: in response to determining that the selected task does not have all its dependencies met, clearing the wakeup event state data for the task identifier and data group identifier of the identified task; and selecting a task for execution based on the identified one or more candidate task types or sources that has a task identifier and data group identifier that correspond to wakeup event state data that has been updated. 7. The method according to claim 1 , further comprising: in response to receiving a task at the task scheduling engine, adding the task to the task queue. 8. The method according to claim 1 , further comprising: in response to receiving, at the task scheduling engine, an indication that a task has completed execution, removing the task from the task queue. 9. The method according to claim 1 , further comprising: in response to receiving, at the task scheduling engine, an indication that a task has completed execution, determining if the task is a first phase task of a multi-phase task; in response to determining that the task is not a first phase task of a multi-phase task, removing the task from the task queue; and in response to determining that the task is a first phase task of a multi-phase task, scheduling a second phase task of the multi-phase task. 10. The method according to claim 9 , wherein selecting a task for execution based on the identified one or more candidate task types or sources further comprises prioritizing selection of a task that is a second phase task of a multi-phase task over tasks that are not second phase tasks. 11. A scheduler for a processor comprising: a task scheduling engine; a task queue comprising tasks having task identifiers, wherein a task identifier is a task type identifier or a source identifier; and a data store arranged to store wakeup state data; wherein the task scheduling engine comprises: a first hardware logic block arranged, in response to receiving an indication that a dependency for a task in the task queue has completed, to update wakeup event state data of the processor to indicate a wakeup event for the task identifier of the task; and a second hardware logic block arranged to identify one or more candidate task types or sources based on the wakeup event state data indicating a wakeup event and to select a task for execution based on the identified one or more candidate task types or sources. 12. The scheduler according to claim 11 , wherein the wakeup state data comprises a plurality of wakeup state bits. 13. The scheduler according to claim 12 , wherein the first hardware logic is arranged, in response to receiving an indication that a dependency for a task in the task queue has completed, to clear a state bit for the task that relates to the completed dependency and to update a wakeup event state bit for a task type or source corresponding to the task identifier of the task, and wherein the second hardware logic block is arranged to identify one or more candidate task types or sources based on the wakeup event state bits and to select a task for execution based on the identified one or more candidate task types or sources. 14. The scheduler according to claim 13 , wherein a task has a both a task identifier and a data group identifier, wherein the first hardware logic block is arranged to set a wakeup event state bit for a combination of the task type or source corresponding to the task identifier of the task and the data group corresponding to the data group identifier of the task, and wherein the second hardware logic block is arranged to select a task for execution based on the identified one or more candidate task types or sources that has a task identifier and data group identifier that correspond to a wakeup event state bit that has been updated. 15. The scheduler according to claim 14 , wherein the second logic block is further arranged, in response to determining that the selected task does not have all its dependencies met, to clear the wakeup event state bit for the task identifier and data group identifier of the identified task and to select a task for execution based on the identified one or more candidate task types or sources that has a task type identifier and data group identifier that correspond to a wakeup event state bit that has been set. 16. The scheduler according to claim 11 , further comprising: a third hardware logic block arranged, in response to receiving a task, to add the task to the task queue. 17. The scheduler according to claim 11 , further comprising: a fourth hardware logic block arranged, in response to receiving an indication that a task has completed execution, to remove the task from the task queue. 18. The scheduler according to claim 11 , further comprising: a fourth hardware logic block arranged, in response to receiving an indication that a task has completed execution, to determine if the task is a first phase task of a multi-phase task; and in response

Assignees

Inventors

Classifications

  • G06F9/4881Primary

    Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues · CPC title

  • by task scheduling · CPC title

  • taking into account power or heat criteria (power management in computers in general G06F1/3203; thermal management in computers in general G06F1/206) · CPC title

  • the resource being a machine, e.g. CPUs, Servers, Terminals · CPC title

  • Multiproc · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11720399B2 cover?
A method of scheduling tasks within a GPU or other highly parallel processing unit is described which is both age-aware and wakeup event driven. Tasks which are received are added to an age-based task queue. Wakeup event bits for task types, or combinations of task types and data groups, are set in response to completion of a task dependency and these wakeup event bits are used to select an old…
Who is the assignee on this patent?
Imagination Tech Ltd
What technology area does this patent fall under?
Primary CPC classification G06F9/4881. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 08 2023 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 7 related publications on this page (citations in our corpus or others sharing the same primary CPC).