From ceff0f9a991b693f568c25b1e0933582301082e7 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Mon, 19 Mar 2018 19:57:01 +0000 Subject: COMPMID-1016: Optimize kernel reconfiguration Optimizes kernel reconfiguration when memory manager is used. Note that this works only if every sub-sequent reconfigurations leads to sizes less than the first one. Change-Id: I08898e99929c3756147a02979b726c2380b6e11d Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/125114 Reviewed-by: Anthony Barbier Tested-by: Jenkins --- arm_compute/runtime/MemoryGroupBase.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'arm_compute/runtime/MemoryGroupBase.h') diff --git a/arm_compute/runtime/MemoryGroupBase.h b/arm_compute/runtime/MemoryGroupBase.h index dc640f10a6..06e4321410 100644 --- a/arm_compute/runtime/MemoryGroupBase.h +++ b/arm_compute/runtime/MemoryGroupBase.h @@ -96,7 +96,7 @@ inline MemoryGroupBase::MemoryGroupBase(std::shared_ptr inline void MemoryGroupBase::manage(TensorType *obj) { - if(_memory_manager) + if(_memory_manager && _mappings.empty()) { ARM_COMPUTE_ERROR_ON(!_memory_manager->lifetime_manager()); @@ -114,7 +114,11 @@ inline void MemoryGroupBase::manage(TensorType *obj) template inline void MemoryGroupBase::finalize_memory(TensorType *obj, void **handle, size_t size) { - if(_memory_manager) + // TODO (geopin01) : Check size (track size in MemoryMappings) + // Check if existing mapping is valid + ARM_COMPUTE_ERROR_ON(!_mappings.empty() && (_mappings.find(handle) == std::end(_mappings))); + + if(_memory_manager && _mappings.empty()) { ARM_COMPUTE_ERROR_ON(!_memory_manager->lifetime_manager()); _memory_manager->lifetime_manager()->end_lifetime(obj, handle, size); -- cgit v1.2.1