20 typename TArrayExtents,
34 using Permuter = PermuteFields<FlatRecordDim<TRecordDim>>;
42 * flatSizeOf<typename Permuter::FlatRecordDim, fieldAlignment == FieldAlignment::Align>;
45 template<std::size_t... RecordCoords>
50 constexpr std::size_t flatFieldIndex =
51 #if defined(__NVCC__) && __CUDACC_VER_MAJOR__ == 11 && __CUDACC_VER_MINOR__ <= 6
57 *
static_cast<size_type
>(
58 flatSizeOf<typename Permuter::FlatRecordDim, fieldAlignment == FieldAlignment::Align>)
63 return {size_type{0}, offset};
69 template<
typename TArrayExtents,
typename TRecordDim>
75 template<
typename ArrayExtents,
typename RecordDim,
typename LinearizeArrayIndexFunctor = LinearizeArrayIndexRight>
81 template<
typename ArrayExtents,
typename RecordDim,
typename LinearizeArrayIndexFunctor = LinearizeArrayIndexRight>
86 LinearizeArrayIndexFunctor,
92 template<
typename ArrayExtents,
typename RecordDim,
typename LinearizeArrayIndexFunctor = LinearizeArrayIndexRight>
103 template<
typename ArrayExtents,
typename RecordDim>
108 template<
typename Mapping>
109 inline constexpr
bool isAoS =
false;
116 typename LinearizeArrayIndexFunctor,
118 typename PermuteFields>
119 inline constexpr
bool
120 isAoS<AoS<ArrayExtents, RecordDim, FieldAlignment, LinearizeArrayIndexFunctor, PermuteFields>>
#define LLAMA_FN_HOST_ACC_INLINE
AoS(TArrayExtents, TRecordDim) -> AoS< TArrayExtents, TRecordDim >
typename internal::FlattenRecordDimImpl< RecordDim >::type FlatRecordDim
Returns a flat type list containing all leaf field types of the given record dimension.
ArrayExtents(Args...) -> ArrayExtents< typename internal::IndexTypeFromArgs< std::size_t, Args... >::type,(Args{}, dyn)... >
constexpr std::size_t flatRecordCoord
constexpr std::size_t flatOffsetOf
The byte offset of an element in a type list ifs elements would be in a normal struct.
TLinearizeArrayIndexFunctor LinearizeArrayIndexFunctor
static constexpr FieldAlignment fieldAlignment
PermuteFields< FlatRecordDim< TRecordDim > > Permuter
constexpr auto blobSize(size_type) const -> size_type
static constexpr std::size_t blobCount
constexpr auto blobNrAndOffset(typename Base::ArrayIndex ai, RecordCoord< RecordCoords... >={}) const -> NrAndOffset< size_type >
typename ArrayExtents::value_type size_type
typename ArrayExtents::Index ArrayIndex
constexpr auto extents() const -> ArrayExtents
Retains the order of the record dimension's fields.