tile_window_utils.hpp Source File

tile_window_utils.hpp Source File#

Composable Kernel: tile_window_utils.hpp Source File
tile_window_utils.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2024, Advanced Micro Devices, Inc. All rights reserved.
3
17
18#pragma once
19namespace ck_tile {
20
21template <typename TileWindow_>
22CK_TILE_DEVICE void move_tile_window(TileWindow_& window,
23 const typename TileWindow_::BottomTensorIndex& step)
24{
25 window.move(step);
26}
27
28// input a lds store tile, extract some information from it
29// used to set m0 value for gfx9 serious
30template <typename LdsTileWindow_>
31CK_TILE_DEVICE auto get_async_store_smem_info(LdsTileWindow_&& lds_tile)
32{
33 using LdsTileWindow = remove_cvref_t<LdsTileWindow_>;
34 using LdsDataType = typename LdsTileWindow::DataType;
35
36 // issues * warps * lanes
37 static_assert(LdsTileWindow::get_num_of_dimension() == 3); // TODO: hard coded
38
39 const index_t size_per_buf =
40 lds_tile.get_bottom_tensor_view().get_tensor_descriptor().calculate_offset(
42 sizeof(LdsDataType);
43
44 const index_t size_per_wave =
45 lds_tile.get_bottom_tensor_view().get_tensor_descriptor().calculate_offset(
47 sizeof(LdsDataType) -
48 size_per_buf;
49
50 const index_t size_per_issue =
51 lds_tile.get_bottom_tensor_view().get_tensor_descriptor().calculate_offset(
53 sizeof(LdsDataType) -
54 size_per_buf;
55
56 const index_t m0_init_value = size_per_buf + size_per_wave * get_warp_id();
57
58 return make_tuple(m0_init_value, size_per_issue);
59}
60
61} // namespace ck_tile
#define CK_TILE_DEVICE
Definition config.hpp:41
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_DEVICE index_t get_warp_id(bool_constant< ReturnSgpr >={})
Definition arch.hpp:104
constant< v > number
Definition tile/core/numeric/integral_constant.hpp:37
CK_TILE_DEVICE auto get_async_store_smem_info(LdsTileWindow_ &&lds_tile)
Definition tile_window_utils.hpp:31
CK_TILE_DEVICE void move_tile_window(null_tile_window< WindowLengths > &, const typename null_tile_window< WindowLengths >::BottomTensorIndex &)
Definition null_tile_window.hpp:95
int32_t index_t
Definition integer.hpp:9
CK_TILE_HOST_DEVICE constexpr auto make_tuple(Xs &&... xs)
Definition tile/core/container/tuple.hpp:360