aboutsummaryrefslogtreecommitdiff
path: root/include/armnn/BackendRegistry.hpp
diff options
context:
space:
mode:
authorJan Eilers <jan.eilers@arm.com>2021-07-22 13:17:04 +0100
committerDavid Monahan <david.monahan@arm.com>2021-08-10 16:35:33 +0100
commitc1c872f12797ef6fe52c4589113e7efc353e56eb (patch)
tree911320c5306f9d2273ee76201806bfb12cbe4cd3 /include/armnn/BackendRegistry.hpp
parentf487486c843a38fced90229923433d09f99fc2e5 (diff)
downloadarmnn-c1c872f12797ef6fe52c4589113e7efc353e56eb.tar.gz
Adds CustomAllocator interface and Sample App
* Updates the runtime options with a CustomAllocatorMap which allows to define a CustomAllocator for specific backends * Change IBackendInternal interface to use a shared pointer to a custom allocator * Update ClBackend.hpp/cpp to use the CustomAllocator * Adds an example application and unit test which uses a CustomAllocator for GpuAcc * Refactor of the interface to use MemorySource instead of the user Mapping cl_mem directly * Modify the BackendRegistry to also hold a registry of CustomAllocators * BackendRegistry Deregister will also deregister any allocators associated with that backend id * set_global_allocator within the BaseMemoryManager so that it always matches the currently used allocator Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: I156d819686021865f4375e6cb7a5c5dec8fee9e8 Signed-off-by: David Monahan <david.monahan@arm.com>
Diffstat (limited to 'include/armnn/BackendRegistry.hpp')
-rw-r--r--include/armnn/BackendRegistry.hpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/armnn/BackendRegistry.hpp b/include/armnn/BackendRegistry.hpp
index fe6451cde0..c13aa9f8b6 100644
--- a/include/armnn/BackendRegistry.hpp
+++ b/include/armnn/BackendRegistry.hpp
@@ -7,6 +7,7 @@
#include <armnn/Types.hpp>
#include <armnn/BackendId.hpp>
#include <armnn/Optional.hpp>
+#include <armnn/backends/ICustomAllocator.hpp>
#include <memory>
#include <unordered_map>
@@ -35,6 +36,8 @@ public:
BackendIdSet GetBackendIds() const;
std::string GetBackendIdsAsString() const;
void SetProfilingService(armnn::Optional<profiling::ProfilingService&> profilingService);
+ void RegisterAllocator(const BackendId& id, std::shared_ptr<ICustomAllocator> alloc);
+ std::unordered_map<BackendId, std::shared_ptr<ICustomAllocator>> GetAllocators();
BackendRegistry() {}
virtual ~BackendRegistry() {}
@@ -50,6 +53,7 @@ public:
};
void Deregister(const BackendId& id);
+ void DeregisterAllocator(const BackendId &id);
protected:
using FactoryStorage = std::unordered_map<BackendId, FactoryFunction>;
@@ -63,6 +67,7 @@ private:
FactoryStorage m_Factories;
armnn::Optional<profiling::ProfilingService&> m_ProfilingService;
+ std::unordered_map<BackendId, std::shared_ptr<ICustomAllocator>> m_CustomMemoryAllocatorMap;
};
BackendRegistry& BackendRegistryInstance();