19template <
typename RsLengths_,
21 typename Ps2RHssMajor_,
22 typename Ps2RHssMinor_,
23 typename Ys2RHsMajor_,
24 typename Ys2RHsMinor_>
34 static_assert(Ps2RHssMajor::size() == Ps2RHssMinor::size(),
"wrong!");
35 static_assert(Ys2RHsMajor::size() == Ys2RHsMinor::size(),
"wrong!");
50#if !CK_TILE_ENC_SUPPORT_Y_TO_R
52 "do not support Y dim pointed to R dim");
66 if constexpr(i.value == 0)
97 return ys_lengths_tmp;
108 rhs_major_minor_to_ys_tmp(rh_major)(rh_minor) = i;
111 return rhs_major_minor_to_ys_tmp;
122 ndims_span_minor(span_major)++;
125 return ndims_span_minor;
140 index_t cnt_ndim_span_minor = 0;
147 rhs_major_minor_to_span_minor(rh_major)(rh_minor) = cnt_ndim_span_minor;
149 cnt_ndim_span_minor++;
154 return rhs_major_minor_to_span_minor;
171 distributed_spans_lengthss{{-1}};
179 const index_t span_major = rh_major - 1;
182 distributed_spans_lengthss(span_major)(span_minor) = h_length;
185 return distributed_spans_lengthss;
195 ndims_distributed_spans_minor(span_major)++;
198 return ndims_distributed_spans_minor;
203 if constexpr(
NDimR > 0)
214 if constexpr(rh_major == 0)
216 does_p_own_r(idim_p)(rh_minor) =
true;
231 if constexpr(
NDimR > 0)
238 index_t p_over_rh_derivative = 1;
240 static_for<ndim_low - 1, -1, -1>{}([&](
auto idim_low) {
246 if constexpr(rh_major == 0)
248 ps_over_rs_derivative(idim_p)(rh_minor) = p_over_rh_derivative;
251 p_over_rh_derivative *= rh_length;
255 return ps_over_rs_derivative;
272 return uniformed_h_dim_lengths;
283 constexpr auto uniformed_ps_to_rhss_major_ =
285 constexpr auto uniformed_ps_to_rhss_minor_ =
288 constexpr auto p_len_ = [&]() {
292 static_for<0, uniformed_ps_to_rhss_major_.size(), 1>{}([&](
auto idim_u_) {
293 if constexpr(major_.value == uniformed_ps_to_rhss_major_[idim_u_])
295 constexpr auto minor_ = uniformed_ps_to_rhss_minor_[idim_u_];
296 constexpr auto h_length_ =
hs_lengthss_[idim_x_][minor_];
297 len_[idim_x_] *= h_length_;
304 return p_len_over_h_seq_;
314 constexpr auto uniformed_rh_dim_lengths =
317 return uniformed_rh_dim_lengths;
327 return h_dim_prefix_sum;
336 return rh_dim_prefix_sum;
342 constexpr auto uniformed_ps_to_rhss_major_ =
344 constexpr auto uniformed_ps_to_rhss_minor_ =
348 [](
auto major,
auto minor)
constexpr {
350 return rh_dim_prefix_sum.at(major) + minor;
352 uniformed_ps_to_rhss_major_,
353 uniformed_ps_to_rhss_minor_);
355 return all_ps_2_rhss;
361 [](
auto major,
auto minor)
constexpr {
363 return rh_dim_prefix_sum.at(major) + minor;
368 return all_ys_2_rhss;
375 [](
auto major,
auto minor)
constexpr {
377 return rh_dim_prefix_sum.at(major) + minor -
NDimR;
382 return all_ys_2_rhss;
390 constexpr auto size_ =
HsLengthss{}[i].size();
391 constexpr auto current_y_to_h_mask_ = [&]() {
394 for(
auto j = 0; j <
NDimY; j++)
411 template <
typename IdxSeq,
typename PrefixSumSeq>
416 constexpr auto sorted_dims =
typename sorted_idx::type{};
417 constexpr auto sorted_maps =
typename sorted_idx::sorted2unsorted_map{};
419 constexpr auto sorted_histogram =
423 return make_tuple(sorted_dims, sorted_maps, sorted_prefix_sum);
434template <
typename encoding,
typename shuffle>
436template <
typename encoding,
index_t... shuffle>
439 template <
typename Ys2RHs>
444 typename encoding::HsLengthss,
445 typename encoding::Ps2RHssMajor,
446 typename encoding::Ps2RHssMinor,
447 shuffled<typename encoding::Ys2RHsMajor>,
448 shuffled<typename encoding::Ys2RHsMinor>>;
450template <
typename encoding,
typename shuffle>
456template <
typename OuterDstr,
typename InnerDstr>
459 static_assert(OuterDstr::NDimX == InnerDstr::NDimX,
"wrong!");
461 constexpr index_t NDimHMajor = OuterDstr::NDimX;
469 typename InnerDstr::HsLengthss{}[i]);
474 constexpr auto rhs_major_2_ndim_outer_rhs_minor = [&]() {
478 rhs_major_2_ndim_outer_rhs_minor_(0) = OuterDstr::RsLengths::size();
482 rhs_major_2_ndim_outer_rhs_minor_(i + 1) =
typename OuterDstr::HsLengthss{}[i].
size();
485 return rhs_major_2_ndim_outer_rhs_minor_;
491 constexpr auto inner_p_2_rhss_major =
typename InnerDstr::Ps2RHssMajor{}[p];
492 constexpr auto inner_p_2_rhss_minor =
typename InnerDstr::Ps2RHssMinor{}[p];
494 constexpr index_t ndim_tmp = inner_p_2_rhss_minor.size();
496 constexpr auto updated_inner_p_2_rhss_minor = [&]() {
499 for(
index_t i = 0; i < ndim_tmp; i++)
501 index_t rh_major = inner_p_2_rhss_major[i];
503 index_t ndim_outer_h_minor = rhs_major_2_ndim_outer_rhs_minor[rh_major];
505 updated_inner_p_2_rhss_minor_(i) = inner_p_2_rhss_minor[i] + ndim_outer_h_minor;
508 return updated_inner_p_2_rhss_minor_;
511 return TO_SEQUENCE(updated_inner_p_2_rhss_minor, ndim_tmp);
516 constexpr auto updated_inner_ys_2_rhs_minor = [&]() {
517 constexpr auto inner_ys_2_rhs_major =
typename InnerDstr::Ys2RHsMajor{};
518 constexpr auto inner_ys_2_rhs_minor =
typename InnerDstr::Ys2RHsMinor{};
520 constexpr index_t ndim_tmp = inner_ys_2_rhs_minor.size();
522 constexpr auto updated_inner_ys_2_rhs_minor_ = [&]() {
525 for(
index_t i = 0; i < ndim_tmp; i++)
527 index_t rh_major = inner_ys_2_rhs_major[i];
529 index_t ndim_outer_h_minor = rhs_major_2_ndim_outer_rhs_minor[rh_major];
531 updated_inner_ys_2_rhs_minor__(i) = inner_ys_2_rhs_minor[i] + ndim_outer_h_minor;
534 return updated_inner_ys_2_rhs_minor__;
537 return TO_SEQUENCE(updated_inner_ys_2_rhs_minor_, ndim_tmp);
541 constexpr auto ps_2_rhss_major =
542 container_concat(
typename OuterDstr::Ps2RHssMajor{},
typename InnerDstr::Ps2RHssMajor{});
544 constexpr auto ps_2_rhss_minor =
545 container_concat(
typename OuterDstr::Ps2RHssMinor{}, updated_inner_ps_2_rhss_minor);
548 constexpr auto ys_2_rhs_major =
549 merge_sequences(
typename OuterDstr::Ys2RHsMajor{},
typename InnerDstr::Ys2RHsMajor{});
551 constexpr auto ys_2_rhs_minor =
552 merge_sequences(
typename OuterDstr::Ys2RHsMinor{}, updated_inner_ys_2_rhs_minor);
562template <
typename InDstr,
index_t... InReduceDimXs>
569 constexpr index_t max_ndim_r_out = 20;
570 constexpr index_t max_ndim_y_out = 20;
573 constexpr index_t ndim_p = InDstr::NDimP;
574 constexpr index_t ndim_x_in = InDstr::NDimX;
575 constexpr index_t ndim_y_in = InDstr::NDimY;
576 constexpr index_t ndim_rh_major_in = InDstr::NDimX + 1;
577 constexpr index_t ndim_x_out = ndim_x_in -
sizeof...(InReduceDimXs);
578 constexpr index_t max_ndim_rh_minor_in = InDstr::detail::max_ndim_rh_minor_;
582 [&](
auto i) {
return InDstr::ps_to_rhss_major_[i].size(); },
number<ndim_p>{});
587 for(
index_t i = 0; i < reduce_dim_xs_in.
size(); i++)
589 index_t rh_major = reduce_dim_xs_in[i] + 1;
591 is_rh_major_in_for_reduce(rh_major) =
true;
597 for(
index_t i = 0; i < ndim_y_in; i++)
599 index_t rh_major = InDstr::ys_to_rhs_major_[i];
601 if(is_rh_major_in_for_reduce[rh_major])
603 is_y_in_for_reduce(i) =
true;
611 index_t rh_major = InDstr::ys_to_rhs_major_[i];
612 index_t rh_minor = InDstr::ys_to_rhs_minor_[i];
614 if(is_y_in_for_reduce[i])
616 is_rh_minor_in_for_y_reduce(rh_major)(rh_minor) =
true;
622 index_t cnt_ndim_rh_major_out = 0;
624 for(
index_t i = 0; i < ndim_rh_major_in; i++)
626 if(is_rh_major_in_for_reduce[i])
628 in2out_rh_major(i) = 0;
632 in2out_rh_major(i) = cnt_ndim_rh_major_out;
634 cnt_ndim_rh_major_out++;
643 for(
index_t i = 0; i < InDstr::rs_lengths_.size(); i++)
646 rs_lengths_out(i) = InDstr::rs_lengths_[i];
649 in2out_rh_minor(0)(i) = i;
653 index_t cnt_ndim_r_out = InDstr::rs_lengths_.size();
656 constexpr auto h_major_in = rh_major_in - I1;
658 constexpr index_t ndim_rh_minor_in = InDstr::hs_lengthss_[h_major_in].size();
660 if(is_rh_major_in_for_reduce[rh_major_in])
662 for(
index_t rh_minor_in = 0; rh_minor_in < ndim_rh_minor_in; rh_minor_in++)
664 if(not is_rh_minor_in_for_y_reduce[rh_major_in][rh_minor_in])
667 rs_lengths_out(cnt_ndim_r_out) = InDstr::hs_lengthss_[h_major_in][rh_minor_in];
670 in2out_rh_minor(rh_major_in)(rh_minor_in) = cnt_ndim_r_out;
678 for(
index_t rh_minor_in = 0; rh_minor_in < ndim_rh_minor_in; rh_minor_in++)
681 in2out_rh_minor(rh_major_in)(rh_minor_in) = rh_minor_in;
687 const index_t ndim_r_out = cnt_ndim_r_out;
696 if(not is_rh_major_in_for_reduce[i + I1])
699 ndims_hs_minor_out(cnt_ndim_x_out) = InDstr::hs_lengthss_[i].
size();
702 static_for<0, InDstr::hs_lengthss_[i].size(), 1>{}(
703 [&](
auto j) { hs_lengthss_out(cnt_ndim_x_out)(j) = InDstr::hs_lengthss_[i][j]; });
714 static_for<0, InDstr::ps_to_rhss_major_[idim_p].size(), 1>{}([&](
auto idim_low) {
715 index_t rh_major_in = InDstr::ps_to_rhss_major_[idim_p][idim_low];
716 index_t rh_minor_in = InDstr::ps_to_rhss_minor_[idim_p][idim_low];
718 ps_to_rhss_major_out(idim_p)(idim_low) = in2out_rh_major[rh_major_in];
719 ps_to_rhss_minor_out(idim_p)(idim_low) = in2out_rh_minor[rh_major_in][rh_minor_in];
730 if(not is_y_in_for_reduce[i])
732 index_t rh_major_in = InDstr::ys_to_rhs_major_[i];
733 index_t rh_minor_in = InDstr::ys_to_rhs_minor_[i];
735 ys_to_rhs_major_out(cnt_ndim_y_out) = in2out_rh_major[rh_major_in];
736 ys_to_rhs_minor_out(cnt_ndim_y_out) = in2out_rh_minor[rh_major_in][rh_minor_in];
743 const index_t ndim_y_out = cnt_ndim_y_out;
754 ps_to_rhss_major_out,
755 ps_to_rhss_minor_out,
757 ys_to_rhs_minor_out);
760template <
typename InDstr,
index_t... InReduceDimXs>
770 constexpr auto ndims_hs_minor =
impl.template at<4>();
771 constexpr auto ndims_ps_low =
impl.template at<5>();
772 constexpr auto rs_lengths_impl =
impl.template at<6>();
773 constexpr auto hs_lengthss_impl =
impl.template at<7>();
774 constexpr auto ps_to_rhss_major_impl =
impl.template at<8>();
775 constexpr auto ps_to_rhss_minor_impl =
impl.template at<9>();
776 constexpr auto ys_to_rhs_major_impl =
impl.template at<10>();
777 constexpr auto ys_to_rhs_minor_impl =
impl.template at<11>();
779 constexpr auto rs_lengths =
TO_SEQUENCE(rs_lengths_impl, ndim_r);
781 constexpr auto ps_to_rhss_major =
783 constexpr auto ps_to_rhss_minor =
785 constexpr auto ys_to_rhs_major =
TO_SEQUENCE(ys_to_rhs_major_impl, ndim_y);
786 constexpr auto ys_to_rhs_minor =
TO_SEQUENCE(ys_to_rhs_minor_impl, ndim_y);
799template <
typename RsLengths_,
800 typename HsLengthss_,
801 typename Ps2RHssMajor_,
802 typename Ps2RHssMinor_,
803 typename Ys2RHsMajor_,
804 typename Ys2RHsMinor_>
813 printf(
"tile_distribution_encoding::detail{");
814 printf(
"ndim_rh_major_: ");
815 print(detail_obj.ndim_rh_major_);
817 printf(
"ndim_span_major_: ");
818 print(detail_obj.ndim_span_major_);
820 printf(
"ndims_rhs_minor_: ");
821 print(detail_obj.ndims_rhs_minor_);
823 printf(
"ndim_rh_major_: ");
824 print(detail_obj.ndim_rh_major_);
826 printf(
"max_ndim_rh_minor_: ");
827 print(detail_obj.max_ndim_rh_minor_);
829 printf(
"rhs_lengthss_: ");
830 print(detail_obj.rhs_lengthss_);
832 printf(
"ys_lengths_: ");
833 print(detail_obj.ys_lengths_);
835 printf(
"rhs_major_minor_to_ys_: ");
836 print(detail_obj.rhs_major_minor_to_ys_);
838 printf(
"ndims_span_minor_: ");
839 print(detail_obj.ndims_span_minor_);
841 printf(
"max_ndim_span_minor_: ");
842 print(detail_obj.max_ndim_span_minor_);
844 printf(
"ys_to_span_major_: ");
845 print(detail_obj.ys_to_span_major_);
847 printf(
"ys_to_span_minor_: ");
848 print(detail_obj.ys_to_span_minor_);
850 printf(
"distributed_spans_lengthss_: ");
851 print(detail_obj.distributed_spans_lengthss_);
853 printf(
"ndims_distributed_spans_minor_: ");
854 print(detail_obj.ndims_distributed_spans_minor_);
856 printf(
"ps_over_rs_derivative_: ");
857 print(detail_obj.ps_over_rs_derivative_);
862template <
typename RsLengths_,
863 typename HsLengthss_,
864 typename Ps2RHssMajor_,
865 typename Ps2RHssMinor_,
866 typename Ys2RHsMajor_,
867 typename Ys2RHsMinor_>
873 Ys2RHsMinor_>& encoding)
875 printf(
"tile_distribution_encoding{");
877 printf(
"NDimX: %d, NDimP: %d, NDimY: %d, ", encoding.NDimX, encoding.NDimP, encoding.NDimY);
878 printf(
"rs_lengths_: ");
879 print(encoding.rs_lengths_);
881 printf(
"hs_lengthss_: ");
882 print(encoding.hs_lengthss_);
884 printf(
"ps_to_rhss_major_: ");
885 print(encoding.ps_to_rhss_major_);
887 printf(
"ps_to_rhss_minor_: ");
888 print(encoding.ps_to_rhss_minor_);
890 printf(
"ys_to_rhs_major_: ");
891 print(encoding.ys_to_rhs_major_);
893 printf(
"ys_to_rhs_minor_: ");
894 print(encoding.ys_to_rhs_minor_);
tile_distribution_encoding< typename encoding::RsLengths, typename encoding::HsLengthss, typename encoding::Ps2RHssMajor, typename encoding::Ps2RHssMinor, shuffled< typename encoding::Ys2RHsMajor >, shuffled< typename encoding::Ys2RHsMinor > > type
Definition tile_distribution_encoding.hpp:443
Definition tile_distribution_encoding.hpp:435
#define CK_TILE_HOST_DEVICE
Definition config.hpp:42
CK_TILE_HOST_DEVICE constexpr auto make_reduce_tile_distribution_encoding_impl(InDstr, sequence< InReduceDimXs... > reduce_dim_xs_in)
Definition tile_distribution_encoding.hpp:564
CK_TILE_HOST_DEVICE constexpr auto make_reduce_tile_distribution_encoding(InDstr, sequence< InReduceDimXs... > reduce_dim_xs_in)
Definition tile_distribution_encoding.hpp:762
CK_TILE_HOST_DEVICE constexpr auto make_embed_tile_distribution_encoding(OuterDstr, InnerDstr)
Definition tile_distribution_encoding.hpp:457
Definition tile/core/arch/amd_buffer_addressing.hpp:110
Definition tile/core/algorithm/cluster_descriptor.hpp:13
remove_cv_t< std::remove_reference_t< T > > remove_cvref_t
Definition type_traits.hpp:21
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 generate_sequence_v2(F &&f, number< N >)
Definition tile/core/container/sequence.hpp:1045
CK_TILE_HOST_DEVICE constexpr auto transform_sequences(F f, sequence< Xs... >)
Definition tile/core/container/sequence.hpp:832
typename tile_distribution_encoding_shuffle< encoding, shuffle >::type tile_distribution_encoding_shuffle_t
Definition tile_distribution_encoding.hpp:451
CK_TILE_HOST_DEVICE constexpr auto container_concat(const X &x, const Ys &... ys)
Definition tile/core/container/container_helper.hpp:363
CK_TILE_HOST_DEVICE constexpr auto generate_array(F &&f, number< N >)
Definition tile/core/container/sequence.hpp:1115
CK_TILE_HOST_DEVICE constexpr auto merge_sequences(Seqs...)
Definition tile/core/container/sequence.hpp:826
constant< v > number
Definition tile/core/numeric/integral_constant.hpp:37
CK_TILE_HOST_DEVICE constexpr auto generate_tuple(F &&f, number< N >)
Definition tile/core/container/tuple.hpp:429
CK_TILE_HOST_DEVICE constexpr auto unpack(F &&f, X &&x)
Definition tile/core/utility/functional.hpp:200
constexpr index_t container_find(sequence< Is... > seq, index_t value)
Definition tile/core/container/container_helper.hpp:447
CK_TILE_HOST_DEVICE constexpr auto histogram_sorted_sequence(SeqSortedSamples, sequence< r, rs... >)
Definition tile/core/container/sequence.hpp:1102
typename sequence_merge< Seqs... >::type sequence_merge_t
Definition tile/core/container/sequence.hpp:1023
int32_t index_t
Definition integer.hpp:9
CK_TILE_HOST_DEVICE constexpr auto to_array_of_array(tuple< Seqs... > t_of_s)
Definition tile/core/container/tuple.hpp:630
CK_TILE_HOST_DEVICE constexpr auto make_tuple(Xs &&... xs)
Definition tile/core/container/tuple.hpp:360
constexpr auto prefix_sum_sequence(Seq)
Definition tile/core/container/sequence.hpp:908
A fixed-size array container similar to std::array with additional utilities.
Definition tile/core/container/array.hpp:43
static CK_TILE_HOST_DEVICE constexpr auto size()
Definition tile/core/container/array.hpp:97
Definition tile/core/numeric/math.hpp:329
Definition tile/core/numeric/math.hpp:122
Definition tile/core/container/sequence.hpp:593
Definition tile/core/container/sequence.hpp:49
static CK_TILE_HOST_DEVICE constexpr index_t size()
Definition tile/core/container/sequence.hpp:53
Definition tile/core/utility/functional.hpp:43
Definition tile_distribution_encoding.hpp:58
static constexpr index_t max_ndim_span_minor_
Definition tile_distribution_encoding.hpp:129
static CK_TILE_HOST_DEVICE constexpr auto get_uniformed_idx_p_to_h()
Definition tile_distribution_encoding.hpp:339
static constexpr auto rhs_lengthss_
Definition tile_distribution_encoding.hpp:82
static CK_TILE_HOST_DEVICE constexpr auto get_uniformed_p_dim_lengths_over_h()
Definition tile_distribution_encoding.hpp:276
static constexpr auto distributed_spans_lengthss_
Definition tile_distribution_encoding.hpp:169
static constexpr auto does_p_own_r_
Definition tile_distribution_encoding.hpp:202
static CK_TILE_HOST_DEVICE constexpr auto get_sorted_y_to_h_info()
Definition tile_distribution_encoding.hpp:427
static CK_TILE_HOST_DEVICE constexpr auto get_uniformed_h_dim_lengths()
Definition tile_distribution_encoding.hpp:263
static CK_TILE_HOST_DEVICE constexpr auto get_uniformed_rh_dim_lengths()
Definition tile_distribution_encoding.hpp:312
static constexpr index_t max_ndim_rh_minor_
Definition tile_distribution_encoding.hpp:78
static CK_TILE_HOST_DEVICE constexpr auto get_h_dim_lengths_prefix_sum()
Definition tile_distribution_encoding.hpp:321
static constexpr auto ys_to_span_major_
Definition tile_distribution_encoding.hpp:158
static CK_TILE_HOST_DEVICE constexpr auto get_uniformed_idx_y_to_rh()
Definition tile_distribution_encoding.hpp:358
static constexpr auto rhs_major_minor_to_span_minor_
Definition tile_distribution_encoding.hpp:133
static CK_TILE_HOST_DEVICE constexpr auto get_uniformed_idx_y_to_h()
Definition tile_distribution_encoding.hpp:371
static constexpr index_t ndim_span_major_
Definition tile_distribution_encoding.hpp:61
static constexpr auto ndims_span_minor_
Definition tile_distribution_encoding.hpp:115
static constexpr index_t ndim_rh_major_
Definition tile_distribution_encoding.hpp:60
static constexpr auto ps_over_rs_derivative_
Definition tile_distribution_encoding.hpp:230
static CK_TILE_HOST_DEVICE constexpr auto get_sorted_info(IdxSeq, PrefixSumSeq)
Definition tile_distribution_encoding.hpp:412
static CK_TILE_HOST_DEVICE constexpr auto get_y_to_h_masks()
Definition tile_distribution_encoding.hpp:386
static constexpr auto ys_lengths_
Definition tile_distribution_encoding.hpp:86
static constexpr auto ndims_distributed_spans_minor_
Definition tile_distribution_encoding.hpp:189
static constexpr auto rhs_major_minor_to_ys_
Definition tile_distribution_encoding.hpp:101
static constexpr auto ndims_rhs_minor_
Definition tile_distribution_encoding.hpp:64
static constexpr auto ys_to_span_minor_
Definition tile_distribution_encoding.hpp:162
static CK_TILE_HOST_DEVICE constexpr auto get_rh_dim_lengths_prefix_sum()
Definition tile_distribution_encoding.hpp:330
Definition tile_distribution_encoding.hpp:26
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::NDimR static constexpr index_t NDimR
Definition tile_distribution_encoding.hpp:40
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::ps_to_rhss_minor_ static constexpr auto ps_to_rhss_minor_
Definition tile_distribution_encoding.hpp:46
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::rs_lengths_ static constexpr auto rs_lengths_
Definition tile_distribution_encoding.hpp:43
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::NDimP static constexpr index_t NDimP
Definition tile_distribution_encoding.hpp:38
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::Ps2RHssMinor remove_cvref_t< tuple< sequence< 0, 0, 2, 2, 3 > > > Ps2RHssMinor
Definition tile_distribution_encoding.hpp:30
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::ys_to_rhs_major_ static constexpr auto ys_to_rhs_major_
Definition tile_distribution_encoding.hpp:47
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::ys_to_rhs_minor_ static constexpr auto ys_to_rhs_minor_
Definition tile_distribution_encoding.hpp:48
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::NDimY static constexpr index_t NDimY
Definition tile_distribution_encoding.hpp:39
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::Ys2RHsMinor remove_cvref_t< sequence< 1, 1, 4 > > Ys2RHsMinor
Definition tile_distribution_encoding.hpp:32
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::hs_lengthss_ static constexpr auto hs_lengthss_
Definition tile_distribution_encoding.hpp:44
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::Ys2RHsMajor remove_cvref_t< sequence< 2, 1, 2 > > Ys2RHsMajor
Definition tile_distribution_encoding.hpp:31
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::HsLengthss remove_cvref_t< tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > > > HsLengthss
Definition tile_distribution_encoding.hpp:28
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::Ps2RHssMajor remove_cvref_t< tuple< sequence< 1, 2, 2, 1, 2 > > > Ps2RHssMajor
Definition tile_distribution_encoding.hpp:29
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::RsLengths remove_cvref_t< sequence<> > RsLengths
Definition tile_distribution_encoding.hpp:27
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::ps_to_rhss_major_ static constexpr auto ps_to_rhss_major_
Definition tile_distribution_encoding.hpp:45
ck_tile::tile_distribution_encoding< sequence<>, tuple< sequence< kOuterDistDim0, kOuterDistDim1, 4 >, sequence< kInnerDistDim0, kInnerDistDim1, LaneGroupSize/16, 4, 4 > >, tuple< sequence< 1, 2, 2, 1, 2 > >, tuple< sequence< 0, 0, 2, 2, 3 > >, sequence< 2, 1, 2 >, sequence< 1, 1, 4 > >::NDimX static constexpr index_t NDimX
Definition tile_distribution_encoding.hpp:37
#define TO_TUPLE_OF_SEQUENCE(a_of_b_impl, a_size, bs_sizes)
Definition tile/core/container/container_helper.hpp:486
#define TO_SEQUENCE(a, n)
Definition to_sequence.hpp:10