11#include "vecmem/memory/device_address_space.hpp"
16#if defined(CL_SYCL_LANGUAGE_VERSION) || defined(SYCL_LANGUAGE_VERSION)
17#if defined(VECMEM_HAVE_SYCL_ATOMIC_REF)
20#include "vecmem/memory/details/sycl_builtin_device_atomic_ref.hpp"
34#include "vecmem/memory/details/sycl_custom_device_atomic_ref.hpp"
46#elif defined(__CUDACC__)
49#include "vecmem/memory/details/cuda_device_atomic_ref.hpp"
60#elif defined(__HIPCC__)
63#include "vecmem/memory/details/hip_device_atomic_ref.hpp"
74#elif defined(__cpp_lib_atomic_ref)
79template <
typename T, device_address_space = device_address_space::global>
84#elif defined(VECMEM_SUPPORT_POSIX_ATOMIC_REF)
87#include "vecmem/memory/details/posix_device_atomic_ref.hpp"
101#include "vecmem/memory/details/dummy_device_atomic_ref.hpp"
115#if __cpp_concepts >= 201907L
116#include "vecmem/concepts/atomic_ref.hpp"
118 vecmem::concepts::atomic_ref<vecmem::device_atomic_ref<uint32_t> >,
119 "Atomic reference on uint32_t is incompletely defined.");
121 vecmem::concepts::atomic_ref<vecmem::device_atomic_ref<uint64_t> >,
122 "Atomic reference on uint64_t is incompletely defined.");
124 vecmem::concepts::atomic_ref<vecmem::device_atomic_ref<std::size_t> >,
125 "Atomic reference on std::size_t is incompletely defined.");
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
std::vector< T, vecmem::polymorphic_allocator< T > > vector
Alias type for vectors with our polymorphic allocator.
Definition vector.hpp:35
dummy_device_atomic_ref< T, address > device_atomic_ref
Use vecmem::dummy_device_atomic_ref as a fallback.
Definition device_atomic_ref.hpp:108