diff options
author | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-08-15 12:08:06 +0100 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-08-19 12:12:28 +0000 |
commit | 895339092fa9edc0aa59de0309f79bebacc3fa63 (patch) | |
tree | 6e98c570423ff4ff292ebd109e9c3792bdd1a3b9 /src/backends/backendsCommon/DynamicBackendUtils.cpp | |
parent | f800de2140ca55f29bacfa6795df7a28aba3e5ff (diff) | |
download | armnn-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.cpp | 30 |
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 |