stdgpu/atomic.cuh File Reference

stdgpu/atomic.cuh File Reference#

stdgpu: stdgpu/atomic.cuh File Reference
stdgpu Latest
Efficient STL-like Data Structures on the GPU
atomic.cuh File Reference

Classes

class  stdgpu::atomic< T, Allocator >
 
class  stdgpu::atomic_ref< T >
 

Typedefs

using stdgpu::atomic_int = atomic< int >
 
using stdgpu::atomic_uint = atomic< unsigned int >
 
using stdgpu::atomic_ullong = atomic< unsigned long long int >
 

Enumerations

enum class  stdgpu::memory_order : std::int8_t {
  memory_order::relaxed , memory_order::consume , memory_order::acquire , memory_order::release ,
  memory_order::acq_rel , memory_order::seq_cst
}
 

Functions

template<typename T , typename Allocator >
STDGPU_DEVICE_ONLY bool stdgpu::atomic_compare_exchange_strong (atomic< T, Allocator > *obj, typename atomic< T, Allocator >::value_type *expected, const typename atomic< T, Allocator >::value_type desired) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLY bool stdgpu::atomic_compare_exchange_weak (atomic< T, Allocator > *obj, typename atomic< T, Allocator >::value_type *expected, const typename atomic< T, Allocator >::value_type desired) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_exchange (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type desired) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_exchange_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type desired, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_add (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::difference_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_add_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::difference_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_and (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_and_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_max (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_max_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_min (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_min_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_or (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_or_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_sub (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::difference_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_sub_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::difference_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_xor (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg) noexcept
 
template<typename T , typename Allocator >
STDGPU_DEVICE_ONLYstdgpu::atomic_fetch_xor_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type arg, const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_HOST_DEVICE bool stdgpu::atomic_is_lock_free (const atomic< T, Allocator > *obj) noexcept
 
template<typename T , typename Allocator >
STDGPU_HOST_DEVICEstdgpu::atomic_load (const atomic< T, Allocator > *obj) noexcept
 
template<typename T , typename Allocator >
STDGPU_HOST_DEVICEstdgpu::atomic_load_explicit (const atomic< T, Allocator > *obj, const memory_order order) noexcept
 
STDGPU_DEVICE_ONLY void stdgpu::atomic_signal_fence (const memory_order order) noexcept
 
template<typename T , typename Allocator >
STDGPU_HOST_DEVICE void stdgpu::atomic_store (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type desired) noexcept
 
template<typename T , typename Allocator >
STDGPU_HOST_DEVICE void stdgpu::atomic_store_explicit (atomic< T, Allocator > *obj, const typename atomic< T, Allocator >::value_type desired, const memory_order order) noexcept
 
STDGPU_DEVICE_ONLY void stdgpu::atomic_thread_fence (const memory_order order) noexcept
 

Variables

constexpr memory_order stdgpu::memory_order_acq_rel
 
constexpr memory_order stdgpu::memory_order_acquire
 
constexpr memory_order stdgpu::memory_order_consume
 
constexpr memory_order stdgpu::memory_order_relaxed
 
constexpr memory_order stdgpu::memory_order_release
 
constexpr memory_order stdgpu::memory_order_seq_cst