From 01097941ef85073c56cbd1d5f00d7e8ffeb9876d Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Mon, 26 Apr 2021 12:06:34 +0100 Subject: IVGCVSW-5843 Separate memory managers for WorkingMemHandles * Add inter layer memory management to WorkingMemHandle * Change Const layers to be executed once in loadedNetworkConstruction and share tensorHandle between all WorkingMemHandles * Fix various reference workloads pointing to memory in the queueDescriptor Signed-off-by: Finn Williams Change-Id: I69d4b3c5c84d2f5abe4540c3e624ab4f00d88226 --- src/armnn/LoadedNetwork.hpp | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'src/armnn/LoadedNetwork.hpp') diff --git a/src/armnn/LoadedNetwork.hpp b/src/armnn/LoadedNetwork.hpp index 2bcf5c8c08..51092c744e 100644 --- a/src/armnn/LoadedNetwork.hpp +++ b/src/armnn/LoadedNetwork.hpp @@ -74,24 +74,21 @@ public: profiling::ProfilingGuid GetNetworkGuid(); private: + using WorkloadFactoryWithMemoryManager = + std::pair; + + using WorkloadFactoryMap = std::unordered_map; + void AllocateWorkingMemory(std::lock_guard& lock); + void AllocateAndExecuteConstantWorkloads(); + + std::unordered_map m_ConstantTensorHandles; + std::unordered_map > m_ConstantWorkloads; LoadedNetwork(std::unique_ptr net, const INetworkProperties& networkProperties, profiling::ProfilingService& profilingService); - void CollectInputTensorHandles(std::unordered_map >& tensorHandles, - std::vector& inputs, - const armnn::Layer* layer, - const TensorHandleFactoryRegistry& registry, - const bool isMemoryManaged = false); - - void CreateOutputTensorHandles(std::unordered_map >& tensorHandles, - std::vector& outputs, - const armnn::Layer* layer, - const TensorHandleFactoryRegistry& registry, - const bool isMemoryManaged = false); - void EnqueueInput(const BindableLayer& layer, ITensorHandle* tensorHandle, const TensorInfo& tensorInfo); void EnqueueOutput(const BindableLayer& layer, ITensorHandle* tensorHandle, const TensorInfo& tensorInfo); @@ -107,11 +104,6 @@ private: using BackendPtrMap = std::unordered_map; - using WorkloadFactoryWithMemoryManager = - std::pair; - - using WorkloadFactoryMap = std::unordered_map; - BackendPtrMap m_Backends; WorkloadFactoryMap m_WorkloadFactories; -- cgit v1.2.1