gridwise_gemm_pipeline_selector.hpp Source File

gridwise_gemm_pipeline_selector.hpp Source File#

Composable Kernel: gridwise_gemm_pipeline_selector.hpp Source File
gridwise_gemm_pipeline_selector.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
6#if !defined(__HIPCC_RTC__) || !defined(CK_CODE_GEN_RTC)
7#include <iostream>
8#include <ostream>
9#endif
10
14
15namespace ck {
16
17enum struct PipelineVersion
18{
21 // v3 is only used in the Stream-K implementation.
24};
25
26template <PipelineVersion PipelineVer,
27 index_t NumPrefetch = 1,
29 bool AEnableLds = true,
30 bool BEnableLds = true>
32{
33 if constexpr(PipelineVer == PipelineVersion::v1)
34 {
35 if constexpr(LoopSched == LoopScheduler::Default)
36 {
38 }
39 else if constexpr(LoopSched == LoopScheduler::Interwave)
40 {
42 }
43 }
44 else if constexpr(PipelineVer == PipelineVersion::v2)
45 {
47 }
48 else if constexpr(PipelineVer == PipelineVersion::v4)
49 {
51 }
52 else if constexpr(PipelineVer == PipelineVersion::weight_only)
53 {
55 }
56 else
57 {
58#if !defined(__HIPCC_RTC__) || !defined(CK_CODE_GEN_RTC)
59 std::cerr << "GridwiseGemmPipeline configuration is not available" << std::endl;
60#endif
61 }
62}
63
64} // namespace ck
65
66#if !defined(__HIPCC_RTC__) || !defined(CK_CODE_GEN_RTC)
67inline std::ostream& operator<<(std::ostream& os, const ck::PipelineVersion& p)
68{
69 switch(p)
70 {
71 case ck::PipelineVersion::v1: os << "PipelineVersion::v1"; break;
72 case ck::PipelineVersion::v2: os << "PipelineVersion::v2"; break;
73 case ck::PipelineVersion::v4: os << "PipelineVersion::v4"; break;
74 case ck::PipelineVersion::weight_only: os << "PipelineVersion::weight_only"; break;
75 default: os << "";
76 }
77 return os;
78}
79#endif
std::ostream & operator<<(std::ostream &os, const ck::PipelineVersion &p)
Definition gridwise_gemm_pipeline_selector.hpp:67
Definition ck.hpp:268
constexpr auto GridwiseGemmPipeline_Selector()
Definition gridwise_gemm_pipeline_selector.hpp:31
int32_t index_t
Definition ck.hpp:299
LoopScheduler
Definition loop_scheduler.hpp:15
@ Default
Definition loop_scheduler.hpp:16
@ Interwave
Definition loop_scheduler.hpp:17
PipelineVersion
Definition gridwise_gemm_pipeline_selector.hpp:18
@ v2
Definition gridwise_gemm_pipeline_selector.hpp:20
@ v4
Definition gridwise_gemm_pipeline_selector.hpp:22
@ v1
Definition gridwise_gemm_pipeline_selector.hpp:19
@ weight_only
Definition gridwise_gemm_pipeline_selector.hpp:23
Definition gridwise_gemm_pipeline_v1.hpp:555
Definition gridwise_gemm_pipeline_v1.hpp:13
Definition gridwise_gemm_pipeline_v2.hpp:11
Definition gridwise_gemm_pipeline_v4_direct_load.hpp:27
Definition gridwise_gemm_pipeline_v1.hpp:658