22 template<alpaka::concepts::Api T_Api>
25 constexpr decltype(
auto)
operator()(T_Api
const)
const
32 template<alpaka::concepts::Api T_Api>
41 template<alpaka::concepts::Api T_Api>
44 constexpr decltype(
auto)
operator()(T_Api
const)
const
47 sizeof(T_Api) &&
false,
48 "Intrinsic implementation for the current used API is not defined.");
54 template<alpaka::concepts::Api T_Api>
62 template<
typename T_Type, alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
65 consteval uint32_t
operator()(T_Api
const, T_DeviceKind
const)
const
67 static_assert(
sizeof(T_Api) &&
false,
"Missing definition of GetArchSimdWidth for API.");
76 template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
80 consteval uint32_t
operator()(T_Api
const, T_DeviceKind
const)
const
82 static_assert(
sizeof(T_Api) &&
false,
"Missing definition of GetNumPipelines for API.");
90 template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
93 consteval uint32_t
operator()(T_Api
const, T_DeviceKind
const)
const
95 static_assert(
sizeof(T_Api) &&
false,
"GetCachelineSize for the current used API is not defined.");
110 template<
typename T_Type, concepts::Api T_Api, concepts::DeviceKind T_DeviceKind>
113 consteval uint32_t
operator()(T_Api
const, T_DeviceKind
const, uint32_t
const alignment)
const
143 return !(lhs == rhs);
151 template<
typename T_Type>
176 template<
typename T_Type>
203 template<
typename T_Type>
207 auto const alignment)
216 namespace onAcc::trait
221 template<alpaka::concepts::Executor T_Executor,
typename T_AtomicScope>
224 constexpr decltype(
auto)
operator()(T_Executor
const)
const
227 sizeof(T_Executor) &&
false,
228 "Atomic implementation for the current used executor is not defined.");
234 template<alpaka::concepts::Executor T_Executor,
typename T_AtomicScope>
235 constexpr decltype(
auto)
getAtomicImpl(T_Executor
const executor, T_AtomicScope
const atomicScope)
#define ALPAKA_TYPEOF(...)
Get the type of instance.
Concept to check for APIs.
Concept to check if something is a device kind.
Concept to check for an executor.
constexpr decltype(auto) getAtomicImpl(T_Executor const executor, T_AtomicScope const atomicScope)
constexpr decltype(auto) getMathImpl(T_Api const api)
constexpr decltype(auto) getIntrinsicImpl(T_Api const api)
consteval uint32_t getNumPipelines(concepts::Api auto const api, alpaka::concepts::DeviceKind auto const deviceType)
Get the number of instructions that can be issued in parallel.
consteval uint32_t getNumElemPerThread(concepts::Api auto const api, alpaka::concepts::DeviceKind auto const deviceType)
Get the number of elements to compute per thread.
consteval uint32_t getCachelineSize(concepts::Api auto const api, alpaka::concepts::DeviceKind auto const deviceType)
get the cacheline size in bytes
constexpr bool isExecutor
consteval uint32_t getArchSimdWidth(concepts::Api auto const api, alpaka::concepts::DeviceKind auto const deviceType)
Get the SIMD width in bytes for an API and device kind combination.
constexpr bool operator!=(concepts::Executor auto lhs, concepts::Executor auto rhs)
consteval uint32_t getAdjustedAlignment(concepts::Api auto const api, concepts::DeviceKind auto const deviceType, auto const alignment)
Adjusts the memory alignment based on a specific API and device kind.
constexpr bool operator==(concepts::Executor auto lhs, concepts::Executor auto rhs)
Defines the implementation used for atomic operations toghether with the used executor.
consteval uint32_t operator()(T_Api const, T_DeviceKind const, uint32_t const alignment) const
Adjusting the requested in alignment in order to meet device specific constraints.
consteval uint32_t operator()(T_Api const, T_DeviceKind const) const
consteval uint32_t operator()(T_Api const, T_DeviceKind const) const
Defines the implementation used for intrinsics.
Map's all API's by default to stl math functions.
consteval uint32_t operator()(T_Api const, T_DeviceKind const) const
Number of commands a CPU can issue at the same time.