ArmNN
 21.02
SampleTensorHandle.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
8 
10 
11 namespace sdb // sample dynamic backend
12 {
13 
14 // An implementation of ITensorHandle with simple "bump the pointer" memory-management behaviour
16 {
17 public:
18  SampleTensorHandle(const armnn::TensorInfo& tensorInfo, std::shared_ptr<SampleMemoryManager> &memoryManager);
19 
20  SampleTensorHandle(const armnn::TensorInfo& tensorInfo, armnn::MemorySourceFlags importFlags);
21 
23 
24  virtual void Manage() override;
25 
26  virtual void Allocate() override;
27 
28  virtual ITensorHandle* GetParent() const override
29  {
30  return nullptr;
31  }
32 
33  virtual const void* Map(bool /* blocking = true */) const override;
34  using ITensorHandle::Map;
35 
36  virtual void Unmap() const override
37  {}
38 
39  armnn::TensorShape GetStrides() const override
40  {
41  return GetUnpaddedTensorStrides(m_TensorInfo);
42  }
43 
44  armnn::TensorShape GetShape() const override
45  {
46  return m_TensorInfo.GetShape();
47  }
48 
50  {
51  return m_TensorInfo;
52  }
53 
54  virtual armnn::MemorySourceFlags GetImportFlags() const override
55  {
56  return m_ImportFlags;
57  }
58 
59  virtual bool Import(void* memory, armnn::MemorySource source) override;
60 
61 private:
62  // Only used for testing
63  void CopyOutTo(void*) const override;
64  void CopyInFrom(const void*) override;
65 
66  void* GetPointer() const;
67 
68  SampleTensorHandle(const SampleTensorHandle& other) = delete; // noncopyable
69  SampleTensorHandle& operator=(const SampleTensorHandle& other) = delete; //noncopyable
70 
71  armnn::TensorInfo m_TensorInfo;
72 
73  std::shared_ptr<SampleMemoryManager> m_MemoryManager;
75  mutable void *m_UnmanagedMemory;
76  armnn::MemorySourceFlags m_ImportFlags;
77  bool m_Imported;
78 };
79 
80 } // namespace sdb
const TensorShape & GetShape() const
Definition: Tensor.hpp:187
virtual ITensorHandle * GetParent() const override
Get the parent tensor if this is a subtensor.
unsigned int MemorySourceFlags
virtual armnn::MemorySourceFlags GetImportFlags() const override
Get flags describing supported import sources.
virtual void Allocate() override
Indicate to the memory manager that this resource is no longer active.
SampleTensorHandle(const armnn::TensorInfo &tensorInfo, std::shared_ptr< SampleMemoryManager > &memoryManager)
armnn::TensorShape GetShape() const override
Get the number of elements for each dimension ordered from slowest iterating dimension to fastest ite...
TensorShape GetUnpaddedTensorStrides(const TensorInfo &tensorInfo)
virtual void Unmap() const override
Unmap the tensor data.
const armnn::TensorInfo & GetTensorInfo() const
virtual void Manage() override
Indicate to the memory manager that this resource is active.
armnn::TensorShape GetStrides() const override
Get the strides for each dimension ordered from largest to smallest where the smallest value is the s...
virtual const void * Map(bool) const override
Map the tensor data for access.
virtual bool Import(void *memory, armnn::MemorySource source) override
Import externally allocated memory.