1 #ifndef HeterogeneousCore_CUDAUtilities_interface_cudaCompat_h
2 #define HeterogeneousCore_CUDAUtilities_interface_cudaCompat_h
15 #include <cuda_runtime.h>
19 #define __global__ inline __attribute__((always_inline))
21 #undef __forceinline__
22 #define __forceinline__ inline __attribute__((always_inline))
25 namespace cudacompat {
35 template <
typename T1,
typename T2>
38 *address = old == compare ? val : old;
42 template <
typename T1,
typename T2>
47 template <
typename T1,
typename T2>
55 template <
typename T1,
typename T2>
60 template <
typename T1,
typename T2>
67 template <
typename T1,
typename T2>
72 template <
typename T1,
typename T2>
79 template <
typename T1,
typename T2>
84 template <
typename T1,
typename T2>
91 template <
typename T1,
typename T2>
96 template <
typename T1,
typename T2>
103 template <
typename T1,
typename T2>
112 template <
typename T>
121 using namespace cms::cudacompat;
125 #endif // HeterogeneousCore_CUDAUtilities_interface_cudaCompat_h
T1 atomicMax(T1 *a, T2 b)
bool compare(const P &i, const P &j)
tuple ret
prodAgent to be discontinued
bool __syncthreads_or(bool x)
T1 atomicCAS(T1 *address, T1 compare, T2 val)
T1 atomicSub(T1 *a, T2 b)
T1 atomicSub_block(T1 *a, T2 b)
T1 atomicInc(T1 *a, T2 b)
T1 atomicCAS_block(T1 *address, T1 compare, T2 val)
T1 atomicMin_block(T1 *a, T2 b)
T1 atomicInc_block(T1 *a, T2 b)
T1 atomicAdd_block(T1 *a, T2 b)
bool __syncthreads_and(bool x)
T1 atomicMin(T1 *a, T2 b)
T1 atomicAdd(T1 *a, T2 b)
T1 atomicMax_block(T1 *a, T2 b)