16 namespace internalCompute
20 template<
typename T_Acc, alpaka::concepts::Layer T_Scope>
23 constexpr auto operator()(T_Acc
const& acc, T_Scope
const scope)
const;
27 constexpr void sync(
auto const& acc, alpaka::concepts::Layer
auto const scope)
34 template<
typename T,
size_t T_uniqueId,
typename T_Acc>
37 constexpr decltype(
auto)
operator()(
auto const& acc)
const
39 return acc[layer::shared].template allocVar<T, T_uniqueId>();
43 template<
typename T,
typename T_Acc>
46 constexpr auto operator()(
auto const& acc)
const -> T*
49 T_Acc::hasKey(object::dynSharedMemBytes),
50 "Dynamic shared memory not configured. Add member 'dynSharedMemBytes' to the kernel or "
51 "specialize 'onHost::trait:BlockDynSharedMemBytes'!");
52 uint32_t numBytes = acc[object::dynSharedMemBytes];
53 return acc[layer::dynShared].template allocDynamic<T, uniqueId()>(numBytes);
58 template<
typename T,
size_t T_uniqueId>
59 constexpr decltype(
auto) declareSharedVar(
auto const& acc)
61 return SharedMemory::Static<T, T_uniqueId, std::decay_t<
decltype(acc)>>{}(acc);
65 constexpr auto declareDynamicSharedMem(
auto const& acc) -> T*
67 return SharedMemory::Dynamic<T, std::decay_t<
decltype(acc)>>{}(acc);
73 template<
typename TOp,
typename TAtomicImpl,
typename T,
typename T_Scope,
typename TSfinae =
void>
80 template<
typename T_Acc,
typename T_Origin,
typename T_Unit>
83 constexpr alpaka::concepts::Vector
auto operator()(T_Acc
const& acc, T_Origin origin, T_Unit unit)
91 template<
typename T_Acc,
typename T_Origin,
typename T_Unit>
94 constexpr alpaka::concepts::Vector
auto operator()(T_Acc
const& acc, T_Origin origin, T_Unit unit)
102 template<
typename T_Acc,
typename T_MemoryOrder,
typename T_Scope>
105 constexpr void operator()(T_Acc
const& acc, T_MemoryOrder
const order, T_Scope
const scope)
const;
#define ALPAKA_TYPEOF(...)
Get the type of instance.
functionality which is usable on the accelerator compute device from within a kernel.
auto scope(concepts::Level auto logLvl, std::source_location const &location=std::source_location::current())
Log the entry and exit of a scope.