Enable dynamic cl tuning for dynamically fused kernels

* Add new tune_kernel_dynamic interface
* Add generate_config_id

Resolves: COMPMID-5154

Signed-off-by: SiCong Li <sicong.li@arm.com>
Change-Id: I39870e59fceda875487970061ceb2048995c5a45
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/7400
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h
index e24c742..aa27572 100644
--- a/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h
+++ b/src/core/experimental/dynamic_fusion/ClKernelBuildingImpl/Common.h
@@ -316,6 +316,15 @@
         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 @@
         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