IP Library › Granted Patent US 10,620,994
Granted Patent B2
US 10,620,994 · App. 15/607,991 · Granted Apr 14, 2020

Continuation analysis tasks for GPU task scheduling

Inventors: Steven Tony Tye (Hopkinton, MA); Brian L. Sumner (Bellevue, WA); Bradford Michael Beckmann (Redmond, WA); Sooraj Puthoor (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F9/4881G06F9/3836G06F9/3877G06F9/505G06F9/5083G06F9/522G06F9/3855
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,620,994
App. No.
15/607,991
Granted
Apr 14, 2020
Kind
B2
Abstract

Systems, apparatuses, and methods for implementing continuation analysis tasks (CATs) are disclosed. In one embodiment, a system implements hardware acceleration of CATs to manage the dependencies and scheduling of an application composed of multiple tasks. In one embodiment, a continuation packet is referenced directly by a first task. When the first task completes, the first task enqueues a continuation packet on a first queue. The first task can specify on which queue to place the continuation packet. The agent responsible for the first queue dequeues and executes the continuation packet which invokes an analysis phase which is performed prior to determining which dependent tasks to enqueue. If it is determined during the analysis phase that a second task is now ready to be launched, the second task is enqueued on one of the queues. Then, an agent responsible for this queue dequeues and executes the second task.

Claims (58)

1. A system comprising:

a plurality of compute units;

one or more command processors; and

a plurality of queues;

wherein the system is configured to:

execute a first task on one or more of the plurality of compute units;

specify, by the first task, a continuation packet and a first queue on which to enqueue the continuation packet when the first task completes;

enqueue the continuation packet on the first queue responsive to completing the first task; and

dequeue and execute, by a first command processor, the continuation packet, wherein the continuation packet causes one or more tasks, including a second task, to be enqueued on one or more of the plurality of queues, wherein the one or more tasks are dependent on the first task;

wherein the first command processor is configured to enqueue the second task on a given queue responsive to determining that one or more dependencies have been satisfied which allow the second task to be enqueued on the given queue, and wherein the one or more tasks specify the given queue for enqueuing the second task.

2. The system as recited in claim 1 , further comprising:

determining a load balance status of the plurality of compute units; and

selecting a queue corresponding to a first compute unit for enqueuing the second task responsive to determining a load on the first compute unit is below a threshold.

3. The system as recited in claim 1 , wherein the system comprises a graphics processing unit (GPU) and a central processing unit (CPU), and wherein the first command processor is a multithreaded command processor which is integrated within the GPU and task scheduling and completion interfaces of the GPU.

4. The system as recited in claim 1 , wherein packets stored on each queue of the plurality of queues are processed in order.

5. The system as recited in claim 1 , further comprising a central processing unit (CPU), wherein the CPU dequeues and executes the continuation packet to cause a second task to be enqueued on a CPU software queue.

6. A method comprising:

executing a first task on one or more compute units;

specifying, by the first task, a continuation packet and a first queue on which to enqueue the continuation packet when the first task completes;

enqueuing the continuation packet on the first queue responsive to completing the first task; and

dequeuing and executing, by a first command processor, the continuation packet, wherein the continuation packet causes one or more tasks, including a second task, to be enqueued on one or more queues, wherein the one or more tasks are dependent on the first task;

wherein the first command processor is configured to enqueue the second task on a given queue responsive to determining that one or more dependencies have been satisfied which allow the second task to be enqueued on the given queue, and wherein the one or more tasks specify the given queue for enqueuing the second task.

7. The method as recited in claim 6 , further comprising:

determining a load balance status of the plurality of compute units; and

selecting a queue corresponding to a first compute unit for enqueuing the second task responsive to determining a load on the first compute unit is below a threshold.

8. The method as recited in claim 6 , wherein the first command processor is a multithreaded command processor which is integrated within a graphics processing unit (GPU) and task scheduling and completion interfaces of the GPU.

9. The method as recited in claim 6 , wherein packets stored on each queue of the plurality of queues are processed in order.

10. The method as recited in claim 6 , further comprising dequeuing and executing, by a central processing unit (CPU), the continuation packet to cause a second task to be enqueued on a CPU software queue.

11. An apparatus comprising:

one or more command processors; and

a plurality of queues;

wherein the apparatus is configured to:

execute a first task on one or more compute units;

specify, by the first task, a continuation packet and a first queue on which to enqueue the continuation packet when the first task completes;

enqueue the continuation packet on the first queue responsive to completing the first task; and

dequeue and execute, by a first command processor, the continuation packet, wherein the continuation packet causes one or more tasks, including a second task, to be enqueued on one or more of the plurality of queues, wherein the one or more tasks are dependent on the first task;

wherein the first command processor is configured to enqueue the second task on a given queue responsive to determining that one or more dependencies have been satisfied which allow the second task to be enqueued on the given queue, and wherein the one or more tasks specify the given queue for enqueuing the second task.

12. The apparatus as recited in claim 11 , wherein the apparatus is further configured to:

determine a load balance status of the plurality of compute units; and

select a queue corresponding to a first compute unit for enqueuing the second task responsive to determining a load on the first compute unit is below a threshold.

13. The apparatus as recited in claim 11 , wherein the apparatus comprises a graphics processing unit (GPU) and a central processing unit (CPU), and wherein the first command processor is a multithreaded command processor which is integrated within the GPU and task scheduling and completion interfaces of the GPU.

14. The apparatus as recited in claim 11 , wherein packets stored on each queue of the plurality of queues are processed in order.

15. A system comprising:

a plurality of compute units;

one or more command processors; and

a plurality of queues;

wherein the system is configured to:

execute a first task on one or more of the plurality of compute units;

specify, by the first task, a continuation packet and a first queue on which to enqueue the continuation packet when the first task completes;

enqueue the continuation packet on the first queue responsive to completing the first task; and

dequeue and execute, by a first command processor, the continuation packet, wherein the continuation packet causes one or more tasks to be enqueued on one or more of the plurality of queues, wherein the one or more tasks are dependent on the first task;

wherein the first command processor is a multithreaded command processor which is integrated within a GPU and task scheduling and completion interfaces of the GPU.

16. A method comprising:

executing a first task on one or more compute units;

specifying, by the first task, a continuation packet and a first queue on which to enqueue the continuation packet when the first task completes;

enqueuing the continuation packet on the first queue responsive to completing the first task; and

dequeuing and executing, by a first command processor, the continuation packet, wherein the continuation packet causes one or more tasks to be enqueued on one or more queues, wherein the one or more tasks are dependent on the first task;

wherein the first command processor is a multithreaded command processor which is integrated within a GPU and task scheduling and completion interfaces of the GPU.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: TYE, STEVEN TONY; SUMNER, BRIAN L.; BECKMANN, BRADFORD MICHAEL; PUTHOOR, SOORAJ
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 042705/0912 →
Continuity (1)
Related Publication 20180349145A1 · Dec 6, 2018