JIT Code Linking to Avoid Redundant Translation Passes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Compilers often translate combined code unnecessarily, wasting time and computing resources by repeating translation processes.

Innovation Solution

Implementing a just-in-time (JIT) linker that uses reference information to optimize the linking process by separately compiling and then linking code portions, such as host and device code, and pruning unreferenced elements to generate optimized executable code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If compilers translate combined code every time, then code translation is thorough and complete, but translation time and computing resources are wasted due to redundancy

Engineering Contradiction:
Improvecode translation completenessVSAvoidcompilation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by storing indication information in a cache that marks whether portions of code have been combined. Before translating combined code, the compiler checks this cache to determine if translation has already occurred, thereby avoiding redundant translation operations while ensuring translation completeness when needed.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If compilers translate combined code every time, then code translation is thorough and complete, but computing resources are wasted due to redundancy

Engineering Contradiction:
Improvecode translation completenessVSAvoidcomputing resources
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The system performs preliminary actions by storing indication information in a cache that marks whether portions of code have been combined. Before translating combined code, the compiler checks this cache to determine if translation has already occurred, thereby avoiding redundant translation operations while ensuring translation completeness when needed.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If JIT linker separately compiles and links code portions, then compilation efficiency is improved, but device complexity increases

Engineering Contradiction:
Improvecompilation efficiencyVSAvoidlinker complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The JIT linker divides code into separate portions (host code and device code) that are compiled and processed independently. This segmentation allows each portion to be optimized separately and linked together later, improving compilation efficiency while managing complexity through modular processing.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system introduces a cache as an intermediary component that stores indication information about code combination status. This intermediary layer simplifies the linker's workload by providing pre-computed information about which code portions have been combined, reducing the complexity of tracking code translation states.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS12517707B2Code generation technique
Publication Date: 2026.01.06 NVIDIA CORP
  • US12517707B2 patent drawing
  • US12517707B2 patent drawing
  • US12517707B2 patent drawing

AI summary

Apparatuses, systems, and techniques to optimize processor performance. In at least one embodiment, a method optimizes linked code based, at least in part, on storing an indication of whether two portions of code have been linked.