Streaming Programming Generator for GPU Pipeline Automation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing GPU programming languages, such as OpenCL, DirectCompute, and CUDA, require developers to manually specify low-level details of computational pipelines, making it time-consuming and cumbersome to develop and optimize programs for general-purpose computations on GPUs.

Innovation Solution

A toolkit that allows users to define computational pipelines using a control graph with stages, buffers, and kernels, automatically generating executable streaming programs and host-side runtime code, thereby simplifying the development process and enabling execution on GPUs, multicore CPUs, or distributed clusters.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If developers manually specify low-level details of computational pipelines using existing GPU programming languages, then the programs can execute on GPUs, but the development process becomes time-consuming and cumbersome

Engineering Contradiction:
Improveprogram development speedVSAvoidtime required for manual specification
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent introduces a computational pipeline description language as an intermediary between high-level algorithmic concepts and low-level GPU instructions. This intermediate representation allows developers to specify computational pipelines at an abstract level while the system automatically generates the necessary low-level code, thereby resolving the contradiction between execution capability and development efficiency

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs preliminary actions by automatically generating kernel code, buffer management code, and pipeline configuration code before the actual GPU execution. This advance generation of low-level details from high-level specifications eliminates the need for developers to manually write time-consuming low-level code, thus improving productivity while maintaining GPU execution capability

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If developers use high-level abstractions to define computational pipelines, then the development effort is reduced, but the ability to control low-level details is lost

Engineering Contradiction:
Improveease of pipeline definitionVSAvoidcontrol over low-level details
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent segments the programming task into two distinct layers: a high-level pipeline description layer for ease of definition, and a low-level code generation layer for detailed control. The pipeline description language allows developers to work with high-level abstractions while the system segments the generation of low-level kernel code, buffer management, and synchronization details, thereby providing both ease of operation and necessary control

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system dynamically adapts the level of abstraction based on the specific computational pipeline being defined. The pipeline description language allows developers to specify high-level semantics while the code generation process dynamically produces appropriate low-level details, enabling ease of operation for common cases while maintaining the ability to control low-level details when needed

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If streaming programming languages describe only computational kernels and data buffers, then the language remains simple, but higher-level constructs cannot be expressed

Engineering Contradiction:
Improveability to express higher-level constructsVSAvoidlanguage structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent adds a new dimension to the programming model by introducing a temporal and structural dimension through the pipeline description language. This language operates at a higher conceptual dimension, describing computational pipelines as sequences of stages with data flow relationships, while the system maps these high-dimensional constructs down to the traditional kernel-buffer model, thereby enabling expression of higher-level constructs without excessive language complexity

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

Data Source

PatentUS8856760B2Streaming programming generator
Publication Date: 2014.10.07 ADVANCED MICRO DEVICES INC
  • US8856760B2 patent drawing
  • US8856760B2 patent drawing
  • US8856760B2 patent drawing

AI summary

A device receives input that includes definitions of components of a computational pipeline, where the components include one or more buffers, one or more kernels, and one or more stages within a control graph. The device generates, based on the input, kernel signatures for a graphics processor, where the kernel signatures compile into an executable streaming program for the computational pipeline. The device also generates, based on the input, host-side runtime code to execute the streaming program.