aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/runtime/MemoryGroupBase.h
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-03-19 19:57:01 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:49:16 +0000
commitceff0f9a991b693f568c25b1e0933582301082e7 (patch)
tree3938e9b2151fc6b3d42d2bab9f66efa4709a5da1 /arm_compute/runtime/MemoryGroupBase.h
parent7db3a30cd15659af75938cd964eebb17a12c6e81 (diff)
downloadComputeLibrary-ceff0f9a991b693f568c25b1e0933582301082e7.tar.gz
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 <anthony.barbier@arm.com> Tested-by: Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute/runtime/MemoryGroupBase.h')
-rw-r--r--arm_compute/runtime/MemoryGroupBase.h8
1 files changed, 6 insertions, 2 deletions
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<TensorType>::MemoryGroupBase(std::shared_ptr<IMemoryManag
template <typename TensorType>
inline void MemoryGroupBase<TensorType>::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<TensorType>::manage(TensorType *obj)
template <typename TensorType>
inline void MemoryGroupBase<TensorType>::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);