Thread Synchronization in Divergent Code Regions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threaded parallel processing systems, particularly in SIMD systems, synchronizing threads in divergent regions of code is challenging due to the risk of deadlock or incorrect execution, as traditional barriers cannot be used within these regions.

Innovation Solution

Generating a count of threads that will enter a divergent region before they do, and using this count to synchronize threads within the region through specialized barrier operations, such as counting semaphores or bitfield barriers, to ensure that only the necessary threads proceed, avoiding the need for traditional barriers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional barriers are used to synchronize threads in divergent regions, then thread synchronization is achieved, but deadlock or incorrect execution occurs

Engineering Contradiction:
Improvethread synchronization reliabilityVSAvoiddeadlock or incorrect execution
Core Design Contradiction:
ReliabilityVSObject-generated harmful factors

Solution Approach 1:

The patent applies preliminary action by generating a count of threads that will enter the divergent region before they actually enter. This count is computed in advance using atomic operations and stored in shared memory, allowing threads to proceed with synchronization without waiting for each other, thus preventing deadlock while ensuring correct execution order.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes the parameter of thread synchronization from using traditional barriers to using a count-based mechanism. By transforming the synchronization approach into a count-driven model where threads proceed based on a pre-computed count rather than blocking on barriers, the system eliminates harmful deadlock conditions while maintaining synchronization reliability.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If traditional barriers are used within divergent regions, then thread synchronization is attempted, but execution correctness is compromised

Engineering Contradiction:
Improveexecution correctnessVSAvoidincorrect execution
Core Design Contradiction:
ReliabilityVSObject-generated harmful factors

Solution Approach 1:

The patent performs the count generation action before threads enter the divergent region, allowing the synchronization logic to be prepared in advance. This preliminary computation of thread count enables correct execution by ensuring that only the appropriate number of threads proceed through the divergent region, preventing incorrect execution outcomes.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary mechanism - the count variable - that mediates between threads entering the divergent region. This count acts as a mediator that controls thread progression, ensuring that threads execute correctly by proceeding only when the count indicates appropriate synchronization timing, rather than using direct barrier synchronization that causes incorrect execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If a count is generated before threads enter the divergent region, then synchronization accuracy is improved, but additional computation is required

Engineering Contradiction:
Improvethread count accuracyVSAvoidcomputation complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent changes the approach from post-entry barrier synchronization to pre-entry count generation. By computing the thread count parameter before entries occur, the system achieves precise measurement of which threads will enter the divergent region. This parameter change enables accurate synchronization while the computation complexity is managed through efficient atomic operations and shared memory mechanisms.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10013290B2System and method for synchronizing threads in a divergent region of code
Publication Date: 2018.07.03 NVIDIA CORP
  • US10013290B2 patent drawing
  • US10013290B2 patent drawing

AI summary

A system and method are provided for synchronizing threads in a divergent region of code within a multi-threaded parallel processing system. The method includes, prior to any thread entering a divergent region, generating a count that represents a number of threads that will enter the divergent region. The method also includes using the count within the divergent region to synchronize the threads in the divergent region.