default_2d_and_dynamic_quant_epilogue.hpp Source File

default_2d_and_dynamic_quant_epilogue.hpp Source File#

Composable Kernel: default_2d_and_dynamic_quant_epilogue.hpp Source File
default_2d_and_dynamic_quant_epilogue.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2018-2025, Advanced Micro Devices, Inc. All rights reserved.
3
4#pragma once
5
8
9namespace ck_tile {
10
11// User can reuse DynamicQuantEpilogueTraits with this epilogue
12template <bool kPadM_,
13 bool kPadN_,
14 bool UseSmoothInputScale_,
15 bool UseRawStore_ = true,
16 bool UseMax3_ = false>
19
20// This epilogue just store out a M*N matrix, row major
21template <typename AccDataType_,
22 typename SmoothScaleDataType_,
23 typename YScaleDataType_,
24 typename ODataType_,
25 typename UnquantYDataType_,
26 typename BlockShape_,
27 typename Traits_>
38
39template <typename Problem_, typename Policy_ = void>
41{
45
46 static constexpr bool kPadM = Problem::Traits::kPadM;
47 static constexpr bool kPadN = Problem::Traits::kPadN;
48 static constexpr bool UseRawStore = Problem::Traits::UseRawStore;
49
54
59
60 template <typename ODramWindowTmpD,
61 typename ODramWindowTmpQ,
62 typename SmoothScaleWindow,
63 typename YScaleWindow,
64 typename OAccTile>
65 CK_TILE_DEVICE auto operator()(ODramWindowTmpD& o_direct_dram_window_tmp,
66 ODramWindowTmpQ& o_quant_dram_window_tmp,
67 const SmoothScaleWindow& sm_scale_window_,
68 YScaleWindow& y_scale_window,
69 const OAccTile& o_acc_tile,
70 void* smem)
71 {
72 Default2D{}(o_direct_dram_window_tmp, o_acc_tile, smem);
73 DynamicQuant{}(o_quant_dram_window_tmp, sm_scale_window_, y_scale_window, o_acc_tile, smem);
74 }
75
76 template <typename ODramWindowTmpD,
77 typename ODramWindowTmpQ,
78 typename YScaleWindow,
79 typename OAccTile>
80 CK_TILE_DEVICE auto operator()(ODramWindowTmpD& o_direct_dram_window_tmp,
81 ODramWindowTmpQ& o_quant_dram_window_tmp,
82 YScaleWindow& y_scale_window,
83 const OAccTile& o_acc_tile,
84 void* smem)
85 {
86 Default2D{}(o_direct_dram_window_tmp, o_acc_tile, smem);
87 DynamicQuant{}(o_quant_dram_window_tmp, y_scale_window, o_acc_tile, smem);
88 }
89};
90
91} // namespace ck_tile
#define CK_TILE_DEVICE
Definition config.hpp:41
#define CK_TILE_HOST_DEVICE
Definition config.hpp:42
Definition tile/core/algorithm/cluster_descriptor.hpp:13
remove_cv_t< std::remove_reference_t< T > > remove_cvref_t
Definition type_traits.hpp:21
DynamicQuantEpilogueTraits< kPadM_, kPadN_, UseSmoothInputScale_, UseRawStore_, UseMax3_ > Default2DAndDynamicQuantEpilogueTraits
Definition default_2d_and_dynamic_quant_epilogue.hpp:17
CK_TILE_HOST_DEVICE constexpr T max(T x)
Definition tile/core/numeric/math.hpp:161
int32_t index_t
Definition integer.hpp:9
Definition default_2d_and_dynamic_quant_epilogue.hpp:41
CK_TILE_DEVICE auto operator()(ODramWindowTmpD &o_direct_dram_window_tmp, ODramWindowTmpQ &o_quant_dram_window_tmp, const SmoothScaleWindow &sm_scale_window_, YScaleWindow &y_scale_window, const OAccTile &o_acc_tile, void *smem)
Definition default_2d_and_dynamic_quant_epilogue.hpp:65
Default2DEpilogue< Default2DProblem > Default2D
Definition default_2d_and_dynamic_quant_epilogue.hpp:52
DynamicQuantEpilogue< Problem > DynamicQuant
Definition default_2d_and_dynamic_quant_epilogue.hpp:53
static constexpr bool UseRawStore
Definition default_2d_and_dynamic_quant_epilogue.hpp:48
remove_cvref_t< typename Problem::UnquantYDataType > UnquantYDataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:44
remove_cvref_t< Problem_ > Problem
Definition default_2d_and_dynamic_quant_epilogue.hpp:42
static constexpr bool kPadM
Definition default_2d_and_dynamic_quant_epilogue.hpp:46
static CK_TILE_HOST_DEVICE constexpr index_t GetSmemSize()
Definition default_2d_and_dynamic_quant_epilogue.hpp:55
Default2DEpilogueProblem< AccDataType, UnquantYDataType, kPadM, kPadN, UseRawStore > Default2DProblem
Definition default_2d_and_dynamic_quant_epilogue.hpp:50
CK_TILE_DEVICE auto operator()(ODramWindowTmpD &o_direct_dram_window_tmp, ODramWindowTmpQ &o_quant_dram_window_tmp, YScaleWindow &y_scale_window, const OAccTile &o_acc_tile, void *smem)
Definition default_2d_and_dynamic_quant_epilogue.hpp:80
remove_cvref_t< typename Problem::AccDataType > AccDataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:43
static constexpr bool kPadN
Definition default_2d_and_dynamic_quant_epilogue.hpp:47
Definition default_2d_and_dynamic_quant_epilogue.hpp:29
remove_cvref_t< AccDataType_ > AccDataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:30
remove_cvref_t< ODataType_ > ODataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:33
remove_cvref_t< Traits_ > Traits
Definition default_2d_and_dynamic_quant_epilogue.hpp:36
remove_cvref_t< SmoothScaleDataType_ > SmoothScaleDataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:31
remove_cvref_t< YScaleDataType_ > YScaleDataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:32
remove_cvref_t< BlockShape_ > BlockShape
Definition default_2d_and_dynamic_quant_epilogue.hpp:35
remove_cvref_t< UnquantYDataType_ > UnquantYDataType
Definition default_2d_and_dynamic_quant_epilogue.hpp:34
Definition default_2d_epilogue.hpp:77
static CK_TILE_HOST_DEVICE constexpr index_t GetSmemSize()
Definition default_2d_epilogue.hpp:86
Definition default_2d_epilogue.hpp:21
Definition dynamic_quant_epilogue.hpp:45
static CK_TILE_HOST_DEVICE constexpr index_t GetSmemSize()
Definition dynamic_quant_epilogue.hpp:102
Definition dynamic_quant_epilogue.hpp:17