Function Pointer Mapping for Heterogeneous Device Code Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveexecution capability on heterogeneous devicesVSAvoidlinker/loader modification requirements
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

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.

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

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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

Engineering Contradiction:
Improvedynamic execution device selectionVSAvoidmemory storage for device code
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

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.

Inventive Principle:
Principle #5Merging (Combining)

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.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8949777B2Methods and systems for mapping a function pointer to the device code
Publication Date: 2015.02.03 INTEL CORP
  • US8949777B2 patent drawing
  • US8949777B2 patent drawing
  • US8949777B2 patent drawing

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.