Context Communication APIs for Hierarchical Resource Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computer programs face challenges in optimizing memory and resource usage, leading to inefficiencies in performance.

Innovation Solution

The implementation of application programming interfaces (APIs) that manage resources by creating, destroying, and subdividing contexts and sub-contexts, as well as obtaining and recording events, to enhance resource management and synchronization between contexts.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If computer programs use significant memory and resources to perform operations, then computational tasks can be completed, but resource consumption increases and efficiency decreases

Engineering Contradiction:
Improvecomputational efficiencyVSAvoidmemory and resource consumption
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent segments computational contexts into hierarchical levels (device-level contexts and stream-level sub-contexts). Each context encapsulates a specific set of resources and operational state, allowing fine-grained management and isolation. This segmentation enables efficient resource utilization by allocating memory and resources only to active contexts rather than maintaining all resources globally, directly addressing the contradiction between productivity and resource consumption.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent dynamically changes resource allocation parameters based on context activation and deactivation. When contexts are pushed onto or popped from stacks, resource allocation parameters (memory buffers, register files, execution units) are adjusted accordingly. This dynamic parameter adjustment allows the system to optimize resource consumption for the currently active computational tasks while maintaining the capability to rapidly switch between different computational states, improving both efficiency and resource utilization.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If contexts are switched between different software programs, then resource sharing is enabled, but synchronization complexity increases

Engineering Contradiction:
Improveresource sharing capabilityVSAvoidsynchronization mechanism complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces context stacks as intermediary data structures that mediate between multiple software programs and the underlying hardware resources. Each thread maintains its own context stack, serving as a local intermediary that manages context transitions without requiring complex global synchronization. The push/pop operations on context stacks provide a simple interface for context switching, eliminating the need for complex inter-thread synchronization mechanisms while enabling efficient resource sharing between programs.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

Each computational stream maintains its own context stack and manages its own context transitions independently through self-service push/pop operations. This self-management approach eliminates the need for centralized synchronization control, as each thread autonomously handles its context state without interfering with others. The independent context management enables resource sharing while minimizing synchronization complexity, as threads only need to manage their own stacks rather than coordinate with a central controller.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS20250245072A1Application programming interface to communicate context
Publication Date: 2025.07.31 NVIDIA CORP
  • US20250245072A1 patent drawing
  • US20250245072A1 patent drawing
  • US20250245072A1 patent drawing

AI summary

Apparatuses, systems, and techniques to perform computing operations. In at least one embodiment, a processor performs an application programming interface to cause context of one or more first software instructions to be communicated to one or more second software instructions.