Asynchronous Command Buffering for GPU Processing Bottlenecks

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern computing systems face inefficiencies due to unbalanced usage of processing unit cores and CPU bottlenecks, particularly in the driver thread, which limits performance and increases costs in submitting command streams to processing units.

Innovation Solution

A system and method for allocating commands that involves an application providing commands through an API, a device driver buffering and converting commands, and an operating system building a command buffer to be asynchronously submitted to a GPU, allowing the allocation of commands to available processors for efficient execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If commands are submitted through the traditional driver stack with sequential processing, then command stream processing is completed, but CPU bottleneck and driver thread performance limitation occur

Engineering Contradiction:
Improvecommand stream processing throughputVSAvoidtime spent in operating system components
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by pre-processing and converting API commands to GPU commands in advance, building command buffers before submission. This allows the driver to prepare command streams ahead of time, reducing the critical path duration and minimizing the time commands spend in the operating system stack during execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The command stream processing is segmented into distinct phases: API command conversion, command buffer building, and GPU submission. By dividing the sequential processing into parallelizable segments, the system can overlap operations between CPU and GPU, reducing overall processing time and eliminating the driver thread bottleneck.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If processing work is concentrated on a single driver thread, then command conversion is simplified, but CPU bottleneck and performance limitation occur

Engineering Contradiction:
Improvedriver thread simplicityVSAvoidprocessing throughput
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The system transitions from a single-threaded sequential model to a multi-dimensional parallel processing model by introducing multiple worker threads that can simultaneously process different command buffers. This dimensional expansion allows the system to maintain operational simplicity while dramatically increasing throughput by utilizing multiple CPU cores.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Solution Approach 2:

Command buffers serve as intermediaries between the API command conversion stage and the GPU execution stage. These buffers decouple the driver thread from real-time GPU submission requirements, allowing commands to be prepared in advance and submitted asynchronously, thereby eliminating the driver thread as a performance bottleneck.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Ease of manufacture

If command stream submission uses traditional sequential processing, then processing is straightforward, but significant percentage of cost is consumed in submission overhead

Engineering Contradiction:
Improvesubmission process simplicityVSAvoidsubmission overhead cost
Core Design Contradiction:
Ease of manufactureVSLoss of energy

Solution Approach 1:

The system maintains continuous useful action by keeping the GPU fed with command buffers through asynchronous submission mechanisms. While the GPU processes one command buffer, the CPU can simultaneously prepare the next buffer, ensuring continuous utilization of expensive GPU resources without idle gaps, thereby reducing the relative overhead of submission operations.

Inventive Principle:
Principle #20Continuity of useful action

Solution Approach 2:

The command submission system becomes dynamic by allowing flexible adjustment of buffer sizes, submission frequencies, and processor allocation based on workload characteristics. This dynamic behavior optimizes the balance between submission overhead and GPU utilization, reducing energy waste by adapting to real-time system conditions rather than following a fixed sequential pattern.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9632848B1Asynchronous submission of commands
Publication Date: 2017.04.25 ADVANCED MICRO DEVICES INC
  • US9632848B1 patent drawing
  • US9632848B1 patent drawing
  • US9632848B1 patent drawing

AI summary

A system and method for allocating commands in processing is disclosed. The system and method includes an application running on a computer system that provides commands to be executed on one of a plurality of processors capable of executing the commands, the commands provided through an application programming interface, a device driver that buffers the streamed commands and converts the streamed commands into a format used by a GPU, and an operating system that builds a command buffer by grouping a plurality of converted commands based on an allocation for an available processor, wherein the available processor is determined in the interface between the device driver and the operating system. The available processor is one of the plurality of processors capable of executing the commands that receives the command buffer from the operating system, queues the command buffer and performs an asynchronous submission of the command buffer to the GPU, and the GPU executes the command buffer.