# US 11,907,756 B2 · Concurrent workload scheduling with multiple level of dependencies

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

- Number: US 11,907,756 B2
- Document ID: US11907756B2
- Status: Granted
- Kind: B2
- Application number: 16/796,836
- Filed: 2020-02-20
- Published: 2021-08-26
- Granted: 2024-02-20
- Earliest claimed: 2020-02-20
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Bartosz Dunajski; Brandon Fliflet; Michal Mrozek
- Web page: https://patentgrep.com/patent/US11907756B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/30003: {Arrangements for executing specific machine instructions}
- G06F 9/3009: {Thread control instructions}
- G06F 9/4482: {Procedural}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06T 1/60: Memory management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

A graphics processing apparatus that includes at least a memory device and an execution unit coupled to the memory. The memory device can store a command buffer with at least one command that is dependent on completion of at least one other command. The command buffer can include a jump command that causes a jump to a location in the command buffer to identify any unscheduled command. The execution unit is to jump to a location in the command buffer based on execution of the jump command. The execution unit is to perform one or more jumps to one or more locations in the command buffer to attempt to schedule a command with dependency on completion of at least one other command until the command with a dependency on completion of at least one other command is scheduled.

## Claims

### Claim 1

A graphics processing apparatus comprising:
a memory device; and
a graphics processing unit (GPU), coupled to the memory device, wherein:
the GPU comprises a processor,
the memory device is to store a command buffer, wherein the command buffer comprises a plurality of commands, wherein the plurality of commands are based on a sequence of commands, wherein a central processing unit (CPU)-executed driver for the GPU replaced semaphore wait commands from the sequence of commands with commands that cause one or more of: check if execution of a node has occurred or check if one or more dependencies of the node have completed, wherein at least one command of the plurality of commands is dependent on completion of at least one other command of the plurality of commands and the command buffer comprises a jump command of the plurality of commands to cause a jump to a location in the command buffer based on a status associated with the jump command being met,
based on execution of the jump command, the processor is to select and execute a command of the plurality of commands at the location in the command buffer, and
based on the status not being met, the processor is to perform a command of the plurality of commands associated with a next sequential location in the command buffer, wherein the at least one command of the plurality of commands that is dependent on completion of at least one other command comprises a thread spawn command to cause one or more of: memory copy, video decoding, video encoding, or drawing a 3D triangle.

### Claim 2 (depends on 1)

The graphics processing apparatus of claim 1, wherein the processor is to store an indication if a command of the plurality of commands is unscheduled, scheduled done, or not done.

### Claim 3 (depends on 1)

The graphics processing apparatus of claim 1, wherein the plurality of commands in the command buffer are each associated with different identifiers of command locations in the command buffer.

### Claim 4 (depends on 1)

The graphics processing apparatus of claim 1, wherein the command buffer includes a command of the plurality of commands to permit performance of a next sequential command in the command buffer based on no more nodes to schedule for execution.

### Claim 5 (depends on 1)

The graphics processing apparatus of claim 1, wherein the plurality of commands include a status update command and wherein performance of the status update command by the processor is to cause an update to a number of unscheduled nodes.

### Claim 6

A method comprising:
a graphics processing unit (GPU) performing:
accessing a command buffer, wherein the command buffer comprises a plurality of commands, wherein the plurality of commands are based on a sequence of commands, wherein a central processing unit (CPU)-executed driver for the GPU replaced semaphore wait commands from the sequence of commands with commands that cause one or more of: check if execution of a node has occurred or check if one or more dependencies of the node have completed and wherein at least one command of the plurality of commands is dependent on completion of at least one other command of the plurality of commands and the command buffer comprises a jump command of the plurality of commands to cause a jump to a location in the command buffer based on a status associated with the jump command being met,
based on execution of the jump command, the GPU selecting and executing a command of the plurality of commands at the location in the command buffer, and
based on the status not being met, the GPU performing a command of the plurality of commands associated with a next sequential location in the command buffer, wherein the at least one command of the plurality of commands that is dependent on completion of at least one other command comprises a thread spawn command to cause one or more of: memory copy, video decoding, video encoding, or drawing a 3D triangle.

### Claim 7 (depends on 6)

The method of claim 6, comprising:
the GPU performing:
storing an indication if a command of the plurality of commands is unscheduled, scheduled, done, or not done.

### Claim 8 (depends on 6)

The method of claim 6, wherein the plurality of commands in the command buffer are each associated with different identifiers of command locations in the command buffer.

### Claim 9 (depends on 6)

The method of claim 6, wherein the command buffer includes a command of the plurality of commands to permit performance of a next sequential command in the command buffer based on no more nodes to schedule for execution.

### Claim 10 (depends on 6)

The method of claim 6, wherein the plurality of commands include a status update command and wherein performance of the status update command by the GPU causing an update to a number of unscheduled nodes.

### Claim 11

At least one non-transitory computer-readable medium comprising instructions stored thereon, that if executed by a processor, cause the processor to:
execute a driver for a graphics processing unit (GPU) that is to:
generate a sequence of commands;
replace semaphore wait commands in the sequence of commands with commands that cause one or more of: check if execution of a node has occurred or check if one or more dependencies of the node have completed; and
store a plurality of commands in a command buffer in memory for execution by the GPU, wherein:
the plurality of commands in the command buffer include the commands that cause one or more of: check if execution of a node has occurred or check if one or more dependencies of the node have completed,
at least one command of the plurality of commands is dependent on completion of at least one other command of the plurality of commands and the command buffer comprises a jump command of the plurality of commands to cause a jump to a location in the command buffer based on a status associated with the jump command being met,
based on execution of the jump command, the GPU is to select and execute a command of the plurality of commands at the location in the command buffer,
based on the status not being met, the GPU is to perform a command of the plurality of commands associated with a next sequential location in the command buffer, and
the at least one command of the plurality of commands that is dependent on completion of at least one other command comprises a thread spawn command to cause one or more of: memory copy, video decoding, video encoding, or drawing a 3D triangle.

### Claim 12 (depends on 11)

The computer-readable medium of claim 11, wherein the GPU is to store an indication if a command of the plurality of commands is unscheduled, scheduled, done, or not done.

### Claim 13 (depends on 11)

The computer-readable medium of claim 11, wherein the plurality of commands in the command buffer are each associated with different identifiers of command locations in the command buffer.

### Claim 14 (depends on 11)

The computer-readable medium of claim 11, wherein the command buffer includes a command of the plurality of commands to permit performance of a next sequential command in the command buffer based on no more nodes to schedule for execution.

### Claim 15 (depends on 11)

The computer-readable medium of claim 11, wherein the plurality of commands include a status update command and wherein performance of the status update command by the processor is to cause an update to a number of unscheduled nodes.
