25 template<
typename T_Any>
28 auto operator()([[maybe_unused]] T_Any
const& any)
const
30 if constexpr(
requires { T_Any::getName(); })
31 return T_Any::getName();
40 template<
typename T_Any>
43 auto operator()(T_Any
const& any)
const
52 template<
typename T_Any>
55 inline constexpr auto operator()(
auto&& any)
const
62 inline constexpr auto getApi(
auto&& any)
64 return GetApi::Op<std::decay_t<
decltype(
any)>>{}(
any);
67 template<
typename T_Any>
70 return GetApi::Op<
ALPAKA_TYPEOF(*anyHandle.get())>{}(*anyHandle.get());
75 template<
typename T_Any>
78 inline constexpr auto operator()(
auto&& any)
const
80 return any.getDeviceKind();
85 inline constexpr auto getDeviceKind(
auto&& any)
87 return GetDeviceType::Op<std::decay_t<
decltype(
any)>>{}(
any);
92 template<
typename T_Any>
95 constexpr auto operator()(
auto&& any)
const requires requires {
any.getAlignment(); }
97 return any.getAlignment();
100 constexpr auto operator()(
auto&& any)
const
103 return Alignment<>{};
108 constexpr auto getAlignment(
auto&& any)
110 return GetAlignment::Op<std::decay_t<
decltype(
any)>>{}(
any);
120 template<
typename T_AnyDataSource, alpaka::concepts::Alignment T_Alignment, alpaka::concepts::Vector T_Idx>
127 template<u
int32_t T_simdW
idth>
128 constexpr auto load(
auto&& anyDataSource, T_Alignment dataAlignment, T_Idx
const& index)
const;
144 template<u
int32_t T_simdW
idth>
145 constexpr auto loadAsSimd(
auto&& anyDataSource,
auto dataAlignment,
auto const& index)
148 .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....
constexpr bool any(alpaka::onAcc::concepts::Acc auto const &acc, int32_t predicate)
Evaluates predicate for all active threads of the warp.
std::shared_ptr< T > Handle
constexpr auto demangledName()