aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Davis <keith.davis@arm.com>2022-09-28 17:13:20 +0100
committerColm Donelan <colm.donelan@arm.com>2022-10-04 09:02:08 +0000
commit71ebf5f0b94cbe5ac3abcc6e8de8ce10753eba99 (patch)
treee57f6c4445edf5a7c24ce839491c0d4b30d3eed5
parentcddfc28cc65386541b92dfa4a16321a276dba99d (diff)
downloadarmnn-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
-rw-r--r--src/armnn/LoadedNetwork.cpp7
-rw-r--r--src/armnn/Network.cpp20
-rw-r--r--src/armnn/layers/DebugLayer.cpp5
-rw-r--r--src/armnn/optimizations/RedirectMembersToConstantInputs.hpp2
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.