Unified GPU Programming Language Compiler System

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing programming languages and APIs for GPUs complicate the combination of graphics and compute data-parallel tasks, leading to performance degradation and inconvenient code writing due to the need for different APIs and languages, such as C++ for CPUs.

Innovation Solution

A unified programming language and compiler system that generates a machine-independent intermediate representation, allowing developers to write efficient multi-threaded programs for GPUs, enabling both graphics and compute processing without worrying about specific GPU architectures, and allowing for ahead-of-time compilation or just-in-time interpretation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If different APIs are used for graphics and compute tasks, then each task type can be optimized for its specific purpose, but the system complexity increases and performance degrades due to the need to manage multiple APIs

Engineering Contradiction:
Improvetask optimizationVSAvoidAPI management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges graphics and compute task processing into a single unified API framework. The programming language and compiler system provide a common interface that handles both graphics rendering and general-purpose computing tasks, eliminating the need to switch between multiple specialized APIs while maintaining optimization capabilities for each task type through unified resource management and execution pipelines.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The unified programming language and compiler system is designed to be universal, supporting both graphics and compute tasks through a single interface. The system can execute diverse workloads including traditional graphics rendering, compute shaders, and general-purpose parallel computing all through the same API, making the system multi-functional without requiring separate specialized interfaces.

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

2Productivity

If specialized languages are used for GPU programming, then GPU-specific optimizations can be achieved, but developer convenience decreases due to the need to learn languages different from common CPU programming languages

Engineering Contradiction:
ImproveGPU optimization capabilityVSAvoiddeveloper convenience
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent introduces a compiler system as an intermediary between the developer's high-level code and the GPU's low-level execution requirements. The compiler translates standard programming language code into optimized GPU instructions, allowing developers to write code in familiar languages while still achieving GPU-specific optimizations through the compilation process rather than requiring specialized GPU programming languages.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system allows parameter changes in the programming language to enable GPU-specific optimizations. The compiler can adjust compilation parameters, optimization levels, and execution strategies based on the target GPU architecture and task type, providing optimized performance without requiring developers to learn specialized languages. The language itself can be extended with optional parameters and attributes that control optimization behavior.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If code is tightly coupled to specific GPU architectures, then performance on that architecture can be maximized, but adaptability to different GPU architectures decreases

Engineering Contradiction:
Improvearchitecture-specific performanceVSAvoidarchitecture independence
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent segments the programming system into architecture-independent high-level code and architecture-specific compiled output. The compiler separates the universal programming language front-end from the backend code generation that targets specific GPU architectures. This allows the same source code to be compiled for different GPU architectures with optimized performance for each target while maintaining adaptability through the modular compilation pipeline.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP3137992B1Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit
Publication Date: 2022.05.04 APPLE INC
  • EP3137992B1 patent drawingFigure 1
  • EP3137992B1 patent drawingFigure 2
  • EP3137992B1 patent drawingFigure 3

AI summary

A compiler and library provide the ability to compile a programming language according to a defined language model into a programming language independent, machine independent intermediate representation, for conversion into an executable on a target programmable device. The language model allows writing programs that perform data-parallel graphics and non-graphics tasks.