GPU Stateless Graphics Workload Generation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing unit (GPU) APIs have limited capacity for creating workloads within the GPU, requiring significant CPU intervention for generating and managing workloads to be processed by the GPU, which restricts independent ordering and parallelization of graphics workloads.

Innovation Solution

A method is introduced where the GPU generates and submits graphics workloads by allocating shader accessible memory for state information, allowing the GPU to process workloads independently with minimal CPU intervention, utilizing a compute shader engine and state objects to manage and transmit necessary state information directly to the GPU command queue.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the CPU is responsible for setting up state information and submitting work to the GPU, then the graphics processing pipeline can be properly configured and executed, but the CPU becomes a bottleneck that limits parallelization and independent ordering of GPU workloads

Engineering Contradiction:
ImproveGPU workload generation efficiencyVSAvoidCPU-GPU coordination complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The GPU is empowered to create its own workloads by executing compute shaders that generate draw commands, allocate state information, and submit work to the command queue autonomously. This self-service capability eliminates the CPU bottleneck by allowing the GPU to independently generate and queue multiple workloads without requiring CPU intervention for each individual workload submission.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The workload generation process is segmented into discrete state objects that can be independently created, managed, and submitted. Each state object encapsulates specific state information and corresponding draw commands, allowing the GPU to selectively generate and execute specific workloads in parallel without requiring centralized CPU coordination for the entire workload sequence.

Inventive Principle:
Principle #1Segmentation

2Extent of automation

If state information is transmitted from the CPU to the GPU via a driver, then the GPU can be properly configured for processing, but the CPU thread must remain active and intervene for each workload, limiting parallelization

Engineering Contradiction:
ImproveGPU autonomous workload creationVSAvoidCPU-GPU communication overhead
Core Design Contradiction:
Extent of automationVSLoss of time

Solution Approach 1:

State objects serve as intermediaries between the GPU's autonomous workload generation and the command queue. These state objects pre-pack state information and draw commands in a format that can be directly submitted to the GPU command queue without requiring real-time CPU driver intervention, thereby reducing communication overhead and enabling asynchronous parallel workload submission.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

State information and draw commands are prepared and packaged into state objects in advance by the GPU itself during the workload generation phase. This preliminary action eliminates the need for real-time CPU driver intervention during workload execution, as the GPU can directly submit pre-packaged state objects to the command queue without waiting for CPU confirmation or configuration.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If the GPU generates workloads internally using shader accessible memory for state information, then CPU dependency is reduced and parallelization is enabled, but new mechanisms for memory management and state tracking are required

Engineering Contradiction:
ImproveGraphics workload processing throughputVSAvoidGPU internal state management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The GPU's shader execution units are given multi-functionality, serving both their traditional role of processing graphics shaders and the additional role of generating workloads and managing state information. This universal capability allows the same hardware resources to perform multiple functions without requiring separate dedicated hardware for workload generation, thereby increasing productivity while managing complexity through resource consolidation.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS9275491B2GPU work creation and stateless graphics in OPENGL
Publication Date: 2016.03.01 NVIDIA CORP
  • US9275491B2 patent drawing
  • US9275491B2 patent drawing
  • US9275491B2 patent drawing

AI summary

One embodiment of the present invention sets forth a method for generating work to be processed by a graphics pipeline residing within a graphics processor. The method includes the steps of receiving an indication that a first graphics workload is to be submitted to a command queue associated with the graphics processor, allocating a first portion of shader accessible memory for one or more units of state information that are necessary for processing the first graphics workload, populating the first portion of shader accessible memory with the one or more units of state information, and transmitting to the command queue of the graphics processor the one or more units of state information stored within the first portion of shader accessible memory, wherein the first graphics workload is processed within the graphics pipeline based on the one or more units of state information.