Synchronization Primitives

Atomics

cuda::atomic

System-wide std::atomic objects and operations

libcu++ 1.0.0 / CCCL 2.0.0 / CUDA 10.2

cuda::atomic_ref

System-wide std::atomic_ref objects and operations

libcu++ 1.7.0 / CCCL 2.0.0 / CUDA 11.6

Latches

cuda::latch

System-wide std::latch single-phase asynchronous thread coordination mechanism

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

Barriers

cuda::barrier

System wide std::barrier multi-phase asynchronous thread coordination mechanism

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

Semaphores

cuda::counting_semaphore

System wide std::counting_semaphore primitive for constraining concurrent access

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

cuda::binary_semaphore

System wide std::binary_semaphore primitive for mutual exclusion

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

Pipelines

The pipeline library is included in the CUDA Toolkit, but is not part of the open source libcu++ distribution.

cuda::pipeline

Coordination mechanism for sequencing asynchronous operations

libcu++ 1.2.0 / CCCL 2.0.0 / CUDA 11.1

cuda::pipeline_shared_state

cuda::pipeline shared state object

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

cuda::pipeline_role

Defines producer/consumer role for a thread participating in a pipeline

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

cuda::make_pipeline

Creates a cuda::pipeline

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

cuda::pipeline_consumer_wait_prior

Blocks the current thread until all operations committed up to a prior pipeline stage complete

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0

cuda::pipeline_producer_commit

Binds operations previously issued by the current thread to a cuda::barrier

libcu++ 1.1.0 / CCCL 2.0.0 / CUDA 11.0