aboutsummaryrefslogtreecommitdiff
path: root/src/backends/cl/ICLTensorProxy.hpp
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2022-01-25 15:15:34 +0000
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>2022-01-27 09:03:19 +0000
commit9ef361469ef64616c1fdb92d57258ac63a26804a (patch)
tree0c42147a6fda88f1c83f0101c8f0c22dff0d169e /src/backends/cl/ICLTensorProxy.hpp
parent588cbdfbd20dc524674db40c07cde3c4ffb85d11 (diff)
downloadarmnn-9ef361469ef64616c1fdb92d57258ac63a26804a.tar.gz
IVGCVSW-6687 Implement ICLTensorProxy
* Implement ICLTensorProxy and unit tests * Remove IClImportTensorHandle and use IClTensorHandle to access ICLTensor Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I791d0f2c6f8bad841a56e39e196baf0e533c7124
Diffstat (limited to 'src/backends/cl/ICLTensorProxy.hpp')
-rw-r--r--src/backends/cl/ICLTensorProxy.hpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/backends/cl/ICLTensorProxy.hpp b/src/backends/cl/ICLTensorProxy.hpp
new file mode 100644
index 0000000000..fff9c53d31
--- /dev/null
+++ b/src/backends/cl/ICLTensorProxy.hpp
@@ -0,0 +1,78 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include <arm_compute/core/CL/ICLTensor.h>
+#include <arm_compute/core/ITensorInfo.h>
+
+namespace armnn
+{
+
+class ICLTensorProxy : public arm_compute::ICLTensor
+{
+public:
+ ICLTensorProxy(arm_compute::ICLTensor* iclTensor) : m_DelegateTensor(iclTensor) {}
+ ICLTensorProxy(const ICLTensorProxy&) = delete;
+ ICLTensorProxy& operator=(const ICLTensorProxy&) = delete;
+ ICLTensorProxy(ICLTensorProxy&&) = default;
+ ICLTensorProxy& operator=(ICLTensorProxy&&) = default;
+
+ void set(arm_compute::ICLTensor* iclTensor)
+ {
+ if(iclTensor != nullptr)
+ {
+ m_DelegateTensor = iclTensor;
+ }
+ }
+
+ // Inherited methods overridden:
+ arm_compute::ITensorInfo* info() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->info();
+ }
+
+ arm_compute::ITensorInfo* info()
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->info();
+ }
+
+ uint8_t* buffer() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->buffer();
+ }
+
+ arm_compute::CLQuantization quantization() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->quantization();
+ }
+
+ const cl::Buffer& cl_buffer() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->cl_buffer();
+ }
+
+protected:
+ uint8_t* do_map(cl::CommandQueue& q, bool blocking)
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ m_DelegateTensor->map(q, blocking);
+ return m_DelegateTensor->buffer();
+ }
+ void do_unmap(cl::CommandQueue& q)
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->unmap(q);
+ }
+
+private:
+ arm_compute::ICLTensor* m_DelegateTensor{ nullptr };
+};
+
+} //namespace armnn \ No newline at end of file