64#if defined(KOKKOS_ENABLE_CUDA)
65 return cuda::atomic_ref<T, desul::Impl::CudaMemoryScope<Scope>::value>(*ptr)
66 .fetch_add(val, desul::Impl::CudaMemoryOrder<Order>::value);
67#elif defined(KOKKOS_ENABLE_HIP)
68 return __hip_atomic_fetch_add(
69 ptr, val, desul::Impl::HIPMemoryOrder<Order>::value, desul::Impl::HIPMemoryScope<Scope>::value);
70#elif defined(KOKKOS_ENABLE_SYCL)
71 return desul::Impl::sycl_atomic_ref<T, Order, Scope>{*ptr}.fetch_add(val);
73 static_assert(std::same_as<Order, desul::MemoryOrderRelaxed>);
74 return std::atomic_ref<T>(*ptr).fetch_add(val, std::memory_order_relaxed);