# US 12,182,899 B2 · Apparatus and method for scheduling graphics processing resources

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,899 B2
- Document ID: US12182899B2
- Status: Granted
- Kind: B2
- Application number: 17/598,267
- Filed: 2019-06-24
- Published: 2022-06-16
- Granted: 2024-12-31
- Earliest claimed: 2019-06-24
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Weinan Li; Yan Zhao; Zhi Wang; Wei Zhang
- Web page: https://patentgrep.com/patent/US12182899B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/505: {considering the load}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06T 1/60: Memory management
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

An apparatus and method for scheduling workloads across virtualized graphics processors. For example, one embodiment of a graphics processing apparatus comprises first graphics processing resources to process graphics commands and execute graphics data; workload scheduling circuitry to schedule workloads for execution on the first graphics processing resources; and workload queuing circuitry to implement a local queue to store local workload entries, each local workload entry associated with a locally-submitted workload and an external workload queue to store external workload entries, each external workload entry associated with an externally-submitted workload submitted for execution by an external graphics processing apparatus, in one embodiment, the workload scheduling circuitry schedules the locally-submitted workloads identified in the local queue and externally-submitted workloads identified in the external workload queue for processing by specified portions of the first graphics processing resources.

## Claims

### Claim 1

A graphics processing apparatus comprising:
first graphics processing resources to process graphics commands and execute graphics data;
workload scheduling circuitry to schedule workloads for execution on the first graphics processing resources; and
workload queuing circuitry to implement a local workload queue to store only local workload entries, each local workload entry associated with a locally-submitted workload that is submitted by the graphics processing apparatus, and an external workload queue to store only external workload entries, each external workload entry associated with an externally-submitted workload submitted by an external graphics processing apparatus;
the workload scheduling circuitry to schedule the locally-submitted workloads identified in the local workload queue and externally-submitted workloads identified in the external workload queue for processing by specified portions of the first graphics processing resources.

### Claim 2 (depends on 1)

The graphics processing apparatus of claim 1, wherein the workload scheduling circuitry and workload queuing circuitry comprises a controller operable based on firmware stored on the graphics processing apparatus.

### Claim 3 (depends on 1)

The graphics processing apparatus of claim 1, wherein the workload scheduling circuitry comprises resource publication circuitry to generate and/or update first descriptor data in a shared memory region, the first descriptor data to indicate capabilities of the first graphics processing resources, the external graphics processing apparatus to read the first descriptor data prior to submitting the externally-submitted workload.

### Claim 4 (depends on 3)

The graphics processing apparatus of claim 3, further comprising:
notification circuitry to generate a notification to the external graphics processing apparatus upon completion of the externally-submitted workload.

### Claim 5 (depends on 4)

The graphics processing apparatus of claim 4, wherein the notification circuitry is to generate the notification by updating a doorbell region in memory, a cache, or a register accessible by the external graphics processing apparatus.

### Claim 6 (depends on 3)

The graphics processing apparatus of claim 3, wherein the workload scheduling circuitry includes offload circuitry to offload a first workload associated with a first entry in the local workload queue to second graphics processing resources of the external graphics processing apparatus.

### Claim 7 (depends on 6)

The graphics processing apparatus of claim 6, wherein the offload circuitry is to evaluate second descriptor data associated with the second graphics processing resources and additional descriptor data associated with one or more additional external graphics processing apparatuses to determine to offload the first workload to the second graphics processing resources of the external graphics processing apparatus.

### Claim 8 (depends on 7)

The graphics processing apparatus of claim 7, wherein offloading the first workload comprises removing the first entry in the local workload queue and writing a new entry in a queue accessible to the external graphics processing apparatus.

### Claim 9 (depends on 8)

The graphics processing apparatus of claim 8, wherein the first and second descriptor data comprise graphics processing data indicating graphics processing capabilities of the graphics processing apparatus and the external graphics processing apparatus, respectively, and scheduling data indicating current scheduling capabilities of the graphics processing apparatus and the external graphics processing apparatus, respectively.

### Claim 10 (depends on 1)

The graphics processing apparatus of claim 1, wherein the specified portions of the first graphics processing resources comprise virtualized portions configured by a virtualization engine.

### Claim 11 (depends on 1)

The graphics processing apparatus of claim 1, further comprising:
memory management circuitry to access page tables shared by the graphics processing apparatus and the external graphics processing apparatus to execute the locally-submitted and externally-submitted workloads.

### Claim 12

A method comprising:
receiving a first plurality of graphics workloads submitted locally by a graphics processing apparatus;
generating an entry for each of the first plurality of graphics workloads in a local workload queue of the graphics processing apparatus that stores only the first plurality of graphics workloads submitted locally by the graphics processing apparatus;
receiving a second plurality of graphics workloads from one or more external graphics processing devices;
generating an entry for each of the second plurality of graphics workloads in an external workload queue of the graphics processing apparatus that stores only the second plurality of graphics workloads received from the one or more external graphics processing devices; and
scheduling the first plurality of graphics workloads and the second plurality of graphics workloads on specified portions of first graphics processing resources of the graphics processing apparatus in accordance with a scheduling policy.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
interpreting firmware of the graphics processing apparatus to schedule the first plurality of graphics workloads and the second plurality of graphics workloads on specified portions of the first graphics processing resources in accordance with a scheduling policy.

### Claim 14 (depends on 13)

The method of claim 13, wherein a controller is to interpret the firmware to schedule the first plurality of graphics workloads and the second plurality of graphics workloads and to manage the local workload queue and the external workload queue.

### Claim 15 (depends on 12)

The method of claim 12, further comprising:
generating and/or updating first descriptor data in a shared memory region, the first descriptor data to indicate capabilities of the first graphics processing resources, the external graphics processing devices to read the first descriptor data prior to submitting the second plurality of graphics workloads.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
generating a notification to a first external graphics processing device upon completion of a first workload of the second plurality of graphics workloads.

### Claim 17 (depends on 16)

The method of claim 16, wherein generating the notification comprises updating a doorbell region in memory, a cache, or a register accessible by the first external graphics processing device.

### Claim 18 (depends on 15)

The method of claim 15, further comprising:
offloading a first workload associated with a first entry in the local workload queue to graphics processing resources of a first external graphics processing device.

### Claim 19 (depends on 18)

The method of claim 18, further comprising:
evaluating second descriptor data associated with the graphics processing resources and additional descriptor data associated with one or more additional external graphics processing devices to determine to offload the first workload to the graphics processing resources of the first external graphics processing device.

### Claim 20

A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform:
receiving a first plurality of graphics workloads submitted locally by a graphics processing apparatus;
generating an entry for each of the first plurality of graphics workloads in a local workload queue of the graphics processing apparatus that stores only the first plurality of graphics workloads submitted locally by the graphics processing apparatus;
receiving a second plurality of graphics workloads from one or more external graphics processing devices;
generating an entry for each of the second plurality of graphics workloads in an external workload queue of the graphics processing apparatus that stores only the second plurality of graphics workloads received from the one or more external graphics processing devices; and
scheduling the first plurality of graphics workloads and the second plurality of graphics workloads on specified portions of first graphics processing resources of the graphics processing apparatus in accordance with a scheduling policy.

### Claim 21 (depends on 20)

The non-transitory machine-readable medium of claim 20, further comprising program code to cause the machine to perform:
interpreting firmware of the graphics processing apparatus to schedule the first plurality of graphics workloads and the second plurality of graphics workloads on specified portions of the first graphics processing resources in accordance with a scheduling policy.
