diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2022-01-25 15:15:34 +0000 |
---|---|---|
committer | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2022-01-27 09:03:19 +0000 |
commit | 9ef361469ef64616c1fdb92d57258ac63a26804a (patch) | |
tree | 0c42147a6fda88f1c83f0101c8f0c22dff0d169e /src/backends/cl/ICLTensorProxy.hpp | |
parent | 588cbdfbd20dc524674db40c07cde3c4ffb85d11 (diff) | |
download | armnn-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.hpp | 78 |
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 |