diff options
author | Sadik Armagan <sadik.armagan@arm.com> | 2021-03-25 07:46:55 +0000 |
---|---|---|
committer | Sadik Armagan <sadik.armagan@arm.com> | 2021-03-25 07:46:55 +0000 |
commit | f0a6dec75832604d5ab18242dc216852821a8279 (patch) | |
tree | ff25e64c62c63975a54abd16a8bff744be70d7c0 /src/armnn/BackendHelper.cpp | |
parent | 16fb1a2d9c1d3d80c0f0b6ab549919fbabd2a0b9 (diff) | |
download | armnn-f0a6dec75832604d5ab18242dc216852821a8279.tar.gz |
IVGCVSW-5736 and IVGCVSW-5743 'NonConstWeights: Update front-end and TfLiteDelegate support for FullyConnected Operator'
* Added front-end support for non-const weights for FULLY_CONNECTED operator
* Added FULLY_CONNECTED end-to-end test
* Updated FULLY_CONNECTED operator support in TfLite Arm NN Delegate for non-const weights
* Updated the version numbers
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: Iffa5b9aa9297aca4c02d923cce4636c88ac21faa
Diffstat (limited to 'src/armnn/BackendHelper.cpp')
-rw-r--r-- | src/armnn/BackendHelper.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/armnn/BackendHelper.cpp b/src/armnn/BackendHelper.cpp index 1467366323..1c926f4d30 100644 --- a/src/armnn/BackendHelper.cpp +++ b/src/armnn/BackendHelper.cpp @@ -23,7 +23,21 @@ LayerSupportHandle GetILayerSupportByBackendId(const armnn::BackendId& backend) auto factoryFunc = backendRegistry.GetFactory(backend); auto backendObject = factoryFunc(); - return LayerSupportHandle(backendObject->GetLayerSupport()); + return LayerSupportHandle(backendObject->GetLayerSupport(), backend); +} + +/// Convenience function to check a capability on a backend +bool IsCapabilitySupported(const armnn::BackendId& backend, armnn::BackendCapability capability) +{ + bool hasCapability = false; + auto const& backendRegistry = armnn::BackendRegistryInstance(); + if (backendRegistry.IsBackendRegistered(backend)) + { + auto factoryFunc = backendRegistry.GetFactory(backend); + auto backendObject = factoryFunc(); + hasCapability = backendObject->HasCapability(capability); + } + return hasCapability; } bool LayerSupportHandle::IsBackendRegistered() const @@ -293,6 +307,16 @@ bool LayerSupportHandle::IsFullyConnectedSupported(const TensorInfo& input, const FullyConnectedDescriptor& descriptor, Optional<std::string&> reasonIfUnsupported) { + if(!descriptor.m_ConstantWeights && !m_BackendId.IsUndefined()) + { + bool result = false; + result = IsCapabilitySupported(m_BackendId, BackendCapability::NonConstWeights); + if (!result) + { + return result; + } + } + return m_LayerSupport->IsFullyConnectedSupported(input, output, weights, |