Module sync

Module sync 

Source
Expand description

Synchronization and atomic operations for GPU programming.

Structs§

AddF
Atomic operation kind for Atomic<'a, T>::atomic_addf
AddI
Atomic operation kind for Atomic<'a, T>::atomic_addi
AndI
Atomic operation kind for Atomic<'a, T>::atomic_andi
Assign
Atomic operation kind for Atomic<'a, T>::atomic_assign
Atomic
To prevent the user from mixing use of Atomic operation and chunk-based access, we wrap the reference to the data to be modified in an Atomic struct. ensuring that the user cannot access the data without using atomic operations. If user wants to repurpose the data for non-atomic access, they need to drop the Atomic struct first and need a sync across all blocks. For now, sync across all blocks is not supported, we should reject such code in analysis. TODO: Avoid repurposing data for atomic or chunk-based access.
MaxNumF
Atomic operation kind for Atomic<'a, T>::atomic_maxnumf
MaxS
Atomic operation kind for Atomic<'a, T>::atomic_maxs
MaxU
Atomic operation kind for Atomic<'a, T>::atomic_maxu
MaximumF
Atomic operation kind for Atomic<'a, T>::atomic_maximumf
MinNumF
Atomic operation kind for Atomic<'a, T>::atomic_minnumf
MinS
Atomic operation kind for Atomic<'a, T>::atomic_mins
MinU
Atomic operation kind for Atomic<'a, T>::atomic_minu
MinimumF
Atomic operation kind for Atomic<'a, T>::atomic_minimumf
MulF
Atomic operation kind for Atomic<'a, T>::atomic_mulf
MulI
Atomic operation kind for Atomic<'a, T>::atomic_muli
OrI
Atomic operation kind for Atomic<'a, T>::atomic_ori
SharedAtomic

Functions§

sync_threads
Synchronization within a thread block. Disallow divergent control flow to ensure all threads in a block can reach the sync point to avoid deadlock.