aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/DynamicBackendUtils.cpp
diff options
context:
space:
mode:
authorMatteo Martincigh <matteo.martincigh@arm.com>2019-08-15 12:08:06 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-08-19 12:12:28 +0000
commit895339092fa9edc0aa59de0309f79bebacc3fa63 (patch)
tree6e98c570423ff4ff292ebd109e9c3792bdd1a3b9 /src/backends/backendsCommon/DynamicBackendUtils.cpp
parentf800de2140ca55f29bacfa6795df7a28aba3e5ff (diff)
downloadarmnn-895339092fa9edc0aa59de0309f79bebacc3fa63.tar.gz
IVGCVSW-3545 Update the device specs with the dynamic backend ids
* Now the utility function RegisterDynamicBackends returns a list of the backend ids that have been registered * The list of registered ids is added to the list of supported backends in the Runtime * Added unit tests Change-Id: I97bbe1f680920358f5baba5a4666e4983b849cac Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Diffstat (limited to 'src/backends/backendsCommon/DynamicBackendUtils.cpp')
-rw-r--r--src/backends/backendsCommon/DynamicBackendUtils.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/backends/backendsCommon/DynamicBackendUtils.cpp b/src/backends/backendsCommon/DynamicBackendUtils.cpp
index fadec0c389..fc4336f4ac 100644
--- a/src/backends/backendsCommon/DynamicBackendUtils.cpp
+++ b/src/backends/backendsCommon/DynamicBackendUtils.cpp
@@ -299,21 +299,25 @@ std::vector<DynamicBackendPtr> DynamicBackendUtils::CreateDynamicBackends(const
return dynamicBackends;
}
-void DynamicBackendUtils::RegisterDynamicBackends(const std::vector<DynamicBackendPtr>& dynamicBackends)
+BackendIdSet DynamicBackendUtils::RegisterDynamicBackends(const std::vector<DynamicBackendPtr>& dynamicBackends)
{
// Get a reference of the backend registry
BackendRegistry& backendRegistry = BackendRegistryInstance();
- // Register the dynamic backends in the backend registry
- RegisterDynamicBackendsImpl(backendRegistry, dynamicBackends);
+ // Register the dynamic backends in the backend registry, and return a list of registered backend ids
+ return RegisterDynamicBackendsImpl(backendRegistry, dynamicBackends);
}
-void DynamicBackendUtils::RegisterDynamicBackendsImpl(BackendRegistry& backendRegistry,
- const std::vector<DynamicBackendPtr>& dynamicBackends)
+BackendIdSet DynamicBackendUtils::RegisterDynamicBackendsImpl(BackendRegistry& backendRegistry,
+ const std::vector<DynamicBackendPtr>& dynamicBackends)
{
+ // Initialize the list of registered backend ids
+ BackendIdSet registeredBackendIds;
+
// Register the dynamic backends in the backend registry
for (const DynamicBackendPtr& dynamicBackend : dynamicBackends)
{
+ // Get the id of the dynamic backend
BackendId dynamicBackendId;
try
{
@@ -362,8 +366,22 @@ void DynamicBackendUtils::RegisterDynamicBackendsImpl(BackendRegistry& backendRe
}
// Register the dynamic backend
- backendRegistry.Register(dynamicBackendId, dynamicBackendFactoryFunction);
+ try
+ {
+ backendRegistry.Register(dynamicBackendId, dynamicBackendFactoryFunction);
+ }
+ catch (const InvalidArgumentException& e)
+ {
+ BOOST_LOG_TRIVIAL(warning) << "An error has occurred when registering the dynamic backend \""
+ << dynamicBackendId << "\": " << e.what();
+ continue;
+ }
+
+ // Add the id of the dynamic backend just registered to the list of registered backend ids
+ registeredBackendIds.insert(dynamicBackendId);
}
+
+ return registeredBackendIds;
}
} // namespace armnn