diff options
author | Keith Davis <keith.davis@arm.com> | 2022-09-28 17:13:20 +0100 |
---|---|---|
committer | Colm Donelan <colm.donelan@arm.com> | 2022-10-04 09:02:08 +0000 |
commit | 71ebf5f0b94cbe5ac3abcc6e8de8ce10753eba99 (patch) | |
tree | e57f6c4445edf5a7c24ce839491c0d4b30d3eed5 /src/armnn | |
parent | cddfc28cc65386541b92dfa4a16321a276dba99d (diff) | |
download | armnn-71ebf5f0b94cbe5ac3abcc6e8de8ce10753eba99.tar.gz |
MLCE-545 INT8 TFLite model execution abnormal
* Fix for Debug mode in ExNet does not work with ConstTensorsAsInputs
* Remove unnecessary assertion with ambiguous message in LoadedNetwork
Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I9cd5d1f811dbbc89072d1190c510bf1b22e3069c
Diffstat (limited to 'src/armnn')
-rw-r--r-- | src/armnn/LoadedNetwork.cpp | 7 | ||||
-rw-r--r-- | src/armnn/Network.cpp | 20 | ||||
-rw-r--r-- | src/armnn/layers/DebugLayer.cpp | 5 | ||||
-rw-r--r-- | src/armnn/optimizations/RedirectMembersToConstantInputs.hpp | 2 |
4 files changed, 14 insertions, 20 deletions
diff --git a/src/armnn/LoadedNetwork.cpp b/src/armnn/LoadedNetwork.cpp index d55b99e10f..40fbde8ac8 100644 --- a/src/armnn/LoadedNetwork.cpp +++ b/src/armnn/LoadedNetwork.cpp @@ -740,13 +740,6 @@ const IWorkloadFactory& LoadedNetwork::GetWorkloadFactory(const Layer& layer) co ARMNN_ASSERT_MSG(workloadFactory, "No workload factory"); - std::string reasonIfUnsupported; - ARMNN_ASSERT_MSG(IWorkloadFactory::IsLayerSupported(layer, - {}, - reasonIfUnsupported, - m_OptimizedNetwork->pOptimizedNetworkImpl->GetModelOptions()), - "Factory does not support layer"); - IgnoreUnused(reasonIfUnsupported); return *workloadFactory; } diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index 3508ee882e..5930805f11 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -1797,6 +1797,17 @@ IOptimizedNetworkPtr Optimize(const Graph& inGraph, throw InvalidArgumentException("Failed to apply the backend-specific optimizations"); } + // Convert constants + { + ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_ConvertConstants"); + Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsFloatToHalf())); + Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsHalfToFloat())); + + // Once the constants are converted we can now safely call RedirectMembersToConstantInputs + Optimizer::Pass(optGraph, MakeOptimizations(RedirectMembersToConstantInputs())); + } + + // This must occur after all topological changes to the graph and any redirection of variables // If the debug flag is set, then insert a DebugLayer after each layer // Doing this after applying the backend optimizations as they might have changed some layers if (options.m_Debug) @@ -1824,15 +1835,6 @@ IOptimizedNetworkPtr Optimize(const Graph& inGraph, optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry); } - // Convert constants - { - ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_ConvertConstants"); - Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsFloatToHalf())); - Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsHalfToFloat())); - - // Once the constants are converted we can now safely call RedirectMembersToConstantInputs - Optimizer::Pass(optGraph, MakeOptimizations(RedirectMembersToConstantInputs())); - } return optNet; } diff --git a/src/armnn/layers/DebugLayer.cpp b/src/armnn/layers/DebugLayer.cpp index 57cf3b7cfd..8342c530b2 100644 --- a/src/armnn/layers/DebugLayer.cpp +++ b/src/armnn/layers/DebugLayer.cpp @@ -8,7 +8,6 @@ #include <armnn/backends/WorkloadData.hpp> #include <armnn/backends/WorkloadFactory.hpp> -#include <armnn/utility/IgnoreUnused.hpp> namespace armnn { @@ -54,9 +53,7 @@ void DebugLayer::ValidateTensorShapesFromInputs() void DebugLayer::ExecuteStrategy(IStrategy& strategy) const { - // by design debug layers are never in input graphs - IgnoreUnused(strategy); - throw armnn::Exception("DebugLayer should never appear in an input graph"); + strategy.ExecuteStrategy(this, GetParameters(), {}, GetName()); } } // namespace armnn diff --git a/src/armnn/optimizations/RedirectMembersToConstantInputs.hpp b/src/armnn/optimizations/RedirectMembersToConstantInputs.hpp index 483377452e..a2bad710e6 100644 --- a/src/armnn/optimizations/RedirectMembersToConstantInputs.hpp +++ b/src/armnn/optimizations/RedirectMembersToConstantInputs.hpp @@ -63,6 +63,8 @@ private: for (unsigned int inputSlotIndex = 1; inputSlotIndex != layerPtr->GetNumInputSlots(); ++inputSlotIndex) { OutputSlot* outputSlot = layerPtr->GetInputSlot(inputSlotIndex).GetConnectedOutputSlot(); + // Debug layers should not be inserted in optimize process yet + ARMNN_ASSERT(outputSlot->GetOwningLayer().GetType() != LayerType::Debug); if (outputSlot->GetOwningLayer().GetType() == LayerType::Constant) { // Get constant layer and redirect base layer member variables. |