Compiler Generating Compute Kernels for Array Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Efficient execution of array instructions on heterogeneous and parallel computing systems is challenging due to the complexity of mapping workload chunks to available resources, leading to increased maintenance efforts and incompatibilities across diverse hardware setups.

Innovation Solution

A computer-implemented method that generates a first program segment by determining runtime size information and including array instructions based on function meta information and hardware information, allowing for the compilation of a compute kernel executable on processing units, thereby optimizing workload distribution and execution efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If manual decision making by the programmer is used to target specific processors for data processing, then execution efficiency on specific hardware can be optimized, but maintenance effort increases and incompatibilities arise across diverse hardware setups

Engineering Contradiction:
Improveexecution efficiencyVSAvoidmaintenance effort
Core Design Contradiction:
ProductivityVSEase of manufacture

Solution Approach 1:

The compiler automatically performs processor selection and code adaptation without requiring manual programmer intervention. The system self-adjusts to different hardware configurations by analyzing hardware information and runtime size information, generating optimized code for the target processor automatically.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The compiler dynamically adjusts code generation parameters based on detected hardware information and runtime characteristics. By changing compilation parameters according to the target processor's capabilities, the system achieves optimal execution efficiency across diverse hardware without manual reconfiguration.

Inventive Principle:
Principle #35Parameter changes

2Loss of time

If the compiler targets specific processing units with customized code generation, then execution time is reduced, but device complexity and difficulty of adapting to heterogeneous hardware increases

Engineering Contradiction:
Improveexecution timeVSAvoidcompiler complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The compiler employs dynamic code generation that adapts to the target processor's characteristics at compile time. By dynamically selecting optimization strategies and code patterns based on detected hardware information, the compiler reduces execution time without requiring manual customization for each processor type.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The code generation process is segmented into modular phases: hardware information detection, runtime size information determination, and targeted code generation. This segmentation allows the compiler to systematically handle different processor types through standardized procedures, reducing overall complexity.

Inventive Principle:
Principle #1Segmentation

3Productivity

If heterogeneous computing resources are utilized for parallel processing, then productivity and energy efficiency improve, but the complexity of mapping workload chunks to available resources increases significantly

Engineering Contradiction:
Improveparallel processing efficiencyVSAvoidworkload mapping complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The compiler implements a universal code generation framework that can target multiple processor types and heterogeneous computing resources through a single compilation process. By designing the system to be hardware-agnostic at the interface level while generating specialized code internally, the compiler simplifies workload mapping across diverse parallel computing resources.

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

4Adaptability or versatility

If manual adaptation of user code is performed for different computing architectures, then compatibility across hardware platforms is achieved, but development cycles are extended and product deliveries are delayed

Engineering Contradiction:
Improvehardware compatibilityVSAvoiddevelopment cycle time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The compiler acts as an intermediary layer between user code and diverse computing architectures. By translating high-level array instructions into processor-specific optimizations automatically, the compiler ensures hardware compatibility without requiring programmers to manually adapt code for different platforms, thus shortening development cycles.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS12254296B2Computer-implemented method and a computer-readable medium
Publication Date: 2025.03.18 ILNUMERICS GMBH
  • US12254296B2 patent drawing
  • US12254296B2 patent drawing
  • US12254296B2 patent drawing

AI summary

A computer-implemented method includes receiving a program code comprising a sequence of array instructions for at least one input array data structure storing multiple elements of a respective common data type, and function meta information, FMI. The FMI allow for determining an output size information of an output of each array instruction of the sequence of array instructions for an input size information of the at least one input array data structure. The method includes receiving hardware information of a processing unit, compiling, based on the first program segment, the runtime size information and the hardware information, a first compute kernel which is executable on the processing unit; and executing the first compute kernel on the processing unit using the runtime instance of the at least one input array data structure as input.