16template <
typename T, device_address_space address>
21template <
typename T, device_address_space address>
24 : m_ptr(parent.m_ptr) {}
26template <
typename T, device_address_space address>
39#ifndef __VECMEM_THREADFENCE
41#define __VECMEM_THREADFENCE __threadfence()
43#define __VECMEM_THREADFENCE
47template <
typename T, device_address_space address>
56template <
typename T, device_address_space address>
67#undef __VECMEM_THREADFENCE
69template <
typename T, device_address_space address>
76template <
typename T, device_address_space address>
77VECMEM_HOST_AND_DEVICE
bool
81 if (
order == memory_order::acq_rel) {
83 memory_order::acquire);
84 }
else if (
order == memory_order::release) {
86 memory_order::relaxed);
92template <
typename T, device_address_space address>
93VECMEM_HOST_AND_DEVICE
bool
100 failure != memory_order::acq_rel);
113template <
typename T, device_address_space address>
120template <
typename T, device_address_space address>
127template <
typename T, device_address_space address>
134template <
typename T, device_address_space address>
141template <
typename T, device_address_space address>
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
Custom implementation for atomic operations in CUDA device code.
Definition cuda_device_atomic_ref.hpp:34
T value_type
Type managed by the object.
Definition cuda_device_atomic_ref.hpp:41
value_type & reference
Reference to a value given by the user.
Definition cuda_device_atomic_ref.hpp:47
Main namespace for the vecmem classes/functions.
Definition atomic_ref.hpp:16
memory_order
Custom (dummy) definition for the memory order.
Definition memory_order.hpp:31