11#include "vecmem/memory/device_address_space.hpp"
16#if defined(CL_SYCL_LANGUAGE_VERSION) || defined(SYCL_LANGUAGE_VERSION) || \
17 defined(__ADAPTIVECPP__)
18#if defined(VECMEM_HAVE_SYCL_ATOMIC_REF)
21#include "vecmem/memory/details/sycl_builtin_device_atomic_ref.hpp"
35#include "vecmem/memory/details/sycl_custom_device_atomic_ref.hpp"
47#elif defined(__CUDACC__)
50#include "vecmem/memory/details/cuda_device_atomic_ref.hpp"
61#elif defined(__HIPCC__)
64#include "vecmem/memory/details/hip_device_atomic_ref.hpp"
75#elif defined(__cpp_lib_atomic_ref) && defined(__cpp_lib_atomic_min_max)
80template <
typename T, device_address_space = device_address_space::global>
85#elif defined(VECMEM_SUPPORT_POSIX_ATOMIC_REF)
88#include "vecmem/memory/details/posix_device_atomic_ref.hpp"
102#include "vecmem/memory/details/dummy_device_atomic_ref.hpp"
116#if __cpp_concepts >= 201907L
117#include "vecmem/concepts/atomic_ref.hpp"
119 vecmem::concepts::atomic_ref<vecmem::device_atomic_ref<uint32_t> >,
120 "Atomic reference on uint32_t is incompletely defined.");
122 vecmem::concepts::atomic_ref<vecmem::device_atomic_ref<uint64_t> >,
123 "Atomic reference on uint64_t is incompletely defined.");
125 vecmem::concepts::atomic_ref<vecmem::device_atomic_ref<std::size_t> >,
126 "Atomic reference on std::size_t is incompletely defined.");
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
Main namespace for the vecmem classes/functions.
Definition atomic_ref.hpp:16
device_address_space
Custom definition for the device memory adress space.
Definition device_address_space.hpp:12
dummy_device_atomic_ref< T, address > device_atomic_ref
Use vecmem::dummy_device_atomic_ref as a fallback.
Definition device_atomic_ref.hpp:109