/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-6.4.3/include/ck/tensor_operation/gpu/grid/gridwise_gemm_pipeline_selector.hpp Source File

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-6.4.3/include/ck/tensor_operation/gpu/grid/gridwise_gemm_pipeline_selector.hpp Source File#

Composable Kernel: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-6.4.3/include/ck/tensor_operation/gpu/grid/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 #ifndef CK_CODE_GEN_RTC
6 #include <iostream>
7 #include <ostream>
8 #endif
9 
13 
14 namespace ck {
15 
16 enum struct PipelineVersion
17 {
18  v1,
19  v2,
20  // v3 is only used in the Stream-K implementation.
21  v4,
23 };
24 
25 template <PipelineVersion PipelineVer,
26  index_t NumPrefetch = 1,
28  bool AEnableLds = true,
29  bool BEnableLds = true>
31 {
32  if constexpr(PipelineVer == PipelineVersion::v1)
33  {
34  if constexpr(LoopSched == LoopScheduler::Default)
35  {
37  }
38  else if constexpr(LoopSched == LoopScheduler::Interwave)
39  {
41  }
42  }
43  else if constexpr(PipelineVer == PipelineVersion::v2)
44  {
45  return GridwiseGemmPipeline_v2{};
46  }
47  else if constexpr(PipelineVer == PipelineVersion::v4)
48  {
50  }
51  else if constexpr(PipelineVer == PipelineVersion::weight_only)
52  {
54  }
55  else
56  {
57 #ifndef CK_CODE_GEN_RTC
58  std::cerr << "GridwiseGemmPipeline configuration is not available" << std::endl;
59 #endif
60  }
61 }
62 
63 } // namespace ck
64 
65 #ifndef CK_CODE_GEN_RTC
66 inline std::ostream& operator<<(std::ostream& os, const ck::PipelineVersion& p)
67 {
68  switch(p)
69  {
70  case ck::PipelineVersion::v1: os << "PipelineVersion::v1"; break;
71  case ck::PipelineVersion::v2: os << "PipelineVersion::v2"; break;
72  case ck::PipelineVersion::v4: os << "PipelineVersion::v4"; break;
73  case ck::PipelineVersion::weight_only: os << "PipelineVersion::weight_only"; break;
74  default: os << "";
75  }
76  return os;
77 }
78 #endif
std::ostream & operator<<(std::ostream &os, const ck::PipelineVersion &p)
Definition: gridwise_gemm_pipeline_selector.hpp:66
Definition: ck.hpp:264
constexpr auto GridwiseGemmPipeline_Selector()
Definition: gridwise_gemm_pipeline_selector.hpp:30
LoopScheduler
Definition: loop_scheduler.hpp:15
int32_t index_t
Definition: ck.hpp:289
PipelineVersion
Definition: gridwise_gemm_pipeline_selector.hpp:17
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