Intentional Programming for Dynamic Heterogeneous Processor Selection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for compiling algorithms on heterogeneous systems fail to account for the real-time performance and load of individual processing elements, leading to inefficiencies and programming complexity due to volatile hardware conditions and nuanced hardware design details.
Innovation Solution
A code translator converts application code from an imperative programming language to a domain-specific language (DSL) representation, using machine learning to generate variant binaries that optimize execution on heterogeneous systems by dynamically selecting processing elements based on performance characteristics.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If existing compilation methods are used for heterogeneous systems, then programming simplicity is maintained, but runtime performance efficiency deteriorates due to failure to account for real-time performance and load of processing elements
Solution Approach 1:
The patent introduces a code translator as an intermediary component that converts high-level imperative code into optimized low-level representations. This translator handles the complexity of heterogeneous system optimization automatically, allowing programmers to write simple code while achieving high runtime performance through automated code generation and processing element selection.
Solution Approach 2:
The system performs preliminary analysis and optimization during code translation, generating multiple variant representations before runtime. This preliminary action includes analyzing processing element characteristics, generating optimized code variants, and preparing selection criteria, so that runtime performance is maximized without requiring complex programming at execution time.
2Productivity
If hardware-specific optimizations are implemented for each processing element, then runtime performance improves, but device complexity increases due to need to handle nuanced hardware design details
Solution Approach 1:
The code translator is designed as a universal tool that handles multiple processing element types through a single unified interface. It automatically adapts to different hardware architectures by selecting appropriate optimization strategies, eliminating the need for separate optimization code for each processing element while maintaining high runtime performance across heterogeneous systems.
Solution Approach 2:
The system changes optimization parameters dynamically based on the target processing element characteristics. The code translator adjusts code generation parameters, optimization levels, and variant selection criteria according to the specific hardware being targeted, allowing the same translator to optimize for different processing elements without increasing programming complexity.
3Productivity
If real-time performance monitoring and dynamic selection are implemented, then productivity improves, but device complexity increases due to volatile hardware conditions
Solution Approach 1:
The patent implements feedback mechanisms where the system monitors processing element performance and load conditions in real-time, then uses this feedback to dynamically select the most appropriate code variant and processing element combination. This feedback loop enables adaptive optimization that responds to volatile hardware conditions while maintaining high productivity through automated decision-making.
Data Source
AI summary
Methods, apparatus, systems and articles of manufacture are disclosed for intentional programming for heterogeneous systems. An example apparatus includes a code lifter to identify annotated code corresponding to an algorithm to be executed on the heterogeneous system based on an identifier being associated with the annotated code, and convert the annotated code in the first representation to intermediate code in a second representation by identifying the intermediate code as having a first algorithmic intent that corresponds to a second algorithmic intent of the annotated code, a domain specific language (DSL) generator to translate the intermediate code in the second representation to DSL code in a third representation when the first algorithmic intent matches the second algorithmic intent, the third representation corresponding to a DSL representation, and a code replacer to invoke a compiler to generate an executable including variant binaries based on the DSL code.


