aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2021-05-26 18:38:12 +0100
committerFinn Williams <Finn.Williams@arm.com>2021-06-09 17:18:10 +0100
commitb9af86ea42568ade799ee5529137e4756977b6c6 (patch)
tree261003078fd2191b22ee7465e07668cbed666553 /src/backends/backendsCommon
parent5b1bcc93820b442bc4035c1e030a8d4a0983df91 (diff)
downloadarmnn-b9af86ea42568ade799ee5529137e4756977b6c6.tar.gz
IVGCVSW-5855 Refactor the reporting of capabilities from backends
Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: I05fc331a8e91bdcb6b8a2f32cfb555060fc5d797
Diffstat (limited to 'src/backends/backendsCommon')
-rw-r--r--src/backends/backendsCommon/test/CMakeLists.txt6
-rw-r--r--src/backends/backendsCommon/test/CompatibilityTests.cpp61
2 files changed, 56 insertions, 11 deletions
diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt
index 98b800bda2..6313bd5cc9 100644
--- a/src/backends/backendsCommon/test/CMakeLists.txt
+++ b/src/backends/backendsCommon/test/CMakeLists.txt
@@ -13,6 +13,7 @@ list(APPEND armnnBackendsCommonUnitTests_sources
CommonTestUtils.cpp
CommonTestUtils.hpp
ComparisonEndToEndTestImpl.hpp
+ CompatibilityTests.cpp
DataLayoutUtils.hpp
DataTypeUtils.hpp
DefaultAsyncExecuteTest.cpp
@@ -182,11 +183,6 @@ if (ARMNNREF)
)
endif()
-if(ARMCOMPUTENEON AND ARMCOMPUTECL)
- list(APPEND armnnBackendsCommonUnitTests_sources
- CompatibilityTests.cpp)
-endif()
-
add_library(armnnBackendsCommonUnitTests OBJECT ${armnnBackendsCommonUnitTests_sources})
target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/backendsCommon/test/CompatibilityTests.cpp b/src/backends/backendsCommon/test/CompatibilityTests.cpp
index 0f889f416c..ed00088549 100644
--- a/src/backends/backendsCommon/test/CompatibilityTests.cpp
+++ b/src/backends/backendsCommon/test/CompatibilityTests.cpp
@@ -8,6 +8,7 @@
#include <cl/ClBackend.hpp>
#include <neon/NeonBackend.hpp>
#include <reference/RefBackend.hpp>
+#include <armnn/BackendHelper.hpp>
#include <Network.hpp>
@@ -18,6 +19,7 @@ using namespace armnn;
BOOST_AUTO_TEST_SUITE(BackendsCompatibility, * boost::unit_test::disabled())
+#if defined(ARMCOMPUTENEON_ENABLED)
BOOST_AUTO_TEST_CASE(Neon_Cl_DirectCompatibility_Test)
{
auto neonBackend = std::make_unique<NeonBackend>();
@@ -114,7 +116,7 @@ BOOST_AUTO_TEST_CASE(Neon_Cl_DirectCompatibility_Test)
});
BOOST_TEST(importCount == 0);
}
-
+#endif
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(BackendCapability)
@@ -124,9 +126,38 @@ BOOST_AUTO_TEST_SUITE(BackendCapability)
BOOST_AUTO_TEST_CASE(Ref_Backends_Capability_Test)
{
auto refBackend = std::make_unique<RefBackend>();
- BOOST_CHECK(refBackend->HasCapability(armnn::BackendCapability::NonConstWeights));
+ auto refCapabilities = refBackend->GetCapabilities();
- BOOST_CHECK(!refBackend->HasCapability(armnn::BackendCapability::AsyncExecution));
+ BOOST_CHECK(armnn::HasCapability("NonConstWeights", refCapabilities));
+ BOOST_CHECK(armnn::HasCapability("AsyncExecution", refCapabilities));
+
+ armnn::BackendOptions::BackendOption nonConstWeights{"NonConstWeights", true};
+ armnn::BackendOptions::BackendOption AsyncExecution{"AsyncExecution", true};
+
+ BOOST_CHECK(armnn::HasCapability(nonConstWeights, refCapabilities));
+ BOOST_CHECK(armnn::HasCapability(AsyncExecution, refCapabilities));
+}
+
+BOOST_AUTO_TEST_CASE(Ref_Backends_Unkown_Capability_Test)
+{
+ auto refBackend = std::make_unique<RefBackend>();
+ auto refCapabilities = refBackend->GetCapabilities();
+
+ armnn::BackendOptions::BackendOption AsyncExecutionFalse{"AsyncExecution", false};
+ BOOST_CHECK(!armnn::HasCapability(AsyncExecutionFalse, refCapabilities));
+
+ armnn::BackendOptions::BackendOption AsyncExecutionInt{"AsyncExecution", 50};
+ BOOST_CHECK(!armnn::HasCapability(AsyncExecutionFalse, refCapabilities));
+
+ armnn::BackendOptions::BackendOption AsyncExecutionFloat{"AsyncExecution", 0.0f};
+ BOOST_CHECK(!armnn::HasCapability(AsyncExecutionFloat, refCapabilities));
+
+ armnn::BackendOptions::BackendOption AsyncExecutionString{"AsyncExecution", "true"};
+ BOOST_CHECK(!armnn::HasCapability(AsyncExecutionString, refCapabilities));
+
+ BOOST_CHECK(!armnn::HasCapability("Telekinesis", refCapabilities));
+ armnn::BackendOptions::BackendOption unkownCapability{"Telekinesis", true};
+ BOOST_CHECK(!armnn::HasCapability(unkownCapability, refCapabilities));
}
#endif
@@ -136,7 +167,16 @@ BOOST_AUTO_TEST_CASE(Ref_Backends_Capability_Test)
BOOST_AUTO_TEST_CASE(Neon_Backends_Capability_Test)
{
auto neonBackend = std::make_unique<NeonBackend>();
- BOOST_CHECK(!neonBackend->HasCapability(armnn::BackendCapability::NonConstWeights));
+ auto neonCapabilities = neonBackend->GetCapabilities();
+
+ BOOST_CHECK(armnn::HasCapability("NonConstWeights", neonCapabilities));
+ BOOST_CHECK(armnn::HasCapability("AsyncExecution", neonCapabilities));
+
+ armnn::BackendOptions::BackendOption nonConstWeights{"NonConstWeights", false};
+ armnn::BackendOptions::BackendOption AsyncExecution{"AsyncExecution", false};
+
+ BOOST_CHECK(armnn::HasCapability(nonConstWeights, neonCapabilities));
+ BOOST_CHECK(armnn::HasCapability(AsyncExecution, neonCapabilities));
}
#endif
@@ -145,8 +185,17 @@ BOOST_AUTO_TEST_CASE(Neon_Backends_Capability_Test)
BOOST_AUTO_TEST_CASE(Cl_Backends_Capability_Test)
{
- auto clBackend = std::make_unique<ClBackend>();
- BOOST_CHECK(!clBackend->HasCapability(armnn::BackendCapability::NonConstWeights));
+ auto clBackend = std::make_unique<ClBackend>();
+ auto clCapabilities = clBackend->GetCapabilities();
+
+ BOOST_CHECK(armnn::HasCapability("NonConstWeights", clCapabilities));
+ BOOST_CHECK(armnn::HasCapability("AsyncExecution", clCapabilities));
+
+ armnn::BackendOptions::BackendOption nonConstWeights{"NonConstWeights", false};
+ armnn::BackendOptions::BackendOption AsyncExecution{"AsyncExecution", false};
+
+ BOOST_CHECK(armnn::HasCapability(nonConstWeights, clCapabilities));
+ BOOST_CHECK(armnn::HasCapability(AsyncExecution, clCapabilities));
}
#endif