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/WorkingMemHandle.hpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src/armnn/WorkingMemHandle.hpp') diff --git a/src/armnn/WorkingMemHandle.hpp b/src/armnn/WorkingMemHandle.hpp index 9078a8d54c..bca1d2d80c 100644 --- a/src/armnn/WorkingMemHandle.hpp +++ b/src/armnn/WorkingMemHandle.hpp @@ -14,6 +14,7 @@ #include #include +#include namespace armnn { @@ -45,11 +46,13 @@ public: WorkingMemHandle(NetworkId networkId, std::vector inputLayerInfo, - std::vector ouputLayerInfo, + std::vector outputLayerInfo, std::vector workingMemDescriptors, std::unordered_map workingMemDescriptorMap, - std::vector> memoryManagers, - std::unordered_map > > ownedTensorHandles); + std::unique_ptr memoryManager, + std::vector, MemorySource>> tensorMemory, + std::vector> managedTensorHandles, + std::vector> unmanagedTensorHandles); ~WorkingMemHandle() { Free(); } @@ -128,11 +131,17 @@ private: std::vector m_WorkingMemDescriptors; std::unordered_map m_WorkingMemDescriptorMap; - // Vector of IMemoryManagers that manage the WorkingMemHandle's memory - std::vector> m_MemoryManagers; - // TensorHandles owned by this WorkingMemHandle - // constant tensor's can be shared by multiple WorkingMemHandles and so will not be stored here - std::unordered_map > > m_OwnedTensorHandles; + std::unique_ptr m_MemoryManager; + + // Memory to be imported into the tensorHandles after allocation + std::vector, MemorySource>> m_TensorMemory; + + + // Tensors that will need to be allocated internally within armnn + std::vector> m_ManagedTensorHandles; + + // Tensors that will be allocated externally by the user + std::vector> m_UnmanagedTensorHandles; std::unordered_map m_InputValidationMap; std::unordered_map m_OutputValidationMap; -- cgit v1.2.1