Runtime Library Dispatch for Heterogeneous Multiprocessor Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Heterogeneous multi-core processing systems face challenges in efficiently distributing computations across diverse processing elements due to limited compiler support for specialized accelerators and reconfigurable logic elements, leading to inefficiencies in performance and resource utilization.
Innovation Solution
A library-based compilation and runtime dispatch system that uses variants of functions, each optimized for specific hardware elements, allowing dynamic allocation of tasks across multiple cores without requiring comprehensive compiler support for each type of processing unit, utilizing a compiler and runtime library to map parallel programming keywords to appropriate hardware-specific implementations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If comprehensive compiler support is provided for each type of processing unit, then hardware support and reliability are improved, but device complexity and manufacturing difficulty increase
Solution Approach 1:
The patent introduces a runtime library as an intermediary between the high-level parallel programming language and the heterogeneous hardware architecture. The runtime library provides hardware-specific implementations of parallel constructs, allowing the compiler to generate portable code that is then specialized at runtime without requiring comprehensive compiler support for each hardware type.
Solution Approach 2:
The patent segments the execution model into two phases: compile-time code generation for portable parallel constructs and runtime-time specialization for hardware-specific implementations. This segmentation allows the compiler to focus on high-level portability while hardware-specific optimizations are applied at runtime through the runtime library.
2Adaptability or versatility
If manual modifications are made to support new hardware variants, then adaptability is improved, but ease of manufacture and development time are worsened
Solution Approach 1:
The runtime library provides a universal interface that can support multiple hardware architectures through a single codebase. New hardware variants are supported by adding new implementations to the runtime library rather than modifying existing code, allowing one library to serve multiple hardware platforms.
Solution Approach 2:
The system enables dynamic adaptation to new hardware variants at runtime without requiring manual modifications to the runtime library or existing code. The runtime library can be extended with new hardware-specific implementations as needed, allowing the system to adapt dynamically to emerging hardware architectures.
3Productivity
If specialized compiler support is provided for each processing element, then productivity and performance are improved, but device complexity increases
Solution Approach 1:
The runtime library acts as an intermediary that handles the complexity of mapping parallel programming constructs to hardware-specific implementations. This allows the compiler to generate simple, portable code while the runtime library handles the complex task of optimizing for specific hardware architectures, separating compiler complexity from hardware complexity.
Data Source
AI summary
Presented are embodiments of methods and systems for library-based compilation and dispatch to automatically spread computations of a program across heterogeneous cores in a processing system. The source program contains a parallel-programming keyword, such as mapreduce, from a high-level, library-oriented parallel programming language. The compiler inserts one or more calls for a generic function, associated with the parallel-programming keyword, into the compiled code. A runtime library provides a predicate-based library system that includes multiple hardware specific implementations (“variants”) of the generic function. A runtime dispatch engine dynamically selects the best-available (e.g., most specific) variant, from a bundle of hardware-specific variants, for a given input and machine configuration. That is, the dispatch engine may take into account run-time availability of processing elements, choose one of them, and then select for dispatch an appropriate variant to be executed on the selected processing element. Other embodiments are also described and claimed.


