Function Pointer Mapping for Heterogeneous Device Code Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Developing applications for execution on heterogeneous processing devices is challenging due to differences in processor architecture, requiring specific changes in compilers and linker/loader systems to generate executable formats.
Innovation Solution
A method for mapping function pointers to device code is developed, where annotated functions are compiled into both CPU and device-specific codes, with the device code stored as a byte string for retrieval during execution on architecturally different processing devices, allowing execution without modifications to the linker/loader.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If compilers generate executable formats with specific changes to linker/loader for heterogeneous devices, then functions can be executed on different processing devices, but the device complexity and system modification requirements increase
Solution Approach 1:
The patent creates a universal executable format that can run on multiple processing devices (CPU, GPU, FPGA) without requiring device-specific linker/loader modifications. The runtime system provides a unified interface that handles device-specific execution details, allowing the same binary format to be universally executed across heterogeneous architectures.
Solution Approach 2:
The patent introduces a runtime system as an intermediary layer between the compiled executable and the processing devices. This runtime system translates and manages execution across different device types, eliminating the need for direct modifications to linker/loader for each device while maintaining execution capability on heterogeneous platforms.
2Adaptability or versatility
If device code is stored in a byte string for dynamic retrieval, then execution flexibility on heterogeneous devices is improved, but memory usage and retrieval overhead increase
Solution Approach 1:
The patent merges multiple device-specific code versions into a single executable binary file. Instead of storing separate code for each device type, the system combines all necessary device codes within one unified binary, reducing the number of separate files and simplifying distribution while enabling dynamic selection at runtime.
Solution Approach 2:
The patent performs preliminary compilation of device-specific code during the build process, embedding the compiled device codes directly into the executable binary. This preliminary action allows the runtime system to retrieve pre-compiled device code without needing to compile at runtime, reducing overhead while maintaining flexibility.
Data Source
AI summary
Methods for mapping a function pointer to the device code are presented. In one embodiment, a method includes identifying a function which is executable by processing devices. The method includes generating codes including a first code corresponds to a first processing device and a second code corresponds to a second processing device. The second processing device is architecturally different from the first processing device. The method further includes storing the second code in a byte string such that the second code is retrievable if the function will be executed by the second processing device.


