GPU Thread Preemption at Synchronization Barriers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In graphics processing units (GPUs), synchronization barriers can lead to inefficient use of computing resources as EU threads waiting at a barrier occupy execution units, even though some threads may be idle, due to the asynchronous completion times of EU threads in thread groups.

Innovation Solution

Implementing a system to monitor EU thread status and preempt waiting threads if certain threshold conditions are met, such as a minimum number of threads waiting, a maximum number of threads executing, and a minimum wait time, allowing idle EU threads to be reassigned to other thread groups.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If EU threads are allowed to wait at synchronization barriers, then correctness of parallel processing is ensured, but execution units are occupied by idle threads reducing resource utilization

Engineering Contradiction:
Improvecorrectness of parallel processingVSAvoidresource utilization
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts waiting EU threads from the execution unit when they reach a synchronization barrier. The thread is suspended and removed from the EU, allowing the execution unit to be immediately reassigned to other threads. This resolves the contradiction by taking out the problematic element (waiting thread) that occupies resources without performing useful work, while the thread's logical state is preserved through the barrier synchronization mechanism.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent implements dynamic thread management where the assignment of threads to execution units is not static but continuously adjusted based on thread readiness state. When threads reach a synchronization barrier, their assignment is dynamically changed from active execution to suspended state, and execution units are dynamically reassigned. This dynamic approach maintains correctness while optimizing resource utilization.

Inventive Principle:
Principle #15Dynamics

2Productivity

If EU threads are preempted frequently, then resource utilization is improved, but thread execution continuity is disrupted

Engineering Contradiction:
Improveresource utilizationVSAvoidthread execution continuity
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by detecting when threads are approaching or have reached a synchronization barrier before full preemption occurs. The system monitors thread state and prepares for preemption in advance, allowing smooth transition rather than abrupt interruption. This reduces the loss of execution continuity while still enabling timely resource reallocation.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements feedback mechanisms where the system continuously monitors thread execution state, barrier reach status, and execution unit utilization. Based on this feedback, preemption decisions are made intelligently - preemption occurs when threads reach barriers (justifying the switch) rather than arbitrarily. This feedback-driven approach minimizes unnecessary preemptions that would disrupt execution continuity while maintaining high resource utilization.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9652300B2Systems, methods, and computer program products for preemption of threads at a synchronization barrier
Publication Date: 2017.05.16 INTEL CORP
  • US9652300B2 patent drawing
  • US9652300B2 patent drawing
  • US9652300B2 patent drawing

AI summary

Systems and methods for the processing of EU threads (also known as warps) in a thread group. The status of each EU thread in the group may be monitored, to determine if it is executing or if it is halted and waiting at a synchronization barrier. If certain threshold conditions are met, the waiting EU threads may be preempted to allow execution of threads from another thread group. The threshold conditions may include a minimum number of EUs in use, a minimum number of EU threads in the first thread group that are waiting at the synchronization barrier and/or a maximum number of EU threads that are still executing, and a minimum wait time for one or more of the EU threads waiting at the barrier.