space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved > Struct Template Reference

space_filling_curve&lt; TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved &gt; Struct Template Reference#

Composable Kernel: ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved > Struct Template Reference
ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved > Struct Template Reference

#include <space_filling_curve.hpp>

Public Types

using Index = multi_index<nDim>

Static Public Member Functions

static CK_TILE_HOST_DEVICE constexpr index_t get_num_of_access ()
template<index_t AccessIdx1dHead, index_t AccessIdx1dTail>
static CK_TILE_HOST_DEVICE constexpr auto get_step_between (number< AccessIdx1dHead >, number< AccessIdx1dTail >)
template<index_t AccessIdx1d>
static CK_TILE_HOST_DEVICE constexpr auto get_forward_step (number< AccessIdx1d >)
template<index_t AccessIdx1d>
static CK_TILE_HOST_DEVICE constexpr auto get_backward_step (number< AccessIdx1d >)
template<index_t AccessIdx1d>
static CK_TILE_HOST_DEVICE constexpr Index _get_index (number< AccessIdx1d >)
template<index_t AccessIdx1d>
static CK_TILE_HOST_DEVICE constexpr auto get_index (number< AccessIdx1d >)

Static Public Attributes

static constexpr index_t TensorSize
static constexpr index_t nDim = TensorLengths::size()
static constexpr index_t ScalarPerVector
static constexpr auto access_lengths = TensorLengths{} / ScalarsPerAccess{}
static constexpr auto dim_access_order = DimAccessOrder{}
static constexpr auto ordered_access_lengths
static constexpr auto to_index_adaptor
static constexpr auto I0 = number<0>{}
static constexpr auto I1 = number<1>{}

Member Typedef Documentation

◆ Index

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
using ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::Index = multi_index<nDim>

Member Function Documentation

◆ _get_index()

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
template<index_t AccessIdx1d>
CK_TILE_HOST_DEVICE constexpr Index ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::_get_index ( number< AccessIdx1d > )
inlinestaticconstexpr

◆ get_backward_step()

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
template<index_t AccessIdx1d>
CK_TILE_HOST_DEVICE constexpr auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::get_backward_step ( number< AccessIdx1d > )
inlinestaticconstexpr

◆ get_forward_step()

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
template<index_t AccessIdx1d>
CK_TILE_HOST_DEVICE constexpr auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::get_forward_step ( number< AccessIdx1d > )
inlinestaticconstexpr

◆ get_index()

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
template<index_t AccessIdx1d>
CK_TILE_HOST_DEVICE constexpr auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::get_index ( number< AccessIdx1d > )
inlinestaticconstexpr

◆ get_num_of_access()

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
CK_TILE_HOST_DEVICE constexpr index_t ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::get_num_of_access ( )
inlinestaticconstexpr

◆ get_step_between()

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
template<index_t AccessIdx1dHead, index_t AccessIdx1dTail>
CK_TILE_HOST_DEVICE constexpr auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::get_step_between ( number< AccessIdx1dHead > ,
number< AccessIdx1dTail >  )
inlinestaticconstexpr

Member Data Documentation

◆ access_lengths

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::access_lengths = TensorLengths{} / ScalarsPerAccess{}
staticconstexpr

◆ dim_access_order

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::dim_access_order = DimAccessOrder{}
staticconstexpr

◆ I0

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::I0 = number<0>{}
staticconstexpr

◆ I1

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::I1 = number<1>{}
staticconstexpr

◆ nDim

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
index_t ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::nDim = TensorLengths::size()
staticconstexpr

◆ ordered_access_lengths

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::ordered_access_lengths
staticconstexpr
Initial value:
=
CK_TILE_HOST_DEVICE constexpr auto container_reorder_given_new2old(const array< TData, NSize > &old_array, sequence< IRs... >)
Definition tile/core/container/container_helper.hpp:39
static constexpr auto access_lengths
Definition tensor_space_filling_curve.hpp:28
static constexpr auto dim_access_order
Definition tensor_space_filling_curve.hpp:29

◆ ScalarPerVector

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
index_t ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::ScalarPerVector
staticconstexpr
Initial value:
=
reduce_on_sequence(ScalarsPerAccess{}, multiplies{}, number<1>{})
constant< v > number
Definition tile/core/numeric/integral_constant.hpp:37
CK_TILE_HOST_DEVICE constexpr index_t reduce_on_sequence(Seq, Reduce f, number< Init >)
Definition tile/core/container/sequence.hpp:982
Definition tile/core/numeric/math.hpp:98

◆ TensorSize

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
index_t ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::TensorSize
staticconstexpr
Initial value:
=
reduce_on_sequence(TensorLengths{}, multiplies{}, number<1>{})

◆ to_index_adaptor

template<typename TensorLengths, typename DimAccessOrder, typename ScalarsPerAccess, bool SnakeCurved = true>
auto ck_tile::space_filling_curve< TensorLengths, DimAccessOrder, ScalarsPerAccess, SnakeCurved >::to_index_adaptor
staticconstexpr
Initial value:
CK_TILE_HOST_DEVICE constexpr auto make_merge_transform(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:1615
CK_TILE_HOST_DEVICE constexpr auto make_single_stage_tensor_adaptor(const Transforms &transforms, LowerDimensionOldTopIdss, UpperDimensionNewTopIdss)
Definition tile/core/tensor/tensor_adaptor.hpp:359
CK_TILE_HOST_DEVICE constexpr auto make_tuple(Xs &&... xs)
Definition tile/core/container/tuple.hpp:360
static constexpr auto ordered_access_lengths
Definition tensor_space_filling_curve.hpp:30
typename conditional< kHasContent, type0, type1 >::type type
Definition utility/sequence.hpp:271
Definition tile/core/container/sequence.hpp:49

The documentation for this struct was generated from the following file: