alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
atomic.hpp File Reference
#include "alpaka/api/api.hpp"
#include "alpaka/api/trait.hpp"
#include "alpaka/core/common.hpp"
#include "alpaka/onAcc/Acc.hpp"
#include "alpaka/onAcc/internal/interface.hpp"
#include "alpaka/onAcc/scope.hpp"
#include "alpaka/operation.hpp"
#include <type_traits>

Go to the source code of this file.

Namespaces

namespace  alpaka
 main alpaka namespace.
namespace  alpaka::onAcc
 functionality which is usable on the accelerator compute device from within a kernel.
namespace  alpaka::onAcc::atomic

Functions

template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicAdd (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic add operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicAnd (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic and operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicCas (auto const &acc, T *const addr, T const &compare, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic compare-and-swap operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicDec (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic decrement operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicExch (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic exchange operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicInc (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic increment operation.
ALPAKA_FN_ACC void alpaka::onAcc::atomic::atomicInvoke (auto &&fn, concepts::Acc auto const &acc, auto *inOut, auto &&... args)
 Defines the equivalent of an atomic invoke for user defined functors.
template<typename T>
ALPAKA_FN_ACC void alpaka::onAcc::atomic::atomicInvoke (std::plus< T >, concepts::Acc auto const &acc, auto *inOut, auto &&... args)
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicMax (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic max operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicMin (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic min operation.
template<typename TOp, typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicOp (auto const &acc, T *const addr, T const &compare, T const &value, T_Scope const scope=T_Scope()) -> T
 Executes the given operation atomically.
template<typename TOp, typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicOp (auto const &acc, T *const addr, T const &value, T_Scope const scope=T_Scope()) -> T
 Executes the given operation atomically.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicOr (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic or operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicSub (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic sub operation.
template<typename T, typename T_Scope = scope::Device>
constexpr auto alpaka::onAcc::atomicXor (auto const &acc, T *const addr, T const &value, T_Scope const hier=T_Scope()) -> T
 Executes an atomic xor operation.