IP Library Granted Patent US 11,977,933
Granted Patent B2
US 11,977,933 · App. 16/721,434 · Granted May 7, 2024

Gang scheduling with an onboard graphics processing unit and user-based queues

Inventor: Rex Eldon McCrary (Orlando, FL)
Assignee: Advanced Micro Devices, Inc.
G06F9/544G06F9/3867G06F9/4812G06F9/4881G06F9/5011G06F9/546
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,977,933
App. No.
16/721,434
Granted
May 7, 2024
Kind
B2
Abstract

A processing unit such as a graphics processing unit (GPU) includes a set of queues that stores command buffers prior to execution in a corresponding plurality of pipelines. The processing unit also implements a kernel mode driver that allocates a first subset of the set of queues to a first application in response to receiving registration requests from the first application. The processing unit further includes a scheduler that schedules command buffers in the first subset of the set of queues for concurrent execution on a first subset of the set of pipelines. In some cases, an interrupt is generated in response to execution of a first command in a first command buffer in the first queue or the second queue. The interrupt includes an address indicating a location of a routine to be executed by a second subset of the plurality of pipelines.

Claims (45)

1. An apparatus, comprising:

a plurality of hardware queues configured to store command buffers prior to execution in respective pipelines of a plurality of pipelines;

a processor configured to, based on a request identifying a first group of hardware queues of the plurality of hardware queues from a first application, allocate at least one hardware queue of the first group of hardware queues to the first application;

and

a scheduler configured to gang schedule command buffers stored in the first group of hardware queues of the plurality of hardware queues for concurrent execution on respective pipelines.

2. The apparatus of claim 1 , wherein:

the processor is configured to allocate queues of the plurality of hardware queues to applications.

3. The apparatus of claim 2 , wherein:

the scheduler is configured to introduce predetermined delays between the command buffers stored in the first group of hardware queues.

4. The apparatus of claim 2 , wherein:

the processor is configured to modify an allocation of the plurality of hardware queues in response to a modification request.

5. The apparatus of claim 4 , wherein:

modifying the allocation of the plurality of hardware queues comprises reallocating a first queue from the first application to a second application.

6. The apparatus of claim 2 , wherein:

the processor is to reconfigure priorities of at least one of the plurality of hardware queues in response to a reconfiguration request.

7. The apparatus of claim 1 , wherein:

in response to receiving an interrupt that comprises an address indicating a location of a routine to be executed by a second plurality of pipelines, the scheduler is configured to use the address to access a data structure that identifies the routine.

8. The apparatus of claim 7 , wherein:

in response to the scheduler accessing the data structure that identifies the routine, the routine is to generate a plurality of hardware queue allocation requests for a second group that differs from a first group of a command that generated the interrupt.

9. A method, comprising:

allocating, at a processor, a first plurality of queues from a first group of queues to a first application based on requests received from the first application each identifying the first group of queues, wherein the first plurality of queues is configured to store command buffers prior to execution in respective pipelines of a first plurality of pipelines; and

gang scheduling command buffers from the first plurality of queues in the first group of queues for concurrent execution on the respective pipelines of the first plurality of pipelines.

10. The method of claim 9 , further comprising:

receiving, at the processor, a modification request from the first application; and

reallocating at least one queue of the first plurality of queues from the first application to a second application in response to receiving the modification request.

11. The method of claim 9 , further comprising:

adding predetermined delays between the command buffers stored in the first plurality of queues.

12. The method of claim 9 , further comprising:

deallocating the first plurality of queues from the first application in response to at least one of detecting expiration of a time quantum and detecting that the first plurality of queues is empty.

13. A method, comprising:

allocating, at a processor, a first queue of a first group of queues to a first application based on a first request received from the first application identifying the first group of queues, wherein the first queue is configured to store command buffers prior to execution in a first pipeline;

allocating, at the processor, a second queue of the first group of queues to the first application based on a second request received from the first application identifying the first group of queues, wherein the second queue is configured to store command buffers prior to execution in a second pipeline; and

gang scheduling a first group of command buffers from the first application to the first queue and the second queue for concurrent execution on the first pipeline and the second pipeline.

14. The method of claim 13 , wherein gang scheduling the first group of command buffers comprises:

in response to a delay indication from the first application, introducing a predetermined delay between execution of a first command buffer scheduled to the first queue and a second command buffer scheduled to the second queue.

15. The method of claim 13 , further comprising:

hierarchically gang scheduling a second group of command buffers from the first application to a third queue for concurrent execution with the first group of command buffers, wherein the second group of command buffers are to be executed on a third pipeline associated with the third queue.

16. The method of claim 15 , wherein hierarchically gang scheduling the second group of command buffers comprises:

generating an interrupt in response to execution of a first command in a first command buffer in the first queue, wherein the interrupt comprises an address;

accessing a data structure using the address, wherein the data structure identifies a routine that generates a third registration request that comprises a second group identifier; and

allocating the third queue to the first application in response to the third registration request.

17. The method of claim 15 , wherein hierarchically gang scheduling the second group of command buffers comprises:

gang scheduling a third group of command buffers from the first application to a fourth queue for concurrent execution with the first group of command buffers, wherein the third group of command buffers are to be executed on a fourth pipeline associated with the fourth queue.

18. The method of claim 13 , further comprising:

deallocating the first queue from the first application in response to at least one of expiration of a time quantum and the first queue becoming empty, wherein the first queue is allocated to the first application for the time quantum.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2021
From: MCCRARY, REX ELDON
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 055353/0678 →
Continuity (1)
Related Publication 20210191793A1 · Jun 24, 2021