/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-7.0.0/include/ck_tile/core/arch/amd_transpose_load_encoding.hpp Source File

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-7.0.0/include/ck_tile/core/arch/amd_transpose_load_encoding.hpp Source File#

Composable Kernel: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-7.0.0/include/ck_tile/core/arch/amd_transpose_load_encoding.hpp Source File
amd_transpose_load_encoding.hpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: MIT
2 // Copyright (c) 2025, Advanced Micro Devices, Inc. All rights reserved.
3 
4 #pragma once
5 
9 
10 namespace ck_tile {
11 
12 // this generate wave level tile distribution
13 template <typename T, typename = void>
15 
16 template <typename T>
17 struct LaneGroupTransposeTraits<T, std::enable_if_t<sizeof(T) == 2>>
18 {
19  // before transpose, 4x16
20  static constexpr index_t ksecondDim = 4;
21  static constexpr index_t kleadDim = 16;
22  // after transpose, 16x4
23  static constexpr index_t ksecondDimT = 16;
24  static constexpr index_t kleadDimT = 4;
25  template <index_t kOuterDistDim0,
26  index_t kOuterDistDim1,
27  index_t kInnerDistDim0,
28  index_t kInnerDistDim1>
37 };
38 
39 template <typename T>
40 struct LaneGroupTransposeTraits<T, std::enable_if_t<sizeof(T) == 1>>
41 {
42  static constexpr index_t ksecondDim = 8;
43  static constexpr index_t kleadDim = 16;
44 
45  static constexpr index_t ksecondDimT = 16;
46  static constexpr index_t kleadDimT = 8;
47 
48  template <index_t kOuterDistDim0,
49  index_t kOuterDistDim1,
50  index_t kInnerDistDim0,
51  index_t kInnerDistDim1>
60 };
61 
62 /*
63  * @brief This function is used to generate the transposed distribution encoding
64  * for the given data type and distribution dimensions.
65  *
66  * @tparam T The data type of the elements in the tensor.
67  * @tparam kOuterDistDim0 The outer distribution dimension 0, which is outer dimension for stride.
68  * @tparam kOuterDistDim1 The outer distribution dimension 1, which is inner dimension for stride.
69  * @tparam kInnerDistDim0 The inner distribution dimension 0, which is outer dimension for
70  * consecutive.
71  * @tparam kInnerDistDim1 The inner distribution dimension 1, which is inner dimension for
72  * consecutive.
73  */
74 template <typename T,
75  index_t kOuterDistDim0,
76  index_t kOuterDistDim1,
77  index_t kInnerDistDim0,
78  index_t kInnerDistDim1>
80 {
81  using xdllevel_dstr_encoding = typename LaneGroupTransposeTraits<T>::
82  template TileDistribution<kOuterDistDim0, kOuterDistDim1, kInnerDistDim0, kInnerDistDim1>;
83  return xdllevel_dstr_encoding{};
84 }
85 
86 } // namespace ck_tile
#define CK_TILE_DEVICE
Definition: config.hpp:40
Definition: cluster_descriptor.hpp:13
int32_t index_t
Definition: integer.hpp:9
constexpr CK_TILE_DEVICE auto make_transposed_distr_encode()
Definition: amd_transpose_load_encoding.hpp:79
typename std::enable_if< B, T >::type enable_if_t
Definition: enable_if.hpp:27
Definition: amd_transpose_load_encoding.hpp:14
Definition: sequence.hpp:52
Definition: tile_distribution_encoding.hpp:26
Definition: tuple.hpp:192