ArmNN  NotReleased
RefTensorHandle.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
8 
9 #include "RefMemoryManager.hpp"
10 
11 namespace armnn
12 {
13 
14 // An implementation of ITensorHandle with simple "bump the pointer" memory-management behaviour
16 {
17 public:
18  RefTensorHandle(const TensorInfo& tensorInfo, std::shared_ptr<RefMemoryManager> &memoryManager);
19 
20  RefTensorHandle(const TensorInfo& tensorInfo, std::shared_ptr<RefMemoryManager> &memoryManager,
21  MemorySourceFlags importFlags);
22 
24 
25  virtual void Manage() override;
26 
27  virtual void Allocate() override;
28 
29  virtual ITensorHandle* GetParent() const override
30  {
31  return nullptr;
32  }
33 
34  virtual const void* Map(bool /* blocking = true */) const override;
35  using ITensorHandle::Map;
36 
37  virtual void Unmap() const override
38  {}
39 
40  TensorShape GetStrides() const override
41  {
42  return GetUnpaddedTensorStrides(m_TensorInfo);
43  }
44 
45  TensorShape GetShape() const override
46  {
47  return m_TensorInfo.GetShape();
48  }
49 
50  const TensorInfo& GetTensorInfo() const
51  {
52  return m_TensorInfo;
53  }
54 
55  virtual MemorySourceFlags GetImportFlags() const override
56  {
57  return m_ImportFlags;
58  }
59 
60  virtual bool Import(void* memory, MemorySource source) override;
61 
62 private:
63  // Only used for testing
64  void CopyOutTo(void*) const override;
65  void CopyInFrom(const void*) override;
66 
67  void* GetPointer() const;
68 
69  RefTensorHandle(const RefTensorHandle& other) = delete; // noncopyable
70  RefTensorHandle& operator=(const RefTensorHandle& other) = delete; //noncopyable
71 
72  TensorInfo m_TensorInfo;
73 
74  std::shared_ptr<RefMemoryManager> m_MemoryManager;
75  RefMemoryManager::Pool* m_Pool;
76  mutable void *m_UnmanagedMemory;
77  MemorySourceFlags m_ImportFlags;
78  bool m_Imported;
79 };
80 
81 }
virtual const void * Map(bool) const override
const TensorInfo & GetTensorInfo() const
RefTensorHandle(const TensorInfo &tensorInfo, std::shared_ptr< RefMemoryManager > &memoryManager)
virtual const void * Map(bool blocking=true) const =0
virtual void Unmap() const override
Unmap the tensor data.
TensorShape GetUnpaddedTensorStrides(const TensorInfo &tensorInfo)
virtual void Manage() override
unsigned int MemorySourceFlags
TensorShape GetStrides() const override
virtual MemorySourceFlags GetImportFlags() const override
Get flags describing supported import sources.
virtual ITensorHandle * GetParent() const override
virtual void Allocate() override
TensorShape GetShape() const override
virtual bool Import(void *memory, MemorySource source) override
const TensorShape & GetShape() const
Definition: Tensor.hpp:88