diff options
author | Matthew Bentham <Matthew.Bentham@arm.com> | 2019-06-18 16:14:34 +0100 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-07-02 09:19:01 +0000 |
commit | 4cefc4135f7fbf5c2ba532a4f5b14d2811f9ed9e (patch) | |
tree | 1a7fbd6c636d83737b4e2319ed27255397921a32 /src/backends/reference/RefTensorHandle.hpp | |
parent | fe15eff9ed2007cd10800ec356ce2e8ea4b5f9d0 (diff) | |
download | armnn-4cefc4135f7fbf5c2ba532a4f5b14d2811f9ed9e.tar.gz |
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 <Matthew.Bentham@arm.com>
Diffstat (limited to 'src/backends/reference/RefTensorHandle.hpp')
-rw-r--r-- | src/backends/reference/RefTensorHandle.hpp | 66 |
1 files changed, 66 insertions, 0 deletions
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 <backendsCommon/CpuTensorHandle.hpp> + +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 |