blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_selector.hpp Source File

blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_selector.hpp Source File#

Composable Kernel: blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_selector.hpp Source File
blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_selector.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
8namespace ck {
9
10template <BlockGemmPipelineVersion BlkGemmPipelineVer,
11 BlockGemmPipelineScheduler BlkGemmPipeSche,
12 index_t BlockSize,
13 typename ADataType,
14 typename BDataType,
15 typename ComputeDataType,
16 typename AccDataType,
17 typename ATileDesc,
18 typename BTileDesc,
19 typename AMmaTileDesc,
20 typename BMmaTileDesc,
21 index_t ABlockTransferSrcScalarPerVector,
22 index_t BBlockTransferSrcScalarPerVector,
23 index_t MPerBlock,
24 index_t NPerBlock,
25 index_t KPerBlock,
26 index_t MScaleBlock,
27 index_t NScaleBlock,
28 index_t KScaleBlock,
29 index_t MPerXDL,
30 index_t NPerXDL,
31 index_t MRepeat,
32 index_t NRepeat,
33 index_t KPack>
35{
36 if constexpr(BlkGemmPipelineVer == BlockGemmPipelineVersion::v1)
37 {
39 BlkGemmPipeSche,
40 BlockSize,
41 ADataType,
42 BDataType,
43 ComputeDataType,
44 AccDataType,
45 ATileDesc,
46 BTileDesc,
47 AMmaTileDesc,
48 BMmaTileDesc,
49 ABlockTransferSrcScalarPerVector,
50 BBlockTransferSrcScalarPerVector,
51 MPerBlock,
52 NPerBlock,
53 KPerBlock,
54 MScaleBlock,
55 NScaleBlock,
56 KScaleBlock,
57 MPerXDL,
58 NPerXDL,
59 MRepeat,
60 NRepeat,
61 KPack>{};
62 }
63#if 0
64 else if constexpr(BlkGemmPipelineVer == BlockGemmPipelineVersion::v2)
65 {
66 return BlockwiseGemmXdlops_pipeline_blockscale_bpreshuffle_v2<
67 BlkGemmPipeSche,
68 BlockSize,
69 ADataType,
70 BDataType,
71 ComputeDataType,
72 AccDataType,
73 ATileDesc,
74 BTileDesc,
75 AMmaTileDesc,
76 BMmaTileDesc,
77 ABlockTransferSrcScalarPerVector,
78 BBlockTransferSrcScalarPerVector,
79 MPerBlock,
80 NPerBlock,
81 KPerBlock,
82 MPerXDL,
83 NPerXDL,
84 MRepeat,
85 NRepeat,
86 KPack>{};
87 }
88#endif
89 else if constexpr(BlkGemmPipelineVer == BlockGemmPipelineVersion::v3)
90 {
91 static_assert(MRepeat >= 4, "MRepeat should at least be 4 in BlockGemmPipelineVersion::v3");
93 BlkGemmPipeSche,
94 BlockSize,
95 ADataType,
96 BDataType,
97 ComputeDataType,
98 AccDataType,
99 ATileDesc,
100 BTileDesc,
101 AMmaTileDesc,
102 BMmaTileDesc,
103 ABlockTransferSrcScalarPerVector,
104 BBlockTransferSrcScalarPerVector,
105 MPerBlock,
106 NPerBlock,
107 KPerBlock,
108 MScaleBlock,
109 NScaleBlock,
110 KScaleBlock,
111 MPerXDL,
112 NPerXDL,
113 MRepeat,
114 NRepeat,
115 KPack>{};
116 }
117 else
118 {
119 std::cerr << "BlockGemmPipeline configuration is not available" << std::endl;
120 }
121}
122
123} // namespace ck
Definition ck.hpp:268
int32_t index_t
Definition ck.hpp:299
BlockGemmPipelineVersion
Definition blkgemmpipe_scheduler.hpp:12
@ v2
Definition blkgemmpipe_scheduler.hpp:15
@ v3
Definition blkgemmpipe_scheduler.hpp:16
@ v1
Definition blkgemmpipe_scheduler.hpp:14
BlockGemmPipelineScheduler
Definition blkgemmpipe_scheduler.hpp:25
constexpr auto BlockGemmBlockScaleBPreshufflePipeline_Selector()
Definition blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_selector.hpp:34
Definition blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_v1.hpp:40
Definition blockwise_gemm_pipeline_xdlops_blockscale_b_preshuffle_v3.hpp:40