Timeline Semaphore API for Interoperable Workload Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computing systems, applications that use multiple APIs often face inefficiencies in resource allocation, leading to waste of processing and memory resources due to uncoordinated use of shared computing resources.

Innovation Solution

The implementation of a timeline semaphore that coordinates and synchronizes workloads between different APIs by using a monotonically increasing 64-bit integer value, allowing for omnidirectional synchronization of computing resources such as GPU or CPU threads, and enabling efficient allocation and access control through signaling and waiting operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple APIs share computing resources without coordination, then resource utilization flexibility is improved, but resource waste increases due to unorganized allocation

Engineering Contradiction:
Improveresource allocation flexibilityVSAvoidcomputing resource waste
Core Design Contradiction:
Adaptability or versatilityVSLoss of energy

Solution Approach 1:

The patent introduces a timeline semaphore as an intermediary synchronization mechanism that mediates between multiple APIs (such as Vulkan and CUDA) competing for shared computing resources. The timeline semaphore acts as a mediator that coordinates resource access, allowing APIs to flexibly share resources while preventing unorganized allocation through structured synchronization points.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent implements feedback mechanisms through signal and wait operations on timeline semaphores. APIs receive feedback about resource availability and completion status through semaphore signals, and adjust their execution accordingly by waiting at synchronization points. This feedback loop enables coordinated resource sharing that prevents waste while maintaining flexibility.

Inventive Principle:
Principle #23Feedback

2Ease of operation

If APIs independently access shared resources, then operational autonomy is improved, but synchronization efficiency deteriorates leading to stalling

Engineering Contradiction:
ImproveAPI operational autonomyVSAvoidworkload processing efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent employs preliminary action through advance synchronization setup using timeline semaphores. Before APIs access shared resources, they establish synchronization points and register wait operations in advance. This preliminary coordination allows APIs to maintain operational autonomy during execution while ensuring efficient synchronization is already in place, preventing stalling and maintaining productivity.

Inventive Principle:
Principle #10Preliminary action

3Speed

If computing resources are allocated without coordination, then allocation speed is improved, but resource utilization precision deteriorates

Engineering Contradiction:
Improveresource allocation speedVSAvoidresource allocation precision
Core Design Contradiction:
SpeedVSManufacturing precision

Solution Approach 1:

The patent implements dynamic resource allocation through timeline semaphores that adapt to actual workload conditions. Rather than static pre-allocation, the system dynamically coordinates resource access based on real-time synchronization needs, maintaining both allocation speed and precision through flexible, condition-based synchronization.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS20230185637A1Application programming interfaces for interoperability
Publication Date: 2023.06.15 NVIDIA CORP
  • US20230185637A1 patent drawing
  • US20230185637A1 patent drawing
  • US20230185637A1 patent drawing

AI summary

Apparatuses, systems, and techniques to perform one or more APIs to receive, update, wait on, and invalidate one or more timeline semaphores. In at least one embodiment, apparatuses, systems, and techniques to manage computing resources (e.g., streams for a workload) can reference, use, and read a count value corresponding to a timeline semaphore. In at least one embodiment, APIs can communicate with drivers or libraries to interact with a handle of a timeline semaphore.