From b1aad4270fa8ad5c4aa62e27d564baf723b2cee5 Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Thu, 28 Oct 2021 19:07:32 +0100 Subject: IVGCVSW-6527 Support the new memory API in loaded network * enable external memory management for neon and ref backends * change m_TensorMemoryVector to hold shared pointers * change input layer backend Id to match backend id of connected layer Signed-off-by: Finn Williams Change-Id: I2216a724028312eb101b290df3f224177826b1a0 --- src/armnn/LoadedNetwork.hpp | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'src/armnn/LoadedNetwork.hpp') diff --git a/src/armnn/LoadedNetwork.hpp b/src/armnn/LoadedNetwork.hpp index 71ceaa3938..35c482cbc7 100644 --- a/src/armnn/LoadedNetwork.hpp +++ b/src/armnn/LoadedNetwork.hpp @@ -10,9 +10,15 @@ #include #include +#include #include #include #include +#include +#include +#include + + #include #include @@ -89,16 +95,16 @@ public: profiling::ProfilingGuid GetNetworkGuid(); private: - using WorkloadFactoryWithMemoryManager = - std::pair; - using WorkloadFactoryMap = std::unordered_map; void AllocateWorkingMemory(std::lock_guard& lock); void AllocateAndExecuteConstantWorkloads(); + void AllocateAndExecuteConstantWorkloadsAsync(); + + std::unordered_map> m_ConstantWorkloads; + std::unordered_map m_ConstantTensorHandles; - std::unordered_map m_ConstantTensorHandles; - std::unordered_map > m_ConstantWorkloads; + std::unique_ptr m_ConstantStrategy = std::make_unique(); LoadedNetwork(std::unique_ptr net, const INetworkProperties& networkProperties, @@ -120,9 +126,18 @@ private: inline LayerBindingId ValidateImportedInputID(ImportedInputId id); inline LayerBindingId ValidateImportedOutputID(ImportedOutputId id); + void CreateMemoryProfile(); + void CreateMemoryProfileAsync(); + + std::unique_ptr CreateExternalMemoryManger( + std::vector, MemorySource>>& tensorMemory); + using BackendPtrMap = std::unordered_map; - BackendPtrMap m_Backends; + BackendPtrMap m_Backends; + std::vector m_BackendMemoryMangers; + + using WorkloadFactoryMap = std::unordered_map; WorkloadFactoryMap m_WorkloadFactories; std::unique_ptr m_OptimizedNetwork; @@ -171,6 +186,17 @@ private: ImportedInputId m_CurImportedInputId = 0; ImportedInputId m_CurImportedOutputId = 0; + + std::unordered_map> m_MemBlockMap; + std::unordered_map> m_MemBinMap; + + std::vector m_Tensorhandles; + + std::vector, MemorySource>> m_TensorMemory; + + std::unique_ptr m_ExternalMemoryManager; + + std::unordered_map m_SupportsExternallyManagedMemory; }; } -- cgit v1.2.1