Auto-Throttling Compute Tasks for GPU Memory Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional memory allocation techniques in parallel processor architectures, such as GPUs, are inefficient as they allocate the same amount of memory to each thread regardless of usage, leading to wasted resources and limited concurrency due to physical memory constraints.

Innovation Solution

The method involves auto-throttling encapsulated compute tasks by configuring the processor to activate a varying number of parallel processing units based on the memory requirements of scheduled tasks, allowing for dynamic allocation of shader local memory across discrete throttling modes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If the same amount of local memory is allocated to each thread, then memory allocation is simplified, but memory usage efficiency deteriorates

Engineering Contradiction:
Improvememory allocation simplicityVSAvoidmemory usage efficiency
Core Design Contradiction:
Ease of manufactureVSLoss of energy

Solution Approach 1:

The system dynamically adjusts the number of active processing units based on task requirements. Instead of static memory allocation, the processor configures different numbers of active processing units (first number in non-throttled mode, second number in throttled mode) to match the memory needs of scheduled tasks, thereby improving memory efficiency while maintaining allocation simplicity

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes the operational parameters of the processor by switching between different throttling modes. Each mode corresponds to a different configuration of active processing units, allowing the system to adapt memory allocation to task requirements by changing the number of active units rather than changing individual thread allocations

Inventive Principle:
Principle #35Parameter changes

2Productivity

If more threads are allocated to execute concurrently, then processor productivity increases, but physical memory requirements increase

Engineering Contradiction:
Improveconcurrent thread executionVSAvoidphysical memory required
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The system dynamically configures the number of active processing units based on the memory requirements of scheduled tasks. When tasks with high memory requirements are scheduled, the system switches to throttled mode with fewer active units, reducing total memory consumption while maintaining productive task execution

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The processor is segmented into multiple independent processing units that can be selectively activated. This segmentation allows the system to activate only the necessary number of units based on task requirements, thereby maintaining productivity for scheduled tasks while reducing overall memory consumption by keeping some units inactive

Inventive Principle:
Principle #1Segmentation

3Speed

If the processor operates in non-throttled mode with maximum processing units active, then task execution speed increases, but memory consumption increases

Engineering Contradiction:
Improvetask execution speedVSAvoidmemory consumption
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The system dynamically switches between non-throttled and throttled modes based on task requirements. When tasks are scheduled that can execute with fewer memory resources, the system transitions to throttled mode, reducing active processing units and thereby reducing memory consumption while maintaining adequate execution speed for the scheduled tasks

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9710306B2Methods and apparatus for auto-throttling encapsulated compute tasks
Publication Date: 2017.07.18 NVIDIA CORP
  • US9710306B2 patent drawing
  • US9710306B2 patent drawing
  • US9710306B2 patent drawing

AI summary

Systems and methods for auto-throttling encapsulated compute tasks. A device driver may configure a parallel processor to execute compute tasks in a number of discrete throttled modes. The device driver may also allocate memory to a plurality of different processing units in a non-throttled mode. The device driver may also allocate memory to a subset of the plurality of processing units in each of the throttling modes. Data structures defined for each task include a flag that instructs the processing unit whether the task may be executed in the non-throttled mode or in the throttled mode. A work distribution unit monitors each of the tasks scheduled to run on the plurality of processing units and determines whether the processor should be configured to run in the throttled mode or in the non-throttled mode.