diff options
Diffstat (limited to 'src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp')
-rw-r--r-- | src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp b/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp new file mode 100644 index 0000000000..9e02985301 --- /dev/null +++ b/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp @@ -0,0 +1,49 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "ITensorHandleFactory.hpp" + +#include <memory> +#include <vector> + +namespace armnn +{ + +//Forward +class IMemoryManager; + +/// +class TensorHandleFactoryRegistry +{ +public: + TensorHandleFactoryRegistry() = default; + + TensorHandleFactoryRegistry(const TensorHandleFactoryRegistry& other) = delete; + TensorHandleFactoryRegistry(TensorHandleFactoryRegistry&& other) = delete; + + /// Register a TensorHandleFactory and transfer ownership + void RegisterFactory(std::unique_ptr<ITensorHandleFactory> allocator); + + /// Register a memory manager with shared ownership + void RegisterMemoryManager(std::shared_ptr<IMemoryManager> memoryManger); + + /// Find a TensorHandleFactory by Id + /// Returns nullptr if not found + ITensorHandleFactory* GetFactory(ITensorHandleFactory::FactoryId id) const; + + /// Aquire memory required for inference + void AquireMemory(); + + /// Release memory required for inference + void ReleaseMemory(); + +private: + std::vector<std::unique_ptr<ITensorHandleFactory>> m_Factories; + std::vector<std::shared_ptr<IMemoryManager>> m_MemoryManagers; +}; + +} // namespace armnn |