CUDA Thread Block Attribute API for Cluster Scheduling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computer hardware struggles to efficiently manage the execution of computer programs due to inefficiencies in handling the various structural aspects of programs, leading to delays and resource wastage.

Innovation Solution

The implementation of an application programming interface (API) that allows for the management of clusters of instructions, including setting parameters, sharing resources, and synchronizing execution between groups of instructions, to optimize the use of processing resources.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional execution methods are used without specialized APIs for managing thread blocks, then the system structure remains simple, but processing efficiency deteriorates due to inability to effectively manage and synchronize clusters of instructions

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidsystem structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary layer of APIs that mediate between the host and the processing resources. These APIs include functions for indicating thread block attributes, scheduling policies, and synchronization barriers, which resolve the contradiction by providing structured management capabilities without requiring fundamental changes to the underlying hardware architecture.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the execution model into distinct controllable units called thread blocks, which can be independently managed and scheduled. This segmentation allows the system to handle complex parallel workloads by breaking them into manageable chunks that can be efficiently distributed and synchronized across multiple processing resources.

Inventive Principle:
Principle #1Segmentation

2Loss of time

If traditional execution methods are used without scheduling APIs, then the API interface remains simple, but execution delays increase due to inability to optimize thread block scheduling

Engineering Contradiction:
Improveexecution delaysVSAvoidAPI interface
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent implements dynamic scheduling capabilities through APIs that can adjust thread block execution parameters at runtime. The scheduling policies can be modified based on workload characteristics and resource availability, allowing the system to adaptively optimize execution timing and reduce delays without committing to a fixed complex interface structure.

Inventive Principle:
Principle #15Dynamics

3Productivity

If resources are not shared between thread blocks, then resource management remains simple, but performance deteriorates due to suboptimal utilization of processing resources

Engineering Contradiction:
Improveresource utilizationVSAvoidresource management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates universal resource pools that can be shared across multiple thread blocks and workloads. The same memory resources, processing units, and I/O channels can be dynamically allocated to different thread blocks based on execution needs, achieving high resource utilization through a unified management interface rather than dedicated resources for each thread block.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS12613741B2Application programming interface to indicate attribute limitations
Publication Date: 2026.04.28 NVIDIA CORP
  • US12613741B2 patent drawing
  • US12613741B2 patent drawing
  • US12613741B2 patent drawing

AI summary

Apparatuses, systems, and techniques to execute CUDA programs. In at least one embodiment, an application programming interface is performed to indicate one or more limitations of one or more attributes of one or more groups of blocks of one or more threads.