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/test/DynamicBackendTests.hpp | |
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/test/DynamicBackendTests.hpp')
-rw-r--r-- | src/backends/backendsCommon/test/DynamicBackendTests.hpp | 65 |
1 files changed, 57 insertions, 8 deletions
diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp index 74ef6f1ba7..e225124e01 100644 --- a/src/backends/backendsCommon/test/DynamicBackendTests.hpp +++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp @@ -79,10 +79,11 @@ public: return GetBackendPathsImpl(path); } - static void RegisterDynamicBackendsImplTest(armnn::BackendRegistry& backendRegistry, - const std::vector<armnn::DynamicBackendPtr>& dynamicBackends) + static armnn::BackendIdSet RegisterDynamicBackendsImplTest( + armnn::BackendRegistry& backendRegistry, + const std::vector<armnn::DynamicBackendPtr>& dynamicBackends) { - RegisterDynamicBackendsImpl(backendRegistry, dynamicBackends); + return RegisterDynamicBackendsImpl(backendRegistry, dynamicBackends); } }; @@ -896,12 +897,15 @@ void RegisterSingleDynamicBackendTestImpl() BackendVersion dynamicBackendVersion = dynamicBackends[0]->GetBackendVersion(); BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatible(dynamicBackendVersion)); - TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, dynamicBackends); + BackendIdSet registeredBackendIds = TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, + dynamicBackends); BOOST_TEST(backendRegistry.Size() == 1); + BOOST_TEST(registeredBackendIds.size() == 1); BackendIdSet backendIds = backendRegistry.GetBackendIds(); BOOST_TEST(backendIds.size() == 1); BOOST_TEST((backendIds.find(dynamicBackendId) != backendIds.end())); + BOOST_TEST((registeredBackendIds.find(dynamicBackendId) != registeredBackendIds.end())); auto dynamicBackendFactoryFunction = backendRegistry.GetFactory(dynamicBackendId); BOOST_TEST((dynamicBackendFactoryFunction != nullptr)); @@ -960,14 +964,19 @@ void RegisterMultipleDynamicBackendsTestImpl() BackendRegistry backendRegistry; BOOST_TEST(backendRegistry.Size() == 0); - TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, dynamicBackends); + BackendIdSet registeredBackendIds = TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, + dynamicBackends); BOOST_TEST(backendRegistry.Size() == 3); + BOOST_TEST(registeredBackendIds.size() == 3); BackendIdSet backendIds = backendRegistry.GetBackendIds(); BOOST_TEST(backendIds.size() == 3); BOOST_TEST((backendIds.find(dynamicBackendId1) != backendIds.end())); BOOST_TEST((backendIds.find(dynamicBackendId2) != backendIds.end())); BOOST_TEST((backendIds.find(dynamicBackendId3) != backendIds.end())); + BOOST_TEST((registeredBackendIds.find(dynamicBackendId1) != registeredBackendIds.end())); + BOOST_TEST((registeredBackendIds.find(dynamicBackendId2) != registeredBackendIds.end())); + BOOST_TEST((registeredBackendIds.find(dynamicBackendId3) != registeredBackendIds.end())); for (size_t i = 0; i < dynamicBackends.size(); i++) { @@ -1036,8 +1045,10 @@ void RegisterMultipleInvalidDynamicBackendsTestImpl() BOOST_TEST(backendRegistry.Size() == 0); // Check that no dynamic backend got registered - TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, dynamicBackends); + BackendIdSet registeredBackendIds = TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, + dynamicBackends); BOOST_TEST(backendRegistry.Size() == 0); + BOOST_TEST(registeredBackendIds.empty()); } void RegisterMixedDynamicBackendsTestImpl() @@ -1165,14 +1176,17 @@ void RegisterMixedDynamicBackendsTestImpl() "TestValid5" }; - TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, dynamicBackends); + BackendIdSet registeredBackendIds = TestDynamicBackendUtils::RegisterDynamicBackendsImplTest(backendRegistry, + dynamicBackends); BOOST_TEST(backendRegistry.Size() == expectedRegisteredbackendIds.size()); + BOOST_TEST(registeredBackendIds.size() == expectedRegisteredbackendIds.size()); BackendIdSet backendIds = backendRegistry.GetBackendIds(); BOOST_TEST(backendIds.size() == expectedRegisteredbackendIds.size()); for (const BackendId& expectedRegisteredbackendId : expectedRegisteredbackendIds) { BOOST_TEST((backendIds.find(expectedRegisteredbackendId) != backendIds.end())); + BOOST_TEST((registeredBackendIds.find(expectedRegisteredbackendId) != registeredBackendIds.end())); auto dynamicBackendFactoryFunction = backendRegistry.GetFactory(expectedRegisteredbackendId); BOOST_TEST((dynamicBackendFactoryFunction != nullptr)); @@ -1190,10 +1204,16 @@ void RuntimeEmptyTestImpl() // Swapping the backend registry storage for testing TestBackendRegistry testBackendRegistry; + const BackendRegistry& backendRegistry = BackendRegistryInstance(); + BOOST_TEST(backendRegistry.Size() == 0); + IRuntime::CreationOptions creationOptions; IRuntimePtr runtime = IRuntime::Create(creationOptions); - const BackendRegistry& backendRegistry = BackendRegistryInstance(); + const DeviceSpec& deviceSpec = *boost::polymorphic_downcast<const DeviceSpec*>(&runtime->GetDeviceSpec()); + BackendIdSet supportedBackendIds = deviceSpec.GetSupportedBackends(); + BOOST_TEST(supportedBackendIds.empty()); + BOOST_TEST(backendRegistry.Size() == 0); } @@ -1228,6 +1248,14 @@ void RuntimeDynamicBackendsTestImpl() { BOOST_TEST((backendIds.find(expectedRegisteredbackendId) != backendIds.end())); } + + const DeviceSpec& deviceSpec = *boost::polymorphic_downcast<const DeviceSpec*>(&runtime->GetDeviceSpec()); + BackendIdSet supportedBackendIds = deviceSpec.GetSupportedBackends(); + BOOST_TEST(supportedBackendIds.size() == expectedRegisteredbackendIds.size()); + for (const BackendId& expectedRegisteredbackendId : expectedRegisteredbackendIds) + { + BOOST_TEST((supportedBackendIds.find(expectedRegisteredbackendId) != supportedBackendIds.end())); + } } void RuntimeDuplicateDynamicBackendsTestImpl() @@ -1261,6 +1289,14 @@ void RuntimeDuplicateDynamicBackendsTestImpl() { BOOST_TEST((backendIds.find(expectedRegisteredbackendId) != backendIds.end())); } + + const DeviceSpec& deviceSpec = *boost::polymorphic_downcast<const DeviceSpec*>(&runtime->GetDeviceSpec()); + BackendIdSet supportedBackendIds = deviceSpec.GetSupportedBackends(); + BOOST_TEST(supportedBackendIds.size() == expectedRegisteredbackendIds.size()); + for (const BackendId& expectedRegisteredbackendId : expectedRegisteredbackendIds) + { + BOOST_TEST((supportedBackendIds.find(expectedRegisteredbackendId) != supportedBackendIds.end())); + } } void RuntimeInvalidDynamicBackendsTestImpl() @@ -1282,6 +1318,10 @@ void RuntimeInvalidDynamicBackendsTestImpl() const BackendRegistry& backendRegistry = BackendRegistryInstance(); BOOST_TEST(backendRegistry.Size() == 0); + + const DeviceSpec& deviceSpec = *boost::polymorphic_downcast<const DeviceSpec*>(&runtime->GetDeviceSpec()); + BackendIdSet supportedBackendIds = deviceSpec.GetSupportedBackends(); + BOOST_TEST(supportedBackendIds.empty()); } void RuntimeInvalidOverridePathTestImpl() @@ -1298,6 +1338,10 @@ void RuntimeInvalidOverridePathTestImpl() const BackendRegistry& backendRegistry = BackendRegistryInstance(); BOOST_TEST(backendRegistry.Size() == 0); + + const DeviceSpec& deviceSpec = *boost::polymorphic_downcast<const DeviceSpec*>(&runtime->GetDeviceSpec()); + BackendIdSet supportedBackendIds = deviceSpec.GetSupportedBackends(); + BOOST_TEST(supportedBackendIds.empty()); } void CreateReferenceDynamicBackendTestImpl() @@ -1330,6 +1374,11 @@ void CreateReferenceDynamicBackendTestImpl() BackendIdSet backendIds = backendRegistry.GetBackendIds(); BOOST_TEST((backendIds.find("CpuRef") != backendIds.end())); + const DeviceSpec& deviceSpec = *boost::polymorphic_downcast<const DeviceSpec*>(&runtime->GetDeviceSpec()); + BackendIdSet supportedBackendIds = deviceSpec.GetSupportedBackends(); + BOOST_TEST(supportedBackendIds.size() == 1); + BOOST_TEST((supportedBackendIds.find("CpuRef") != supportedBackendIds.end())); + // Get the factory function auto referenceDynamicBackendFactoryFunction = backendRegistry.GetFactory("CpuRef"); BOOST_TEST((referenceDynamicBackendFactoryFunction != nullptr)); |