aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h')
-rw-r--r--arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h47
1 files changed, 38 insertions, 9 deletions
diff --git a/arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h b/arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h
index 1ee3c7e3ec..0b60899734 100644
--- a/arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h
+++ b/arm_compute/dynamic_fusion/sketch/gpu/GpuWorkloadContext.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022 Arm Limited.
+ * Copyright (c) 2022-2023 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -25,6 +25,7 @@
#define ARM_COMPUTE_DYNAMIC_FUSION_SKETCH_GPU_GPUWORKLOADCONTEXT
#include "arm_compute/core/GPUTarget.h"
+#include "arm_compute/core/TensorInfo.h"
#include <memory>
@@ -56,16 +57,20 @@ enum class GpuLanguage
class GpuWorkloadContext
{
public:
+ class Impl;
+
/** Constructor */
GpuWorkloadContext(CLCompileContext *cl_compile_context);
- /** Allow instances of this class to be copy constructed */
- GpuWorkloadContext(const GpuWorkloadContext &config) = default;
- /** Allow instances of this class to be copied */
- GpuWorkloadContext &operator=(const GpuWorkloadContext &config) = default;
+ /** Destructor */
+ ~GpuWorkloadContext();
+ /** Prohibit instances of this class to be copy constructed */
+ GpuWorkloadContext(const GpuWorkloadContext &config) = delete;
+ /** Prohibit instances of this class to be copied */
+ GpuWorkloadContext &operator=(const GpuWorkloadContext &config) = delete;
/** Allow instances of this class to be move constructed */
- GpuWorkloadContext(GpuWorkloadContext &&config) = default;
+ GpuWorkloadContext(GpuWorkloadContext &&config);
/** Allow instances of this class to be moved */
- GpuWorkloadContext &operator=(GpuWorkloadContext &&config) = default;
+ GpuWorkloadContext &operator=(GpuWorkloadContext &&config);
/** Get @ref GpuLanguage of the context */
GpuLanguage gpu_language() const;
/** Get @ref GpuTarget of the context */
@@ -75,9 +80,33 @@ public:
*/
const CLCompileContext *cl_compile_context() const;
+ /** Create a @ref TensorInfo associated with the workload context.
+ *
+ * @return TensorInfo Newly created tensor info
+ */
+ template <typename... TArgs>
+ TensorInfo create_tensor_info(TArgs &&... args)
+ {
+ auto tensor_info = TensorInfo(std::forward<TArgs>(args)...);
+ register_user_tensor(tensor_info);
+ return tensor_info;
+ }
+
+ /** Get the internal implementation */
+ Impl &implementation();
+
+ /** Get the internal implementation */
+ const Impl &implementation() const;
+
private:
- GpuLanguage _gpu_language{ GpuLanguage::Unknown };
- CLCompileContext *_cl_compile_ctx{ nullptr };
+ /** Set a new ID to the tensor info and register its memory descriptor to the context.
+ *
+ * @param[in,out] tensor_info @ref ITensorInfo to be registered.
+ */
+ void register_user_tensor(ITensorInfo &tensor_info);
+
+ /** Internal implementation */
+ std::unique_ptr<Impl> _impl;
};
} // namespace dynamic_fusion