Selective GPU Function Loading API

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Running applications on a GPU involves loading large numbers of functions, leading to full loading of all functions into memory even if only a few are used, resulting in performance slowdowns and resource inefficiencies due to unnecessary memory usage.

Innovation Solution

Implementing an API to selectively load libraries and GPU functions by performing partial loading at application startup and full loading only when specific functions are used, based on state information generated during partial loading.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If all functions are fully loaded into GPU memory at application startup, then the application can access any function immediately, but memory usage increases and performance slows down due to unnecessary loading of unused functions

Engineering Contradiction:
Improveapplication performanceVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The patent segments the library functions into multiple groups and divides the loading process into phases. Only the first group of functions is fully loaded into GPU memory at startup, while subsequent groups are loaded on-demand when needed. This segmentation allows the system to maintain fast access to frequently used functions while avoiding the memory overhead of loading all functions simultaneously.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary partial loading of the first group of functions at application startup, preparing the most commonly accessed functions in advance. This preliminary action ensures that critical functions are ready for immediate execution while deferring the loading of less frequently used functions to later times when memory resources are better utilized.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If all functions are fully loaded into GPU memory, then no function calls will fail due to missing code, but other resources are tied up due to unnecessary memory footprint

Engineering Contradiction:
Improvefunction availabilityVSAvoidmemory footprint
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent implements a dynamic loading strategy where the set of loaded functions changes over time based on actual usage patterns. The system monitors which functions are called during execution and dynamically loads additional function groups as needed. This dynamic approach maintains reliability by ensuring that functions are loaded before they are needed, while optimizing memory footprint by unloading or not loading functions that are never used.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system employs a self-service mechanism where the application automatically requests loading of additional function groups when it encounters functions that are not currently loaded. The runtime system monitors function calls and triggers loading of the next group when a function from a subsequent group is invoked, eliminating the need for manual configuration while maintaining both reliability and memory efficiency.

Inventive Principle:
Principle #25Self-service

3Quantity of substance

If partial loading is performed at application startup, then memory usage is reduced, but additional API calls are needed to perform full loading when functions are used

Engineering Contradiction:
Improvememory usageVSAvoidloading control mechanism
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent implements a self-service loading mechanism where the system automatically manages the loading of function groups without requiring explicit user intervention. When an application encounters a function that is not currently loaded, the runtime system automatically triggers the loading of the appropriate function group. This self-service approach reduces the perceived complexity for users while maintaining efficient memory management.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system uses feedback from function call monitoring to control the loading process. The runtime system observes which functions are invoked during execution and uses this feedback information to determine when to load additional function groups. This feedback-driven approach simplifies the user interface while ensuring that memory resources are allocated based on actual usage patterns rather than static predictions.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS20230305890A1Application programming interface to identify location of program portions
Publication Date: 2023.09.28 NVIDIA CORP
  • US20230305890A1 patent drawing
  • US20230305890A1 patent drawing
  • US20230305890A1 patent drawing

AI summary

Apparatuses, systems, and techniques to selectively load data required to use one or more functions. In at least one embodiment, selective load for one or more functions to be used is performed by one or more application programming interface for efficient use of memory on a system comprising a processor and a graphics processor.