25 template<
typename T_Any>
30 if constexpr(
requires { T_Any::getName(); })
31 return T_Any::getName();
40 template<
typename T_Any>
52 template<
typename T_Any>
55 inline constexpr auto operator()(
auto&& any)
const ->
decltype(any.getApi())
64 return GetApi::Op<std::decay_t<
decltype(any)>>{}(any);
67 template<
typename T_Any>
75 template<
typename T_Any>
78 inline constexpr auto operator()(
auto&& any)
const ->
decltype(any.getExecutor())
80 return any.getExecutor();
85 template<
typename T_Any>
88 return GetExecutor::Op<std::decay_t<T_Any>>{}(
ALPAKA_FORWARD(any));
91 template<
typename T_Any>
99 template<
typename T_Any>
102 inline constexpr auto operator()(
auto&& any)
const ->
decltype(any.getDeviceKind())
104 return any.getDeviceKind();
116 template<
typename T_Any>
119 constexpr auto operator()(
auto&& any)
const requires requires { any.getAlignment(); }
121 return any.getAlignment();
144 template<
typename T_AnyDataSource, alpaka::concepts::Alignment T_Alignment, alpaka::concepts::Vector T_Idx>
151 template<u
int32_t T_simdW
idth>
152 constexpr auto load(
auto&& anyDataSource, T_Alignment dataAlignment, T_Idx
const& index)
const;
168 template<u
int32_t T_simdW
idth>
169 constexpr auto loadAsSimd(
auto&& anyDataSource,
auto dataAlignment,
auto const& index)
172 .template load<T_simdWidth>(
ALPAKA_FORWARD(anyDataSource), dataAlignment, index);
#define ALPAKA_TYPEOF(...)
Get the type of instance.
#define ALPAKA_FORWARD(instance)
Perfectly forward an instance as argument.
use source_location to derive the demangled type name based on: https://www.reddit....
alpaka internal implementations.
constexpr auto loadAsSimd(auto &&anyDataSource, auto dataAlignment, auto const &index)
Get data as SIMD vector.
constexpr auto getExecutor(T_Any &&any) -> decltype(GetExecutor::Op< ALPAKA_TYPEOF(any)>{}(any))
constexpr auto getDeviceKind(auto &&any) -> decltype(GetDeviceType::Op< ALPAKA_TYPEOF(any)>{}(any))
constexpr auto getAlignment(auto &&any)
constexpr auto getApi(auto &&any) -> decltype(GetApi::Op< ALPAKA_TYPEOF(any)>{}(any))
std::shared_ptr< T > Handle
constexpr auto demangledName()
Strongly typed and constexpr representation of a byte-alignment of memory.
constexpr auto operator()(auto &&any) const
constexpr auto operator()(auto &&any) const
constexpr auto operator()(auto &&any) const -> decltype(any.getApi())
constexpr auto operator()(auto &&any) const -> decltype(any.getDeviceKind())
constexpr auto operator()(auto &&any) const -> decltype(any.getExecutor())
auto operator()(T_Any const &any) const
auto operator()(T_Any const &any) const
constexpr auto load(auto &&anyDataSource, T_Alignment dataAlignment, T_Idx const &index) const
Get data as SIMD vector.
Load data from a data source as SIMD vector.