/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-6.4.3/include/ck/tensor_operation/gpu/device/device_base.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/device/device_base.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/device/device_base.hpp Source File
device_base.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 #ifndef CK_CODE_GEN_RTC
7 #include <string>
8 #include <sstream>
9 #include <regex>
10 #include <optional>
11 #include "ck/stream_config.hpp"
12 #endif
13 
14 namespace ck {
15 namespace tensor_operation {
16 namespace device {
17 
18 #ifndef CK_CODE_GEN_RTC
19 #define GET_OBJECT_NAME_IMLP \
20  std::optional<std::string> GetObjectName() const override \
21  { \
22  std::string str = __PRETTY_FUNCTION__; \
23  static std::regex obj_name_expr{"<std::string> (.*)::GetObjectName"}; \
24  std::smatch match; \
25  if(!std::regex_search(str, match, obj_name_expr)) \
26  { \
27  return str; \
28  } \
29  return std::string(match[1]) + ';'; \
30  }
31 
32 #define GET_TEMPLATE_INFO_IMPL \
33  std::optional<std::string> GetTemplateInfo() const override \
34  { \
35  std::string str = __PRETTY_FUNCTION__; \
36  static std::regex template_expr{"\\[(.*)\\]"}; \
37  std::smatch match; \
38  if(!std::regex_search(str, match, template_expr)) \
39  { \
40  return std::nullopt; \
41  } \
42  return std::string(match[1]); \
43  }
44 
45 #define REGISTER_EXTRA_PRINTING_METHODS GET_OBJECT_NAME_IMLP GET_TEMPLATE_INFO_IMPL
46 #endif
47 
48 #ifndef CK_CODE_GEN_RTC
50 {
51  BaseArgument() = default;
52  BaseArgument(const BaseArgument&) = default;
53  BaseArgument& operator=(const BaseArgument&) = default;
54 
55  virtual ~BaseArgument() {}
56 
57  void* p_workspace_ = nullptr;
58 };
59 
61 {
62  BaseInvoker() = default;
63  BaseInvoker(const BaseInvoker&) = default;
64  BaseInvoker& operator=(const BaseInvoker&) = default;
65 
66  virtual float Run(const BaseArgument*, const StreamConfig& = StreamConfig{})
67  {
68  return float{0};
69  }
70 
71  virtual ~BaseInvoker() {}
72 };
73 #endif
74 
76 {
77  BaseOperator() = default;
78  BaseOperator(const BaseOperator&) = default;
79  BaseOperator& operator=(const BaseOperator&) = default;
80 #ifndef CK_CODE_GEN_RTC
81  virtual bool IsSupportedArgument(const BaseArgument*) { return false; }
82  virtual std::string GetTypeString() const { return ""; }
83 
84  virtual std::string GetTypeIdName() const { return typeid(*this).name(); }
85 
86  virtual std::optional<std::string> GetObjectName() const { return std::nullopt; }
87 
88  virtual std::optional<std::string> GetTemplateInfo() const { return std::nullopt; }
89 
90  virtual std::string GetTypeIdHashCode() const
91  {
92  std::ostringstream oss;
93 
94  oss << std::hex << typeid(*this).hash_code();
95 
96  return oss.str();
97  };
98 
99  virtual size_t GetWorkSpaceSize(const BaseArgument*) const { return 0; }
100 
101  virtual void SetWorkSpacePointer(BaseArgument* p_arg,
102  void* p_workspace,
103  const StreamConfig& = StreamConfig{}) const
104  {
105  assert(p_arg);
106  p_arg->p_workspace_ = p_workspace;
107  }
108 #endif
109  virtual ~BaseOperator() {}
110 };
111 
112 } // namespace device
113 } // namespace tensor_operation
114 } // namespace ck
Definition: ck.hpp:264
Definition: stream_config.hpp:10
Definition: device_base.hpp:50
BaseArgument & operator=(const BaseArgument &)=default
BaseArgument(const BaseArgument &)=default
virtual ~BaseArgument()
Definition: device_base.hpp:55
void * p_workspace_
Definition: device_base.hpp:57
Definition: device_base.hpp:61
virtual ~BaseInvoker()
Definition: device_base.hpp:71
BaseInvoker & operator=(const BaseInvoker &)=default
virtual float Run(const BaseArgument *, const StreamConfig &=StreamConfig{})
Definition: device_base.hpp:66
BaseInvoker(const BaseInvoker &)=default
Definition: device_base.hpp:76
virtual void SetWorkSpacePointer(BaseArgument *p_arg, void *p_workspace, const StreamConfig &=StreamConfig{}) const
Definition: device_base.hpp:101
virtual bool IsSupportedArgument(const BaseArgument *)
Definition: device_base.hpp:81
virtual size_t GetWorkSpaceSize(const BaseArgument *) const
Definition: device_base.hpp:99
virtual std::optional< std::string > GetTemplateInfo() const
Definition: device_base.hpp:88
virtual std::string GetTypeString() const
Definition: device_base.hpp:82
BaseOperator(const BaseOperator &)=default
virtual std::string GetTypeIdHashCode() const
Definition: device_base.hpp:90
virtual std::optional< std::string > GetObjectName() const
Definition: device_base.hpp:86
BaseOperator & operator=(const BaseOperator &)=default
virtual std::string GetTypeIdName() const
Definition: device_base.hpp:84
virtual ~BaseOperator()
Definition: device_base.hpp:109