Embedded Device Code Linking for Multi-Object Host Executables

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional host linkers are unable to generate an executable file from multiple host objects containing respective host and device code for CPU and GPU execution, as they cannot properly link device code embedded in each host object.

Innovation Solution

A method and system that uniquely identifies and links device code portions within host objects, allowing them to be executed by different processors, and generates an executable file containing both host and linked device code portions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If conventional host linkers are used to generate executable files from multiple host objects, then host code can be linked together, but device code embedded in multiple host objects cannot be properly linked

Engineering Contradiction:
Improvecapability to link device code from multiple host objectsVSAvoidcorrectness of device code linking
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent segments the linking process into two distinct phases: a device code linking phase that processes device code from multiple host objects separately, and a host code linking phase that links host objects together. This segmentation allows device code to be properly linked from multiple sources without interfering with host code linking, resolving the contradiction between versatility and reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary device code linking before host code linking. By first extracting and linking device code from all host objects into a separate executable, and then using this pre-linked device code during host code linking, the system ensures device code is correctly linked before being integrated into the final executable. This preliminary action eliminates linking conflicts and ensures reliability.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If device code is embedded in multiple host objects, then code reuse and modularity are improved, but conventional linkers cannot handle this structure

Engineering Contradiction:
Improvesupport for multiple host objects with embedded device codeVSAvoidprocessability by conventional linkers
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

The patent extracts device code from host objects during the linking process. By separating device code from host objects and processing it independently, the system maintains the modularity and code reuse benefits of having device code in multiple host objects, while making the linking process manageable through extraction and separate processing.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces an intermediary linking process that sits between the host objects and the final executable. This intermediary device code linker processes device code from multiple host objects and produces a separate executable that is then integrated into the final result, serving as a mediator that reconciles the complexity of multi-object device code embedding with linker capabilities.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If device code from multiple host objects is linked together, then functionality and parallel processing are enhanced, but code identification and linkage complexity increases

Engineering Contradiction:
Improveexecution efficiency through parallel processingVSAvoidcode identification and linkage process
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies local quality by treating device code and host code differently throughout the linking process. Device code is extracted, processed, and linked separately with its own identification mechanisms, while host code is linked separately. This localized processing approach maintains the productivity benefits of parallel processing while managing complexity through specialized handling of each code type.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS12487837B2Method and system for multiple embedded device links in a host executable
Publication Date: 2025.12.02 NVIDIA CORP
  • US12487837B2 patent drawing
  • US12487837B2 patent drawing
  • US12487837B2 patent drawing

AI summary

Embodiments of the present invention provide a novel solution to generate multiple linked device code portions within a final executable file. Embodiments of the present invention are operable to extract device code from their respective host object filesets and then link them together to form multiple linked device code portions. Also, using the identification process described by embodiments of the present invention, device code embedded within host objects may also be uniquely identified and linked in accordance with the protocols of conventional programming languages. Furthermore, these multiple linked device code portions may be then converted into distinct executable forms of code that may be encapsulated within a single executable file.