Barrier Synchronization — a synchronization pattern where all threads/processes must reach a designated point before any can proceed past it.
How It Works
Thread 0: compute phase 1 → BARRIER → compute phase 2
Thread 1: compute phase 1 → BARRIER → compute phase 2
Thread 2: compute phase 1 → BARRIER → compute phase 2
(all must finish phase 1 before any starts phase 2)
Use Cases
- Iterative Algorithms: Each iteration depends on previous results from all threads (stencil computations, simulations)
- Phase-Based Programs: All workers must complete one phase before starting next
- Data Exchange: After computing partial results, threads need to see each other's results
Implementations
- Centralized Counter: Atomic counter; last thread to arrive signals all others. Simple but doesn't scale
- Tree Barrier: Hierarchical — threads synchronize in pairs, then pairs synchronize. $O(\log n)$ latency
- Butterfly Barrier: Each thread exchanges with partner at each level. Scales well
- OpenMP:
#pragma omp barrier - CUDA:
__syncthreads()(within thread block), cooperative groups for grid-level sync - MPI:
MPI_Barrier(communicator)
Performance Impact
- Barriers serialize execution → reduce parallelism
- Minimize the number of barriers and reduce work imbalance between them
Barriers are necessary for correctness but each one is a potential bottleneck — use sparingly and balance the work between them.
barrier synchronizationthread barriersync point
Explore 500+ Semiconductor & AI Topics
From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.