24 #ifndef ARM_COMPUTE_MEMORYGROUP_H 25 #define ARM_COMPUTE_MEMORYGROUP_H 47 MemoryGroup(std::shared_ptr<IMemoryManager> =
nullptr) noexcept;
67 std::shared_ptr<IMemoryManager> _memory_manager;
73 : _memory_manager(memory_manager),
81 if(_memory_manager && (obj !=
nullptr))
86 _memory_manager->lifetime_manager()->register_group(
this);
92 _memory_manager->lifetime_manager()->start_lifetime(obj);
101 _memory_manager->lifetime_manager()->end_lifetime(obj, obj_memory, size, alignment);
107 if(!_mappings.empty())
110 _pool = _memory_manager->pool_manager()->lock_pool();
111 _pool->acquire(_mappings);
122 _memory_manager->pool_manager()->unlock_pool(_pool);
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
MemoryGroup(std::shared_ptr< IMemoryManager >=nullptr) noexcept
Default Constructor.
Copyright (c) 2017-2021 Arm Limited.
virtual void associate_memory_group(IMemoryGroup *memory_group)=0
Associates a memory managable object with the memory group that manages it.
void manage(IMemoryManageable *obj) override
Sets a object to be managed by the given memory group.
virtual void release(MemoryMappings &handles)=0
Releases a memory block.
void release() override
Releases backing memory of the whole group.
MemoryMappings & mappings() override
Gets the memory mapping of the group.
void acquire() override
Acquires backing memory for the whole group.
Interface of an object than can be memory managed.
MemoryGroup & operator=(const MemoryGroup &)=delete
Prevent instances of this class from being copy assigned (As this class contains pointers) ...
std::map< IMemory *, size_t > MemoryMappings
A map of (handle, index/offset), where handle is the memory handle of the object to provide the memor...
void finalize_memory(IMemoryManageable *obj, IMemory &obj_memory, size_t size, size_t alignment) override
Finalizes memory for a given object.
~MemoryGroup()=default
Default destructor.