IP Library Granted Patent US 11,100,604
Granted Patent B2
US 11,100,604 · App. 16/263,709 · Granted Aug 24, 2021

Multiple application cooperative frame-based GPU scheduling

Inventors: Jeffrey Gongxian Cheng (Toronto, CA); Ahmed M. Abdelkhalek (Ajax, CA); Yinan Jiang (Richmond Hill, CA); Xingsheng Wan (Richmond Hill, CA); Anthony Asaro (Toronto, CA); David Martinez Nieto (El Cerrito, CA)
Assignees: Advanced Micro Devices, Inc.; ATI Technologies ULC
G06T1/20G06F9/3877G06F9/4881G06T15/005
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 11,100,604
App. No.
16/263,709
Granted
Aug 24, 2021
Kind
B2
Abstract

Systems, apparatuses, and methods for scheduling jobs for multiple frame-based applications are disclosed. A computing system executes a plurality of frame-based applications for generating pixels for display. The applications convey signals to a scheduler to notify the scheduler of various events within a given frame being rendered. The scheduler adjusts the priorities of applications based on the signals received from the applications. The scheduler attempts to adjust priorities of applications and schedule jobs from these applications so as to minimize the perceived latency of each application. When an application has enqueued the last job for the current frame, the scheduler raises the priority of the application to high. This results in the scheduler attempting to schedule all remaining jobs for the application back-to-back. Once all jobs of the application have been completed, the priority of the application is reduced, permitting jobs of other applications to be executed.

Claims (40)

1. A system comprising:

a data parallel processor comprising:

a controller configured to receive jobs of a plurality of applications from a host processor;

a scheduler configured to issue the jobs of the plurality of applications; and

a plurality of compute units configured to execute issued jobs of the plurality of applications;

wherein the scheduler is configured to:

adjust a priority of a first application responsive to receiving a signal from the first application indicating a change in a frame job status for the first application, wherein the frame job status relates to a current frame being rendered by the first application; and

determine which job of an application to schedule on the plurality of compute units based at least in part on a priority assigned to the application;

wherein the plurality of compute units are configured to execute jobs of the plurality of applications to generate pixels to be driven to a display.

2. The system as recited in claim 1 , wherein the scheduler is configured to increase a priority of the first application responsive to receiving the signal indicating that all jobs have been queued for the first application for the current frame.

3. The system as recited in claim 2 , wherein the scheduler is configured to preempt execution of a second application on the plurality of compute units with the first application responsive to determining the second application is assigned a low priority.

4. The system as recited in claim 2 , wherein the scheduler is configured to preempt execution of a second application on the plurality of compute units with the first application responsive to determining the second application is assigned a high priority and responsive to determining that a time quanta for executing the second application has expired.

5. The system as recited in claim 1 , wherein the scheduler is configured to decrease a priority of the first application responsive to receiving the signal indicating that execution of a final job for the current frame has completed.

6. The system as recited in claim 5 , wherein the scheduler is configured to preempt execution of the first application on the plurality of compute units with a second application responsive to determining that the second application is assigned a high priority.

7. The system as recited in claim 6 , wherein the scheduler is configured to preempt execution of the first application on the plurality of compute units with the second application even if a time quanta for executing the first application has not expired.

8. A method comprising:

receiving, by a controller of a data parallel processor, jobs of a plurality of applications from a host processor;

issuing, by a scheduler of a data parallel processor, the jobs of the plurality of applications;

adjusting, by the scheduler, a priority of a first application responsive to receiving a signal from the first application indicating a change in a frame job status for the first application, wherein the frame job status relates to a current frame being rendered by the first application;

determining which job of an application to schedule on a plurality of compute units of the data parallel processor based at least in part on a priority assigned to the application; and

executing, in an order determined by the scheduler, jobs of a plurality of applications on the plurality of compute units to generate pixels to be driven to a display.

9. The method as recited in claim 8 , further comprising increasing a priority of the first application responsive to receiving the signal indicating that all jobs have been queued for the first application for the current frame.

10. The method as recited in claim 9 , further comprising preempting execution of a second application on the plurality of compute units with the first application responsive to determining the second application is assigned a low priority.

11. The method as recited in claim 9 , further comprising preempting execution of a second application on the plurality of compute units with the first application responsive to determining the second application is assigned a high priority and responsive to determining that a time quanta for executing the second application has expired.

12. The method as recited in claim 8 , further comprising decreasing a priority of the first application responsive to receiving the signal indicating that execution of a final job for the current frame has completed.

13. The method as recited in claim 12 , further comprising preempting execution of the first application on the plurality of compute units with a second application responsive to determining that the second application is assigned a high priority.

14. The method as recited in claim 13 , further comprising preempt execution of the first application on the plurality of compute units with the second application even if a time quanta for executing the first application has not expired.

15. An apparatus comprising:

a controller configured to receive jobs of a plurality of applications from a host processor;

a scheduler configured to issue the jobs of the plurality of applications; and

a memory for storing one or more queues;

wherein the scheduler is configured to:

adjust a priority of a first application responsive to receiving a signal from the first application indicating a change in a frame job status for the first application, wherein the frame job status relates to a current frame being rendered by the first application; and

determine which job, stored in the one or more queues, of an application to schedule on a plurality of compute units based at least in part on a priority assigned to the application;

wherein the apparatus is configured to execute, in an order determined by the scheduler, jobs of a plurality of applications to generate pixels to be driven to a display.

16. The apparatus as recited in claim 15 , wherein the scheduler is configured to increase a priority of the first application responsive to receiving the signal indicating that all jobs have been queued for the first application for the current frame.

17. The apparatus as recited in claim 15 , wherein the scheduler is configured to preempt execution of a second application on the apparatus with the first application responsive to determining the second application is assigned a low priority.

18. The apparatus as recited in claim 16 , wherein the scheduler is configured to preempt execution of a second application on the plurality of compute units with the first application responsive to determining the second application is assigned a high priority and responsive to determining that a time quanta for executing the second application has expired.

19. The apparatus as recited in claim 15 , wherein the scheduler is configured to decrease a priority of the first application responsive to receiving the signal indicating that execution of a final job for the current frame has completed.

20. The apparatus as recited in claim 19 , wherein the scheduler is configured to preempt execution of the first application on the plurality of compute units with a second application responsive to determining that the second application is assigned a high priority.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2019
From: MARTINEZ NIETO, DAVID
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 048387/0483 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2019
From: CHENG, JEFFREY GONGXIAN; ABDELKHALEK, AHMED M.; JIANG, YINAN; WAN, XINGSHENG; ASARO, ANTHONY
To: ATI TECHNOLOGIES ULC
Reel/Frame 048387/0522 →
Continuity (1)
Related Publication 20200250787A1 · Aug 6, 2020
Cited By (1)
US 12,614,420