From 4cefc4135f7fbf5c2ba532a4f5b14d2811f9ed9e Mon Sep 17 00:00:00 2001 From: Matthew Bentham Date: Tue, 18 Jun 2019 16:14:34 +0100 Subject: IVGCVSW-3307 Introduce RefTensorHandle Use it for intermediate tensors on reference backend. Lays the groundwork for memory management in the reference backend. Change-Id: I7d3ee132cac31bde70ae6e1b815f4f0b03d550a6 Signed-off-by: Matthew Bentham --- src/backends/reference/RefTensorHandle.hpp | 66 ++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/backends/reference/RefTensorHandle.hpp (limited to 'src/backends/reference/RefTensorHandle.hpp') diff --git a/src/backends/reference/RefTensorHandle.hpp b/src/backends/reference/RefTensorHandle.hpp new file mode 100644 index 0000000000..66d840ab35 --- /dev/null +++ b/src/backends/reference/RefTensorHandle.hpp @@ -0,0 +1,66 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include + +namespace armnn +{ + +// An implementation of ITensorHandle with simple "bump the pointer" memory-management behaviour +class RefTensorHandle : public ITensorHandle +{ +public: + RefTensorHandle(const TensorInfo& tensorInfo); + + ~RefTensorHandle(); + + virtual void Manage() override + {} + + virtual ITensorHandle* GetParent() const override + { + return nullptr; + } + + virtual const void* Map(bool /* blocking = true */) const override + { + return m_Memory; + } + + virtual void Unmap() const override + {} + + virtual void Allocate() override; + + TensorShape GetStrides() const override + { + return GetUnpaddedTensorStrides(m_TensorInfo); + } + + TensorShape GetShape() const override + { + return m_TensorInfo.GetShape(); + } + + const TensorInfo& GetTensorInfo() const + { + return m_TensorInfo; + } + +private: + // Only used for testing + void CopyOutTo(void*) const override; + void CopyInFrom(const void*) override; + + RefTensorHandle(const RefTensorHandle& other) = delete; + + RefTensorHandle& operator=(const RefTensorHandle& other) = delete; + + TensorInfo m_TensorInfo; + void* m_Memory; +}; + +} \ No newline at end of file -- cgit v1.2.1