cluster_descriptor.hpp Source File

cluster_descriptor.hpp Source File#

Composable Kernel: cluster_descriptor.hpp Source File
tensor_description/cluster_descriptor.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.
3
4#pragma once
5
8
9namespace ck {
10
11template <typename Lengths,
12 typename ArrangeOrder = typename arithmetic_sequence_gen<0, Lengths::Size(), 1>::type>
13__host__ __device__ constexpr auto make_cluster_descriptor(
14 const Lengths& lengths,
15 ArrangeOrder order = typename arithmetic_sequence_gen<0, Lengths::Size(), 1>::type{})
16{
17 constexpr index_t ndim_low = Lengths::Size();
18
19 const auto reordered_lengths = container_reorder_given_new2old(lengths, order);
20
21 const auto low_lengths = generate_tuple(
22 [&](auto idim_low) { return reordered_lengths[idim_low]; }, Number<ndim_low>{});
23
24 const auto transform = make_merge_transform(low_lengths);
25
26 constexpr auto low_dim_old_top_ids = ArrangeOrder{};
27
28 constexpr auto up_dim_new_top_ids = Sequence<0>{};
29
31 make_tuple(transform), make_tuple(low_dim_old_top_ids), make_tuple(up_dim_new_top_ids));
32}
33
34} // namespace ck
auto transform(InputRange &&range, OutputIterator iter, UnaryOperation unary_op) -> decltype(std::transform(std::begin(range), std::end(range), iter, unary_op))
Definition algorithm.hpp:36
Definition ck.hpp:268
int32_t index_t
Definition ck.hpp:299
__host__ __device__ constexpr auto make_single_stage_tensor_adaptor(const Transforms &transforms, LowerDimensionOldTopIdss, UpperDimensionNewTopIdss)
Definition tensor_description/tensor_adaptor.hpp:425
__host__ __device__ constexpr auto make_cluster_descriptor(const Lengths &lengths, ArrangeOrder order=typename arithmetic_sequence_gen< 0, Lengths::Size(), 1 >::type{})
Definition tensor_description/cluster_descriptor.hpp:13
integral_constant< index_t, N > Number
Definition number.hpp:12
__host__ __device__ constexpr auto make_merge_transform(const LowLengths &low_lengths)
Definition multi_index_transform_helper.hpp:55
__host__ __device__ constexpr auto generate_tuple(F &&f, Number< N >)
Definition tuple_helper.hpp:21
__host__ __device__ constexpr auto make_tuple(Xs &&... xs)
Definition utility/tuple.hpp:211
__host__ __device__ constexpr auto container_reorder_given_new2old(const Array< TData, NSize > &old_array, Sequence< IRs... >)
Definition utility/container_helper.hpp:43
Definition utility/sequence.hpp:43
Definition utility/sequence.hpp:256