RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Classes | Namespaces | Macros | Typedefs | Functions
atomic_builtin.hpp File Reference

RAJA header file defining automatic and builtin atomic operations. More...

#include "RAJA/config.hpp"
#include <cstdint>
#include "RAJA/util/TypeConvert.hpp"
#include "RAJA/util/macros.hpp"

Go to the source code of this file.

Classes

struct  RAJA::builtin_atomic
 Atomic policy that uses the compilers builtin __atomic_XXX routines. More...
 
struct  RAJA::detail::builtin_useIntrinsic< T >
 
struct  RAJA::detail::builtin_useReinterpret< T >
 
struct  RAJA::detail::builtin_useCAS< T >
 

Namespaces

 RAJA
 
 RAJA::detail
 

Macros

#define RAJA_DEVICE_HIP
 

Typedefs

template<typename T >
using RAJA::detail::builtin_useReinterpret_t = typename builtin_useReinterpret< T >::type
 

Functions

template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicLoad (T *acc)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE void RAJA::detail::builtin_atomicStore (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicExchange (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicCAS (T *acc, T compare, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicAdd (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicSub (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicAnd (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicOr (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicXor (T *acc, T value)
 
template<typename T , std::enable_if_t< builtin_useIntrinsic< T >::value, bool > = true>
RAJA_DEVICE_HIP RAJA_INLINE bool RAJA::detail::builtin_atomicCAS_equal (const T &a, const T &b)
 
template<typename T , typename Oper >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicCAS_loop (T *acc, Oper &&oper)
 
template<typename T , typename Oper , typename ShortCircuit >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::detail::builtin_atomicCAS_loop (T *acc, Oper &&oper, ShortCircuit &&sc)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicLoad (builtin_atomic, T *acc)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE void RAJA::atomicStore (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicAdd (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicSub (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicMin (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicMax (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicInc (builtin_atomic, T *acc)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicInc (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicDec (builtin_atomic, T *acc)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicDec (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicAnd (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicOr (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicXor (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicExchange (builtin_atomic, T *acc, T value)
 
template<typename T >
RAJA_DEVICE_HIP RAJA_INLINE T RAJA::atomicCAS (builtin_atomic, T *acc, T compare, T value)
 

Detailed Description

RAJA header file defining automatic and builtin atomic operations.

Macro Definition Documentation

◆ RAJA_DEVICE_HIP

#define RAJA_DEVICE_HIP