15 template<
typename Mapping, std::size_t... Permutation>
19 using size_type =
typename Mapping::ArrayExtents::value_type;
20 using ArrayIndex =
typename Mapping::ArrayExtents::Index;
32 template<
typename... Args>
34 : Mapping(std::forward<Args>(innerArgs)...)
40 "The number of integral arguments to PermuteArrayIndex must be the same as ArrayExtents::rank");
42 template<std::size_t... RCs>
46 return Inner::blobNrAndOffset(
ArrayIndex{ai[Permutation]...}, rc);
49 template<std::size_t... RCs,
typename Blobs>
53 return Inner::compute(ArrayIndex{ai[Permutation]...}, rc, blobs);
58 template<
typename Mapping>
62 template<
typename Mapping>
66 template<
typename Mapping, std::size_t... Permutation>
#define LLAMA_FN_HOST_ACC_INLINE
PermuteArrayIndex(Mapping) -> PermuteArrayIndex< Mapping >
constexpr bool isPermuteArrayIndex
static constexpr std::size_t rank
PermuteArrayIndex(Args &&... innerArgs)
auto compute(ArrayIndex ai, RecordCoord< RCs... > rc, Blobs &blobs) const -> decltype(auto)
PermuteArrayIndex(Mapping mapping)
constexpr auto blobNrAndOffset(ArrayIndex ai, RecordCoord< RCs... > rc={}) const -> NrAndOffset< size_type >
constexpr PermuteArrayIndex()=default