Multi-threaded Graphics Driver Command Conversion Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing systems face bottlenecks in image generation due to driver limitations, leading to poor graphics quality and latency, especially when offloading image processing from CPUs to GPUs, as they often rely on single-threaded models that restrict parallel processing and cause queue bottlenecks.

Innovation Solution

Implementing a multi-threaded approach where an idle producer thread acts as a consumer thread, splitting the queue into multiple portions to allow simultaneous processing by both the producer-turned-consumer and the consumer, thereby avoiding queue locking and enhancing driver throughput.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a single-threaded driver model is used for CPU-to-GPU command conversion, then driver simplicity is maintained, but image generation rate is limited and latency increases

Engineering Contradiction:
Improveimage generation rateVSAvoiddriver complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The driver is segmented into multiple threads (producer thread and consumer thread) that can operate independently. The queue is divided into multiple portions that can be processed simultaneously by different threads, enabling parallel command conversion and improving image generation rate without excessive complexity

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The driver model transitions from a static single-threaded approach to a dynamic multi-threaded architecture where threads can be created, scheduled, and destroyed based on workload requirements. This allows the system to adapt to varying image generation demands while maintaining high throughput

Inventive Principle:
Principle #15Dynamics

2Productivity

If a single-threaded queue processing model is used, then queue access is simple, but queue locking causes bottlenecks and reduces throughput

Engineering Contradiction:
Improvedriver throughputVSAvoidqueue management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The queue is segmented into multiple portions that can be accessed by different threads simultaneously without locking. Each thread processes a specific portion of the queue independently, eliminating the need for queue locking and improving throughput

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An intermediary mechanism is introduced to coordinate between producer and consumer threads without requiring queue locking. This mediator enables safe simultaneous access to different queue portions while maintaining synchronization

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If CPU offloads image generation to GPU, then parallel processing capability is utilized, but driver conversion introduces latency and quality degradation

Engineering Contradiction:
Improveparallel processing throughputVSAvoidcommand conversion latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

Commands are prepared and converted to GPU-executable format in advance by the producer thread before actual image generation begins. This preliminary conversion action reduces latency during the critical image generation phase

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The multi-threaded driver maintains continuous command conversion and queue processing without idle gaps. The consumer thread continuously processes commands from the queue while the producer thread continuously generates new commands, ensuring uninterrupted image generation flow

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS11948017B2Thread modification to reduce command conversion latency
Publication Date: 2024.04.02 INTEL CORP
  • US11948017B2 patent drawing
  • US11948017B2 patent drawing
  • US11948017B2 patent drawing

AI summary

Examples described herein relate to a graphics processing apparatus that includes a memory device; and a central processing unit (CPU). In some examples, the CPU is configured to: execute a producer to issue graphics command application program interfaces (APIs); execute a driver to translate graphics command APIs into executable instructions; and based on an idle state of the producer, execute a command translation code segment of the producer to translate graphics command APIs into executable instructions. In some examples, the execution unit is coupled to the memory device, the execution unit to execute one or more of the executable instructions. In some examples, the producer includes multiple portions such as application code, graphics pipeline runtime code, and command translation code segment.