api_backend Last update: 17.07.2025 1#pragma once 2 3#ifdef __CUDA_ARCH__ 4#include <rocky20/cuda/cuda_backend.hpp> 5#else 6#include <rocky20/device/omp_backend.hpp> 7#endif 8 9namespace backend 10{ 11 12template <typename T> 13__host__ __device__ void atomic_add(T *address, T val) 14{ 15#ifdef __CUDA_ARCH__ 16 CudaBackend::AtomicAdd(address, val); 17#else 18 OMPBackend::AtomicAdd(address, val); 19#endif 20} 21 22template <typename T> 23__host__ __device__ void atomic_add(T *address, T val, T ¤t_value) 24{ 25#ifdef __CUDA_ARCH__ 26 CudaBackend::AtomicAdd(address, val, current_value); 27#else 28 OMPBackend::AtomicAdd(address, val, current_value); 29#endif 30} 31 32template <typename T> 33__host__ __device__ void atomic_max(T* address, T val) 34{ 35#ifdef __CUDA_ARCH__ 36 CudaBackend::AtomicMax(address, val); 37#else 38 OMPBackend::AtomicMax(address, val); 39#endif 40} 41 42}