20 typename TArrayExtents,
32 using Permuter = PermuteFields<FlatRecordDim<TRecordDim>>;
35 #if defined(__NVCC__) && __CUDACC_VER_MAJOR__ >= 12
38 constexpr
One() =
default;
53 template<std::size_t... RecordCoords>
58 constexpr std::size_t flatFieldIndex =
59 #if defined(__NVCC__) && __CUDACC_VER_MAJOR__ == 11 && __CUDACC_VER_MINOR__ <= 6
63 constexpr
auto offset =
static_cast<size_type
>(
flatOffsetOf<
67 return {size_type{0}, offset};
74 template<
typename ArrayExtents,
typename RecordDim>
81 template<
typename ArrayExtents,
typename RecordDim>
87 template<
typename ArrayExtents,
typename RecordDim>
98 template<
typename ArrayExtents,
typename RecordDim>
103 template<
typename Mapping>
104 inline constexpr
bool isOne =
false;
112 typename PermuteFields>
113 inline constexpr
bool isOne<One<ArrayExtents, RecordDim, FieldAlignment, PermuteFields>> =
true;
#define LLAMA_FN_HOST_ACC_INLINE
PermuteFieldsIncreasingAlignment< FlatRecordDim > PermuteFieldsMinimizePadding
Sorts the record dimension fields by the alignment of its fields to minimize padding.
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.
constexpr std::size_t flatSizeOf
The size of a type list if its elements would be in a normal struct.
typename ArrayExtents::value_type size_type
typename ArrayExtents::Index ArrayIndex
constexpr auto extents() const -> ArrayExtents
constexpr auto blobNrAndOffset(typename Base::ArrayIndex, RecordCoord< RecordCoords... >={}) const -> NrAndOffset< size_type >
static constexpr FieldAlignment fieldAlignment
constexpr One(TArrayExtents extents, TRecordDim={})
constexpr auto blobSize(size_type) const -> size_type
PermuteFields< FlatRecordDim< TRecordDim > > Permuter
static constexpr std::size_t blobCount