From dbf5f314f9498afa756e2637251a89a5291abde0 Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Thu, 26 Aug 2021 11:08:01 +0100 Subject: IVGCVSW-6311 Add the pre-import backend capability * Update acl and ref backend capabilities * Add check for AsyncExecution capability in LoadedNetwork * Add new exception for capabilities Signed-off-by: Finn Williams Change-Id: I2f053c845a64f336e96d452793639c6e0d3eaa89 --- .../backendsCommon/test/CompatibilityTests.cpp | 76 ++++++++++++---------- 1 file changed, 43 insertions(+), 33 deletions(-) (limited to 'src/backends/backendsCommon/test') diff --git a/src/backends/backendsCommon/test/CompatibilityTests.cpp b/src/backends/backendsCommon/test/CompatibilityTests.cpp index 34baad9d0c..7b25732daa 100644 --- a/src/backends/backendsCommon/test/CompatibilityTests.cpp +++ b/src/backends/backendsCommon/test/CompatibilityTests.cpp @@ -128,26 +128,27 @@ TEST_CASE("Neon_Cl_DirectCompatibility_Test") TEST_SUITE("BackendCapability") { -#if defined(ARMNNREF_ENABLED) -TEST_CASE("Ref_Backends_Capability_Test") +namespace { - auto refBackend = std::make_unique(); - auto refCapabilities = refBackend->GetCapabilities(); - - CHECK(armnn::HasCapability("NonConstWeights", refCapabilities)); - CHECK(armnn::HasCapability("AsyncExecution", refCapabilities)); - armnn::BackendOptions::BackendOption nonConstWeights{"NonConstWeights", true}; - armnn::BackendOptions::BackendOption AsyncExecution{"AsyncExecution", true}; - - CHECK(armnn::HasCapability(nonConstWeights, refCapabilities)); - CHECK(armnn::HasCapability(AsyncExecution, refCapabilities)); +void CapabilityTestHelper(BackendCapabilities &capabilities, + std::vector> capabilityVector) +{ + for (auto pair : capabilityVector) + { + CHECK_MESSAGE(armnn::HasCapability(pair.first, capabilities), + pair.first << " capability was not been found"); + CHECK_MESSAGE(armnn::HasCapability(BackendOptions::BackendOption{pair.first, pair.second}, capabilities), + pair.first << " capability set incorrectly"); + } } -TEST_CASE("Ref_Backends_Unkown_Capability_Test") +#if defined(ARMNNREF_ENABLED) + +TEST_CASE("Ref_Backends_Unknown_Capability_Test") { - auto refBackend = std::make_unique(); + auto refBackend = std::make_unique(); auto refCapabilities = refBackend->GetCapabilities(); armnn::BackendOptions::BackendOption AsyncExecutionFalse{"AsyncExecution", false}; @@ -167,44 +168,53 @@ TEST_CASE("Ref_Backends_Unkown_Capability_Test") CHECK(!armnn::HasCapability(unkownCapability, refCapabilities)); } +TEST_CASE ("Ref_Backends_Capability_Test") +{ + auto refBackend = std::make_unique(); + auto refCapabilities = refBackend->GetCapabilities(); + + CapabilityTestHelper(refCapabilities, + {{"NonConstWeights", true}, + {"AsyncExecution", true}, + {"ProtectedContentAllocation", false}, + {"ConstantTensorsAsInputs", true}, + {"PreImportIOTensors", false}}); +} + #endif #if defined(ARMCOMPUTENEON_ENABLED) -TEST_CASE("Neon_Backends_Capability_Test") +TEST_CASE ("Neon_Backends_Capability_Test") { auto neonBackend = std::make_unique(); auto neonCapabilities = neonBackend->GetCapabilities(); - CHECK(armnn::HasCapability("NonConstWeights", neonCapabilities)); - CHECK(armnn::HasCapability("AsyncExecution", neonCapabilities)); - - armnn::BackendOptions::BackendOption nonConstWeights{"NonConstWeights", false}; - armnn::BackendOptions::BackendOption AsyncExecution{"AsyncExecution", false}; - - CHECK(armnn::HasCapability(nonConstWeights, neonCapabilities)); - CHECK(armnn::HasCapability(AsyncExecution, neonCapabilities)); + CapabilityTestHelper(neonCapabilities, + {{"NonConstWeights", false}, + {"AsyncExecution", false}, + {"ProtectedContentAllocation", false}, + {"ConstantTensorsAsInputs", false}, + {"PreImportIOTensors", false}}); } #endif #if defined(ARMCOMPUTECL_ENABLED) -TEST_CASE("Cl_Backends_Capability_Test") +TEST_CASE ("Cl_Backends_Capability_Test") { auto clBackend = std::make_unique(); auto clCapabilities = clBackend->GetCapabilities(); - CHECK(armnn::HasCapability("NonConstWeights", clCapabilities)); - CHECK(armnn::HasCapability("AsyncExecution", clCapabilities)); - - armnn::BackendOptions::BackendOption nonConstWeights{"NonConstWeights", false}; - armnn::BackendOptions::BackendOption AsyncExecution{"AsyncExecution", false}; - - CHECK(armnn::HasCapability(nonConstWeights, clCapabilities)); - CHECK(armnn::HasCapability(AsyncExecution, clCapabilities)); + CapabilityTestHelper(clCapabilities, + {{"NonConstWeights", false}, + {"AsyncExecution", false}, + {"ProtectedContentAllocation", true}, + {"ConstantTensorsAsInputs", false}, + {"PreImportIOTensors", false}}); } #endif - +} } -- cgit v1.2.1