diff options
author | Finn Williams <Finn.Williams@arm.com> | 2021-08-26 11:08:01 +0100 |
---|---|---|
committer | Finn Williams <Finn.Williams@arm.com> | 2021-08-26 11:09:32 +0100 |
commit | dbf5f314f9498afa756e2637251a89a5291abde0 (patch) | |
tree | 2d974a44df4998291e2f2b9dc17c5d1e905f898e /src/backends | |
parent | 4e62750a2171a7bccf0c9c37514d07d3d222d1d5 (diff) | |
download | armnn-dbf5f314f9498afa756e2637251a89a5291abde0.tar.gz |
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 <Finn.Williams@arm.com>
Change-Id: I2f053c845a64f336e96d452793639c6e0d3eaa89
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/backendsCommon/test/CompatibilityTests.cpp | 76 | ||||
-rw-r--r-- | src/backends/cl/ClBackend.hpp | 4 | ||||
-rw-r--r-- | src/backends/neon/NeonBackend.hpp | 5 | ||||
-rw-r--r-- | src/backends/reference/RefBackend.hpp | 4 |
4 files changed, 53 insertions, 36 deletions
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<RefBackend>(); - 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<std::pair<std::string, bool>> 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<RefBackend>(); + auto refBackend = std::make_unique<RefBackend>(); 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<RefBackend>(); + 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<NeonBackend>(); 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<ClBackend>(); 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 - +} } diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp index 4f68c3bcc7..570d301616 100644 --- a/src/backends/cl/ClBackend.hpp +++ b/src/backends/cl/ClBackend.hpp @@ -26,7 +26,9 @@ const BackendCapabilities gpuAccCapabilities("GpuAcc", { {"NonConstWeights", false}, {"AsyncExecution", false}, - {"ProtectedContentAllocation", true} + {"ProtectedContentAllocation", true}, + {"ConstantTensorsAsInputs", false}, + {"PreImportIOTensors", false} }); class ClBackend : public IBackendInternal diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp index eae57320cc..0ae28d8a71 100644 --- a/src/backends/neon/NeonBackend.hpp +++ b/src/backends/neon/NeonBackend.hpp @@ -13,7 +13,10 @@ namespace armnn const BackendCapabilities cpuAccCapabilities("GpuAcc", { {"NonConstWeights", false}, - {"AsyncExecution", false} + {"AsyncExecution", false}, + {"ProtectedContentAllocation", false}, + {"ConstantTensorsAsInputs", false}, + {"PreImportIOTensors", false} }); diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp index 2855957e31..1a79d7090a 100644 --- a/src/backends/reference/RefBackend.hpp +++ b/src/backends/reference/RefBackend.hpp @@ -13,7 +13,9 @@ const BackendCapabilities cpuRefCapabilities("CpuRef", { {"NonConstWeights", true}, {"AsyncExecution", true}, - {"ConstantTensorsAsInputs", true} + {"ProtectedContentAllocation", false}, + {"ConstantTensorsAsInputs", true}, + {"PreImportIOTensors", false} }); const std::set<armnn::BackendCapability> oldCpuRefCapabilities { |