diff options
author | Finn Williams <Finn.Williams@arm.com> | 2021-04-26 12:06:34 +0100 |
---|---|---|
committer | finn.williams <finn.williams@arm.com> | 2021-04-28 11:39:10 +0000 |
commit | 01097941ef85073c56cbd1d5f00d7e8ffeb9876d (patch) | |
tree | 818686d467b142084e0e49bbd4084670d1d0d50b /src/armnn/LoadedNetwork.hpp | |
parent | c2b99a8783388ec3bd90dfed2e1b6d4f4d4bd1c8 (diff) | |
download | armnn-01097941ef85073c56cbd1d5f00d7e8ffeb9876d.tar.gz |
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 <Finn.Williams@arm.com>
Change-Id: I69d4b3c5c84d2f5abe4540c3e624ab4f00d88226
Diffstat (limited to 'src/armnn/LoadedNetwork.hpp')
-rw-r--r-- | src/armnn/LoadedNetwork.hpp | 26 |
1 files changed, 9 insertions, 17 deletions
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<IBackendInternal::IWorkloadFactoryPtr, IBackendInternal::IMemoryManagerSharedPtr>; + + using WorkloadFactoryMap = std::unordered_map<BackendId, WorkloadFactoryWithMemoryManager>; + void AllocateWorkingMemory(std::lock_guard<std::mutex>& lock); + void AllocateAndExecuteConstantWorkloads(); + + std::unordered_map<LayerGuid, ITensorHandle* > m_ConstantTensorHandles; + std::unordered_map<LayerGuid, std::unique_ptr<IWorkload> > m_ConstantWorkloads; LoadedNetwork(std::unique_ptr<IOptimizedNetwork> net, const INetworkProperties& networkProperties, profiling::ProfilingService& profilingService); - void CollectInputTensorHandles(std::unordered_map<LayerGuid, std::vector<ITensorHandle*> >& tensorHandles, - std::vector<ITensorHandle*>& inputs, - const armnn::Layer* layer, - const TensorHandleFactoryRegistry& registry, - const bool isMemoryManaged = false); - - void CreateOutputTensorHandles(std::unordered_map<LayerGuid, std::vector<ITensorHandle*> >& tensorHandles, - std::vector<ITensorHandle*>& 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<BackendId, IBackendInternalUniquePtr>; - using WorkloadFactoryWithMemoryManager = - std::pair<IBackendInternal::IWorkloadFactoryPtr, IBackendInternal::IMemoryManagerSharedPtr>; - - using WorkloadFactoryMap = std::unordered_map<BackendId, WorkloadFactoryWithMemoryManager>; - BackendPtrMap m_Backends; WorkloadFactoryMap m_WorkloadFactories; |