From a638f101bcb51008932f922fe0a5cef28633bc66 Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Mon, 24 Jul 2023 17:42:47 +0100 Subject: IVGCVSW-7907 Model cannot use Subtensors * On Neon we cannot remove a Reshape if it's connected to a SplitterLayer. * Removed clause 5 in SplitterLayer which could erroneously prevent the use of Subtensors in certain circumstances. Signed-off-by: Mike Kelly Change-Id: I437eb5d3ede25329a4d11d12c3fb1aec2e76efb6 Signed-off-by: Mike Kelly --- src/armnn/layers/SplitterLayer.cpp | 5 +---- src/backends/neon/NeonBackend.cpp | 5 ++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/armnn/layers/SplitterLayer.cpp b/src/armnn/layers/SplitterLayer.cpp index 2e75139fb4..f8a2ae0e62 100644 --- a/src/armnn/layers/SplitterLayer.cpp +++ b/src/armnn/layers/SplitterLayer.cpp @@ -130,14 +130,11 @@ void SplitterLayer::CreateTensors(const TensorHandleFactoryRegistry& registry, // 2) the same TensorHandleFactory is used for input and split layer output // 3) the output does not go to a Constant layer or input layer // 4) if split along x or y (2 innermost dimensions) and the next layers do not require padding - // 5) neither the input nor the outputs have an Overridden TensorInfo if (parentInfo.IsTypeSpaceMatch(info) && //(1) factoryId == slot->GetTensorHandleFactoryId() && //(2) GetOutputSlot(i).GetConnection(0)->GetOwningLayer().GetType() != LayerType::Constant && //(3) GetOutputSlot(i).GetConnection(0)->GetOwningLayer().GetType() != LayerType::Input && //(3) - canUseSubTensorOnXorY && //(4) - !GetOutputSlot(i).GetConnection(0)->IsTensorInfoOverridden() && //(5) - !GetInputSlot(0).IsTensorInfoOverridden()) //(5) + canUseSubTensorOnXorY) //(4) { ARMNN_NO_DEPRECATE_WARN_BEGIN return factory.CreateSubTensorHandle(*inputData, diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp index 5fd1202659..3a398e03e6 100644 --- a/src/backends/neon/NeonBackend.cpp +++ b/src/backends/neon/NeonBackend.cpp @@ -516,9 +516,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph { continue; } - // Cannot remove a Reshape if it's connected to a SplitterLayer through a Tensor that has more than - // 4 dimensions - if (ConnectedToLayerType(baseLayer, LayerType::Splitter, 4)) + // Cannot remove a Reshape if it's connected to a SplitterLayer + if (ConnectedToLayerType(baseLayer, LayerType::Splitter)) { continue; } -- cgit v1.2.1