MUDA
Loading...
Searching...
No Matches
atomic.h
1#pragma once
2#include <device_atomic_functions.h>
3namespace muda
4{
5template <typename T>
6__forceinline__ __device__ T atomic_cas(T* address, T compare, T val)
7{
8 return atomicCAS(address, compare, val);
9}
10
11template <typename T>
12__forceinline__ __device__ T atomic_add(T* address, T val)
13{
14 return atomicAdd(address, val);
15}
16
17template <typename T>
18__forceinline__ __device__ T atomic_sub(T* address, T val)
19{
20 return atomicSub(address, val);
21}
22
23template <typename T>
24__forceinline__ __device__ T atomic_exch(T* address, T val)
25{
26 return atomicExch(address, val);
27}
28
29template <typename T>
30__forceinline__ __device__ T atomic_max(T* address, T val)
31{
32 return atomicMax(address, val);
33}
34
35template <typename T>
36__forceinline__ __device__ T atomic_min(T* address, T val)
37{
38 return atomicMin(address, val);
39}
40
41template <typename T>
42__forceinline__ __device__ T atomic_and(T* address, T val)
43{
44 return atomicAnd(address, val);
45}
46
47template <typename T>
48__forceinline__ __device__ T atomic_or(T* address, T val)
49{
50 return atomicOr(address, val);
51}
52
53template <typename T>
54__forceinline__ __device__ T atomic_xor(T* address, T val)
55{
56 return atomicXor(address, val);
57}
58} // namespace muda