coordinate_transform.hpp Source File#
coordinate_transform.hpp
Go to the documentation of this file.
138 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
321 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
417 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
546// Implementation of "merge" transformation primitive that uses magic-number-division to do lowering
552// dividend would be bit-wise interpreted as uint32_t and magic number division implementation for
674 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
698// Implementation of "merge" transformation primitive that uses division and mod. It is supposed to
699// be used for low_lengths that are known at compile time and are power of 2, otherwise performance
800 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
911 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
1311 CK_TILE_HOST_DEVICE constexpr xor_t(const LowLengths& low_lengths) : up_lengths_{low_lengths} {}
1555//*******************************************************************************************************
1563template <typename LowLength, typename LeftPad, typename RightPad, bool SkipIsValidCheck = false>
1690make_indexing_transform_with_adaptor(const UpLength& up_lengths, const IndexingAdaptor& iadaptor)
auto pad(ck::index_t mpb, ck::index_t npb, ck::index_t kpb, ck::tensor_operation::device::GemmSpecialization gemm, CDesc_MRaw_NRaw conv)
Definition helper.hpp:70
__host__ __device__ constexpr auto unmerge(const Layout< Shape, UnrolledDesc > &layout, const NewLengths &new_lengths, const NewIdxs &new_indexes)
Unmerge selected dim in layout.
Definition layout_utils.hpp:474
Definition tile/core/algorithm/cluster_descriptor.hpp:13
CK_TILE_HOST_DEVICE constexpr auto make_pass_through_transform(const LowLength &low_length)
Definition coordinate_transform.hpp:1558
CK_TILE_HOST_DEVICE constexpr auto make_left_pad_transform(const LowLength &low_length, const LeftPadLength &left_pad_, bool_constant< SkipIsValidCheck >=bool_constant< false >{})
Definition coordinate_transform.hpp:1575
CK_TILE_HOST_DEVICE constexpr auto make_replicate_transform(const UpLengths &up_lengths)
Definition coordinate_transform.hpp:1641
CK_TILE_HOST_DEVICE constexpr auto container_reduce(const Container &x, Reduce reduce, Init init, number< IBegin >=number< 0 >{}, number< IEnd >=number< Container::size()>{}, number< IStep >=number< 1 >{})
Definition tile/core/container/container_helper.hpp:198
CK_TILE_HOST_DEVICE constexpr auto make_freeze_transform(const LowerIndex &low_idx)
Definition coordinate_transform.hpp:1629
constant< b > bool_constant
Definition tile/core/numeric/integral_constant.hpp:43
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_pad_transform(const LowLength &low_length, const LeftPad &left_pad, const RightPad &right_pad, bool_constant< SkipIsValidCheck >=bool_constant< false >{})
Definition coordinate_transform.hpp:1565
CK_TILE_HOST_DEVICE constexpr auto make_insert_transform(const UpperIndex &up_idx)
Definition coordinate_transform.hpp:1635
CK_TILE_HOST_DEVICE constexpr auto make_indexing_transform_with_adaptor(const UpLength &up_lengths, const IndexingAdaptor &iadaptor)
Definition coordinate_transform.hpp:1690
CK_TILE_HOST_DEVICE constexpr auto make_modulo_transform(const Modulus &modulus, const UpLength &up_length)
Definition coordinate_transform.hpp:1655
CK_TILE_HOST_DEVICE constexpr auto make_unmerge_transform(const UpLengths &up_lengths, bool_constant< Use24BitIntegerCalculation >=bool_constant< false >{})
Definition coordinate_transform.hpp:1622
CK_TILE_HOST_DEVICE constexpr auto make_xor_transform(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:1662
CK_TILE_HOST_DEVICE constexpr auto generate_tuple(F &&f, number< N >)
Definition tile/core/container/tuple.hpp:429
array< index_t, N > multi_index
Definition tile/core/container/multi_index.hpp:17
CK_TILE_HOST_DEVICE constexpr index_t gcd(index_t x, index_t y)
Definition tile/core/numeric/math.hpp:268
CK_TILE_HOST_DEVICE constexpr auto make_offset_transform(const LowLength &low_length, const OffsetLength &offset_length)
Definition coordinate_transform.hpp:1668
CK_TILE_HOST_DEVICE constexpr auto make_merge_transform_v2_magic_division(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:1602
CK_TILE_HOST_DEVICE constexpr auto make_merge_transform_v3_division_mod(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:1609
is_static< T > is_known_at_compile_time
Definition type_traits.hpp:94
CK_TILE_HOST_DEVICE constexpr auto make_slice_transform(const LowLength &low_length, const SliceBegin &slice_begin, const SliceEnd &slice_end)
Definition coordinate_transform.hpp:1647
CK_TILE_HOST_DEVICE constexpr auto make_right_pad_transform(const LowLength &low_length, const RightPadLength &right_pad_, bool_constant< SkipIsValidCheck >=bool_constant< false >{})
Definition coordinate_transform.hpp:1584
CK_TILE_HOST_DEVICE constexpr auto make_indexing_transform(const UpLength &up_lengths, const Indices &indices)
Definition coordinate_transform.hpp:1680
CK_TILE_HOST_DEVICE constexpr auto container_reverse_exclusive_scan(const array< TData, NSize > &x, Reduce f, Init init)
Definition tile/core/container/container_helper.hpp:240
CK_TILE_HOST_DEVICE constexpr auto make_tuple(Xs &&... xs)
Definition tile/core/container/tuple.hpp:360
CK_TILE_HOST_DEVICE constexpr auto make_embed_transform(const UpLengths &up_lengths, const Coefficients &coefficients)
Definition coordinate_transform.hpp:1594
A fixed-size array container similar to std::array with additional utilities.
Definition tile/core/container/array.hpp:43
Definition coordinate_transform.hpp:32
static CK_TILE_HOST_DEVICE constexpr index_t get_num_of_lower_dimension()
Definition coordinate_transform.hpp:38
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:33
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &, const LowVectorStrides &)
Definition coordinate_transform.hpp:47
static CK_TILE_HOST_DEVICE constexpr index_t get_num_of_upper_dimension()
Definition coordinate_transform.hpp:40
Definition coordinate_transform.hpp:449
CK_TILE_HOST_DEVICE constexpr embed(const UpLengths &up_lengths, const Coefficients &coefficients)
Definition coordinate_transform.hpp:460
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:466
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:513
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:474
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:518
CK_TILE_HOST_DEVICE constexpr embed()=default
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &) const
Definition coordinate_transform.hpp:488
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:471
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:506
Definition coordinate_transform.hpp:946
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:982
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:987
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &, const UpIdx &)
Definition coordinate_transform.hpp:966
static CK_TILE_HOST_DEVICE constexpr auto get_upper_lengths()
Definition coordinate_transform.hpp:953
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:975
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &) const
Definition coordinate_transform.hpp:956
CK_TILE_HOST_DEVICE constexpr freeze()=default
CK_TILE_HOST_DEVICE constexpr freeze(const LowerIndex &low_idx)
Definition coordinate_transform.hpp:951
static constexpr bool value
Definition type_traits.hpp:77
Definition indexing_adaptor.hpp:20
Definition coordinate_transform.hpp:1476
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:1532
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1537
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1502
CK_TILE_HOST_DEVICE constexpr indexing()=default
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:1494
CK_TILE_HOST_DEVICE constexpr indexing(const UpLength &up_length, const IndexingAdaptor &iadaptor)
Definition coordinate_transform.hpp:1488
decltype(make_tuple(UpLength{})) UpLengths
Definition coordinate_transform.hpp:1482
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1511
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:1499
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1525
Definition coordinate_transform.hpp:1005
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &, const UpIdxDiff &, LowIdx &, const UpIdx &)
Definition coordinate_transform.hpp:1032
CK_TILE_HOST_DEVICE constexpr insert(const UpperLength &up_length)
Definition coordinate_transform.hpp:1012
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1054
decltype(make_tuple(UpperLength{})) UpLengths
Definition coordinate_transform.hpp:1006
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:1049
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1042
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &, const UpIdx &) const
Definition coordinate_transform.hpp:1024
CK_TILE_HOST_DEVICE constexpr auto get_upper_lengths() const
Definition coordinate_transform.hpp:1021
static CK_TILE_HOST_DEVICE constexpr index_t get_num_of_lower_dimension()
Definition coordinate_transform.hpp:1017
static CK_TILE_HOST_DEVICE constexpr bool IsLinearTransform()
Definition coordinate_transform.hpp:1039
static CK_TILE_HOST_DEVICE constexpr index_t get_num_of_upper_dimension()
Definition coordinate_transform.hpp:1019
CK_TILE_HOST_DEVICE constexpr insert()=default
Definition coordinate_transform.hpp:538
CK_TILE_HOST_DEVICE constexpr auto operator()(number< I > i) const
Definition coordinate_transform.hpp:540
Definition coordinate_transform.hpp:253
CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &idx_up) const
Definition coordinate_transform.hpp:307
CK_TILE_HOST_DEVICE constexpr left_pad()=default
LeftPadLength left_pad_length_
Definition coordinate_transform.hpp:260
CK_TILE_HOST_DEVICE constexpr left_pad(const LowLength &low_length, const LeftPadLength &left_pad_length)
Definition coordinate_transform.hpp:264
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:273
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:300
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:270
decltype(make_tuple(LowLength{}+LeftPadLength{})) UpLengths
Definition coordinate_transform.hpp:257
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition coordinate_transform.hpp:321
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition coordinate_transform.hpp:283
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:312
static CK_TILE_DEVICE constexpr uint32_t do_magic_division(uint32_t dividend, uint32_t multiplier, uint32_t shift)
Definition magic_div.hpp:60
static CK_TILE_HOST_DEVICE constexpr auto calculate_magic_numbers(uint32_t divisor)
Definition magic_div.hpp:29
Definition coordinate_transform.hpp:560
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:666
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up_new) const
Definition coordinate_transform.hpp:621
LowLengthsMagicDivisor low_lengths_magic_divisor_
Definition coordinate_transform.hpp:574
decltype(make_tuple(container_reduce(LowLengths{}, multiplies{}, number< 1 >{}))) UpLengths
Definition coordinate_transform.hpp:566
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:592
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:652
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition coordinate_transform.hpp:674
static constexpr index_t NDimLow
Definition coordinate_transform.hpp:561
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:600
multi_index< 1 > UpperIndex
Definition coordinate_transform.hpp:564
LowLengths low_lengths_
Definition coordinate_transform.hpp:573
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:657
CK_TILE_HOST_DEVICE constexpr merge_v2_magic_division()=default
UpLengths up_lengths_
Definition coordinate_transform.hpp:575
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:597
CK_TILE_HOST_DEVICE constexpr merge_v2_magic_division(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:582
multi_index< NDimLow > LowerIndex
Definition coordinate_transform.hpp:563
decltype(generate_tuple( lambda_merge_generate_MagicDivision_calculate_magic_divisor< LowLengths >{}, number< NDimLow >{})) LowLengthsMagicDivisor
Definition coordinate_transform.hpp:569
Definition coordinate_transform.hpp:703
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition coordinate_transform.hpp:800
CK_TILE_HOST_DEVICE constexpr merge_v3_division_mod()=default
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:778
multi_index< 1 > UpperIndex
Definition coordinate_transform.hpp:707
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:730
decltype(make_tuple(container_reduce(LowLengths{}, multiplies{}, number< 1 >{}))) UpLengths
Definition coordinate_transform.hpp:712
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:783
LowLengths low_lengths_
Definition coordinate_transform.hpp:715
UpLengths up_lengths_
Definition coordinate_transform.hpp:717
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:792
static constexpr index_t NDimLow
Definition coordinate_transform.hpp:704
LowLengthsScan low_lengths_scan_
Definition coordinate_transform.hpp:716
decltype(container_reverse_exclusive_scan(LowLengths{}, multiplies{}, number< 1 >{})) LowLengthsScan
Definition coordinate_transform.hpp:709
CK_TILE_HOST_DEVICE constexpr merge_v3_division_mod(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:721
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:733
multi_index< NDimLow > LowerIndex
Definition coordinate_transform.hpp:706
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up_new) const
Definition coordinate_transform.hpp:751
Definition coordinate_transform.hpp:1222
decltype(make_tuple(UpLength{})) UpLengths
Definition coordinate_transform.hpp:1225
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &up_idx) const
Definition coordinate_transform.hpp:1250
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1279
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1267
CK_TILE_HOST_DEVICE constexpr modulo(const Modulus &modulus, const UpLength &up_length)
Definition coordinate_transform.hpp:1232
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:1237
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1240
CK_TILE_HOST_DEVICE constexpr modulo()=default
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:1274
Definition tile/core/numeric/math.hpp:98
Definition coordinate_transform.hpp:1392
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition coordinate_transform.hpp:1427
CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &) const
Definition coordinate_transform.hpp:1451
decltype(make_tuple(LowLength{})) UpLengths
Definition coordinate_transform.hpp:1396
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1444
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1456
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:1409
CK_TILE_HOST_DEVICE constexpr offset(const LowLength &low_length, const OffsetLength &offset_length)
Definition coordinate_transform.hpp:1403
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:1414
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1417
CK_TILE_HOST_DEVICE constexpr offset()=default
Definition coordinate_transform.hpp:161
decltype(make_tuple(LowLength{}+LeftPadLength{}+RightPadLength{})) UpLengths
Definition coordinate_transform.hpp:165
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition coordinate_transform.hpp:195
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:226
CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &idx_up) const
Definition coordinate_transform.hpp:219
RightPadLength right_pad_length_
Definition coordinate_transform.hpp:169
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:185
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:182
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:212
CK_TILE_HOST_DEVICE constexpr pad(const LowLength &low_length, const LeftPadLength &left_pad_length, const RightPadLength &right_pad_length)
Definition coordinate_transform.hpp:173
Definition coordinate_transform.hpp:66
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:88
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition coordinate_transform.hpp:138
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:125
decltype(make_tuple(LowLength{})) UpLengths
Definition coordinate_transform.hpp:72
static CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up)
Definition coordinate_transform.hpp:91
static constexpr auto type_enum
Definition coordinate_transform.hpp:67
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition coordinate_transform.hpp:101
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:130
CK_TILE_HOST_DEVICE constexpr pass_through()=default
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:118
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:83
CK_TILE_HOST_DEVICE constexpr pass_through(const LowLength &low_length)
Definition coordinate_transform.hpp:78
Definition coordinate_transform.hpp:1072
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1100
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1112
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &, const UpIdx &) const
Definition coordinate_transform.hpp:1084
CK_TILE_HOST_DEVICE constexpr auto get_upper_lengths() const
Definition coordinate_transform.hpp:1081
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &, const UpIdxDiff &, LowIdx &, const UpIdx &)
Definition coordinate_transform.hpp:1092
CK_TILE_HOST_DEVICE constexpr replicate()=default
CK_TILE_HOST_DEVICE constexpr replicate(const UpLengths &up_lengths)
Definition coordinate_transform.hpp:1077
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:1107
Definition coordinate_transform.hpp:345
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition coordinate_transform.hpp:378
CK_TILE_HOST_DEVICE constexpr right_pad()=default
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:407
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:365
RightPadLength right_pad_length_
Definition coordinate_transform.hpp:353
CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &idx_up) const
Definition coordinate_transform.hpp:402
CK_TILE_HOST_DEVICE constexpr right_pad(const LowLength &low_length, const RightPadLength &right_pad_length)
Definition coordinate_transform.hpp:357
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition coordinate_transform.hpp:417
static CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up)
Definition coordinate_transform.hpp:368
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:395
decltype(make_tuple(LowLength{}+RightPadLength{})) UpLengths
Definition coordinate_transform.hpp:349
Definition coordinate_transform.hpp:1132
CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &) const
Definition coordinate_transform.hpp:1190
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:1153
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition coordinate_transform.hpp:1166
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1156
decltype(make_tuple(SliceEnd{} - SliceBegin{})) UpLengths
Definition coordinate_transform.hpp:1136
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1195
CK_TILE_HOST_DEVICE constexpr slice()=default
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1183
CK_TILE_HOST_DEVICE constexpr slice(const LowLength &, const SliceBegin &slice_begin, const SliceEnd &slice_end)
Definition coordinate_transform.hpp:1144
Definition tile/core/utility/functional.hpp:43
Definition coordinate_transform.hpp:828
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:853
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &) const
Definition coordinate_transform.hpp:879
CK_TILE_HOST_DEVICE constexpr unmerge(const UpLengths &up_lengths)
Definition coordinate_transform.hpp:842
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:890
CK_TILE_HOST_DEVICE constexpr unmerge()=default
decltype(container_reverse_exclusive_scan(UpLengths{}, multiplies{}, number< 1 >{})) UpLengthsScan
Definition coordinate_transform.hpp:834
UpLengthsScan up_lengths_scan_
Definition coordinate_transform.hpp:838
static CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition coordinate_transform.hpp:911
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:848
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:856
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:902
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:897
Definition coordinate_transform.hpp:1299
static CK_TILE_HOST_DEVICE constexpr auto get_type_enum()
Definition coordinate_transform.hpp:1313
CK_TILE_HOST_DEVICE constexpr xor_t(const LowLengths &low_lengths)
Definition coordinate_transform.hpp:1311
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition coordinate_transform.hpp:1358
CK_TILE_HOST_DEVICE constexpr auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides) const
Definition coordinate_transform.hpp:1370
CK_TILE_HOST_DEVICE constexpr const auto & get_upper_lengths() const
Definition coordinate_transform.hpp:1318
static CK_TILE_HOST_DEVICE constexpr bool is_known_at_compile_time()
Definition coordinate_transform.hpp:1363
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1334
CK_TILE_HOST_DEVICE constexpr void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition coordinate_transform.hpp:1321
static CK_TILE_HOST_DEVICE constexpr bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition coordinate_transform.hpp:1351
constexpr auto slice(const FromType from, const ToType to)
Get dim slice.
Definition tensor_utils.hpp:245