Dependency-Tree Memory Management for Contiguous GPU Allocation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Memory fragmentation in computing systems leads to challenges in allocating memory for larger data objects, making it difficult to store them due to the lack of contiguous blocks, which affects the efficiency and functionality of computing systems.

Innovation Solution

A memory management scheme for graphics processing units (GPUs) that analyzes GPU-hosted programs to identify inputs, outputs, and intermediate values, allocating contiguous memory based on a tree structure, grouping persistent variables together and managing transient variables separately, and using a lookup table to track variable locations, enabling efficient memory allocation and defragmentation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If memory is allocated and deallocated dynamically for transitory data, then memory utilization is improved, but memory fragmentation increases

Engineering Contradiction:
Improvememory utilizationVSAvoidmemory continuity
Core Design Contradiction:
Quantity of substanceVSStability of the object's composition

Solution Approach 1:

The patent divides memory management into separate arenas: a short-term arena for transient variables and a long-term arena for persistent variables. This segmentation allows each arena to be managed independently, preventing fragmentation in one from affecting the other, thus maintaining memory continuity while improving utilization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts transient variables from the general memory pool and places them in a dedicated short-term arena. This extraction removes the source of fragmentation from the main memory space, allowing large data objects to be allocated contiguously in the long-term arena without being blocked by scattered small allocations.

Inventive Principle:
Principle #2Taking out (Extraction)

2Volume of stationary object

If memory is allocated for large data objects, then storage capacity is improved, but allocation difficulty increases due to fragmentation

Engineering Contradiction:
Improvestorage capacityVSAvoidallocation ease
Core Design Contradiction:
Volume of stationary objectVSEase of manufacture

Solution Approach 1:

The patent performs preliminary action by pre-allocating a large contiguous block of memory for the long-term arena before any applications run. This ensures that sufficient contiguous space is always available for large data objects, eliminating allocation difficulties while maintaining full storage capacity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent applies local quality by giving different memory regions different characteristics: the long-term arena provides large contiguous blocks suitable for big data objects, while the short-term arena handles small transient allocations. This localized optimization makes allocation easy for each type of data without compromising overall storage capacity.

Inventive Principle:
Principle #3Local quality

3Productivity

If multiple applications share memory space, then system efficiency is improved, but memory interference increases

Engineering Contradiction:
Improvesystem efficiencyVSAvoidmemory isolation
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the shared memory space into application-specific regions within the long-term arena and a common short-term arena. This segmentation allows multiple applications to run efficiently with guaranteed isolation, preventing one application from interfering with another's memory while maintaining high system productivity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12436876B2Memory management system
Publication Date: 2025.10.07 NVIDIA CORP
  • US12436876B2 patent drawing
  • US12436876B2 patent drawing
  • US12436876B2 patent drawing

AI summary

A computer system manages the allocation of memory to an application program using a dependency tree. The dependency tree informs a memory manager of data inputs, data outputs, and intermediate values associated with execution of the application program. The memory manager allocates a single heap structure within a physical memory. Data associated with each node of the dependency tree is allocated to the heap structure so that data input values are allocated in a contiguous block, and intermediate values are allocated separately. In various examples, as execution of the application program proceeds, the separation of intermediate values from non-intermediate values within the heap reduces memory fragmentation providing improved performance of the computer system as a whole.