ArmNN
 21.11
TensorHandleFactoryRegistry.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
9 
10 #include <memory>
11 #include <vector>
12 
13 namespace armnn
14 {
15 
16 //Forward
17 class IMemoryManager;
18 
19 ///
21 {
22 public:
23  TensorHandleFactoryRegistry() = default;
24 
27 
28  /// Register a TensorHandleFactory and transfer ownership
29  void RegisterFactory(std::unique_ptr<ITensorHandleFactory> allocator);
30 
31  /// Register a memory manager with shared ownership
32  void RegisterMemoryManager(std::shared_ptr<IMemoryManager> memoryManger);
33 
34  /// Find a TensorHandleFactory by Id
35  /// Returns nullptr if not found
37 
38  /// Overload of above allowing specification of Memory Source
40  MemorySource memSource) const;
41 
42  /// Aquire memory required for inference
43  void AquireMemory();
44 
45  /// Release memory required for inference
46  void ReleaseMemory();
47 
48  std::vector<std::shared_ptr<IMemoryManager>>& GetMemoryManagers()
49  {
50  return m_MemoryManagers;
51  }
52 
53 private:
54  std::vector<std::unique_ptr<ITensorHandleFactory>> m_Factories;
55  std::vector<std::shared_ptr<IMemoryManager>> m_MemoryManagers;
56 };
57 
58 } // namespace armnn
void RegisterMemoryManager(std::shared_ptr< IMemoryManager > memoryManger)
Register a memory manager with shared ownership.
void RegisterFactory(std::unique_ptr< ITensorHandleFactory > allocator)
Register a TensorHandleFactory and transfer ownership.
void AquireMemory()
Aquire memory required for inference.
Copyright (c) 2021 ARM Limited and Contributors.
void ReleaseMemory()
Release memory required for inference.
MemorySource
Define the Memory Source to reduce copies.
Definition: Types.hpp:217
ITensorHandleFactory * GetFactory(ITensorHandleFactory::FactoryId id) const
Find a TensorHandleFactory by Id Returns nullptr if not found.
std::vector< std::shared_ptr< IMemoryManager > > & GetMemoryManagers()