aboutsummaryrefslogtreecommitdiff
path: root/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/experimental/dynamic_fusion/ClKernelBuildingImpl')
-rw-r--r--src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h23
-rw-r--r--src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.cpp14
-rw-r--r--src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.h1
-rw-r--r--src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.cpp26
-rw-r--r--src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.h1
5 files changed, 64 insertions, 1 deletions
diff --git a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h
index e24c742fd7..aa27572746 100644
--- a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h
+++ b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h
@@ -316,6 +316,15 @@ public:
return "";
}
+ /** Generate config id of the component
+ *
+ * @return std::string
+ */
+ virtual std::string generate_config_id() const
+ {
+ return "";
+ }
+
virtual CLBuildOptions generate_build_options() const
{
return CLBuildOptions{};
@@ -537,9 +546,21 @@ public:
return code;
}
+ /** Generate config id of the entire kernel
+ *
+ * Format: kernel_name--comp0_config_id--comp1_config_id--...
+ *
+ * @return std::string
+ */
std::string build_config_id() const
{
- return "";
+ std::string config_id = build_kernel_name();
+ traverse([&](std::stack<ComponentID> stack)
+ {
+ config_id += "--" + _components.find(stack.top())->second->generate_config_id() + "--";
+ });
+
+ return config_id;
}
CLBuildOptions build_options() const
diff --git a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.cpp b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.cpp
index 34b735edc9..84e4003d5d 100644
--- a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.cpp
+++ b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.cpp
@@ -128,6 +128,20 @@ CLBuildOptions ClElementwiseAddKernelComponent::generate_build_options() const
return build_opts;
}
+std::string ClElementwiseAddKernelComponent::generate_config_id() const
+{
+ auto t_dst_info = _blueprint->impl().get_kernel_argument_info(_blueprint->impl().get_dst_id());
+ std::string config_id{};
+ config_id += lower_string(string_from_data_type(t_dst_info->data_type()));
+ config_id += "_";
+ config_id += support::cpp11::to_string(t_dst_info->dimension(0));
+ config_id += "_";
+ config_id += support::cpp11::to_string(t_dst_info->dimension(1));
+ config_id += "_";
+ config_id += lower_string(string_from_data_layout(t_dst_info->data_layout()));
+ return config_id;
+}
+
ClElementwiseAddKernelComponent::TagLUT ClElementwiseAddKernelComponent::allocate_vars(SharedVarTable &vtable) const
{
// Determine which argument is the accumulator
diff --git a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.h b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.h
index c259811a98..35c9538b8d 100644
--- a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.h
+++ b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClElementwiseAddKernelComponent.h
@@ -47,6 +47,7 @@ public:
std::string get_component_code() const override;
Window get_window() const override;
CLBuildOptions generate_build_options() const override;
+ std::string generate_config_id() const override;
virtual std::vector<Link> get_links() const override
{
diff --git a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.cpp b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.cpp
index 7d23128276..45b81b424d 100644
--- a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.cpp
+++ b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.cpp
@@ -470,6 +470,32 @@ CLBuildOptions ClGemmNativeKernelComponent::generate_build_options() const
return build_opts;
}
+std::string ClGemmNativeKernelComponent::generate_config_id() const
+{
+ auto t_dst_info = _blueprint->impl().get_kernel_argument_info(_blueprint->impl().get_dst_id());
+ std::string config_id{};
+ config_id += (_bias.is_empty() ? "add_bias_" : "");
+ config_id += (_desc.broadcast_bias ? "broadcast_bias_" : "");
+ config_id += (_desc.reinterpret_input_as_3d ? "3di_" : "");
+ config_id += (_desc.depth_output_gemm3d > 0 ? "3do_" : "");
+ config_id += lower_string(string_from_data_type(t_dst_info->data_type()));
+ config_id += "_";
+ config_id += support::cpp11::to_string(t_dst_info->dimension(1));
+ config_id += "_";
+ config_id += support::cpp11::to_string(t_dst_info->dimension(0));
+ config_id += "_";
+ config_id += support::cpp11::to_string(_desc.k);
+ config_id += "_";
+ config_id += support::cpp11::to_string(t_dst_info->dimension(2));
+ config_id += "_";
+ config_id += support::cpp11::to_string(_desc.lhs_info.m0);
+ config_id += "_";
+ config_id += support::cpp11::to_string(_desc.rhs_info.n0);
+ config_id += "_";
+ config_id += support::cpp11::to_string(_desc.rhs_info.k0);
+ return config_id;
+}
+
ClGemmNativeKernelComponent::TagLUT ClGemmNativeKernelComponent::allocate_vars(SharedVarTable &vtable) const
{
TagLUT lut{};
diff --git a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.h b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.h
index 1a1e3e3ce6..b282856b56 100644
--- a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.h
+++ b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/components/ClGemmNativeKernelComponent.h
@@ -53,6 +53,7 @@ public:
Window get_window() const override;
ClKernelArgList get_args();
CLBuildOptions generate_build_options() const override;
+ std::string generate_config_id() const override;
virtual std::vector<Link> get_links() const override
{