14namespace alpaka::onAcc::internal
19 struct IsIdxMapping : std::false_type
24 struct IsIdxMapping<layout::Strided> : std::true_type
29 struct IsIdxMapping<layout::Optimized> : std::true_type
34 struct IsIdxMapping<layout::Contiguous> : std::true_type
39 constexpr bool isIdxMapping_v = IsIdxMapping<T>::value;
42 struct IsIdxTraversing : std::false_type
47 struct IsIdxTraversing<traverse::Flat> : std::true_type
52 struct IsIdxTraversing<traverse::Tiled> : std::true_type
57 constexpr bool isIdxTraversing_v = IsIdxTraversing<T>::value;
69 typename T_ScalarIdxType,
71 typename T_DomainSpec,
73 typename T_IdxMapping>
78 T_DomainSpec
const& domainSpec,
79 [[maybe_unused]] T_Traverse traverse,
80 T_IdxMapping idxMapping)
const requires std::is_same_v<
ALPAKA_TYPEOF(idxMapping), layout::Optimized>
82 auto adjIdxMapping = adjustMapping(acc);
83 auto const idxRange = domainSpec.getIdxRange(acc);
84 auto const threadSpace = domainSpec.getThreadSpace(acc);
86 using IdxType = std::conditional_t<
87 std::is_same_v<void, T_ScalarIdxType>,
90 return T_Traverse::make(
101 T_DomainSpec
const& domainSpec,
102 [[maybe_unused]] T_Traverse traverse,
103 T_IdxMapping idxMapping)
const
105 auto const idxRange = domainSpec.getIdxRange(acc);
106 auto const threadSpace = domainSpec.getThreadSpace(acc);
108 using IdxType = std::conditional_t<
109 std::is_same_v<void, T_ScalarIdxType>,
112 return T_Traverse::make(
#define ALPAKA_FN_HOST_ACC
All functions that can be used on an accelerator have to be attributed with ALPAKA_FN_ACC or ALPAKA_F...
#define ALPAKA_TYPEOF(...)
Get the type of instance.
consteval auto iotaCVec()
Create and return a CVector of the given length with values 1, 2, ...
constexpr decltype(auto) pCast(auto &&input)
Performs a static_cast on the storage type of combined data type.