aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/NeonBackend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon/NeonBackend.cpp')
-rw-r--r--src/backends/neon/NeonBackend.cpp37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 150bc345db..240456f44b 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -136,11 +136,20 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
OptimizationViews optimizationViews;
auto it = subgraph.end();
+ std::map<LayerGuid, Layer*> untouched;
while (it != subgraph.begin())
{
--it;
Layer& base = **it;
+ untouched.insert({base.GetGuid(), &base});
+ }
+
+ it = subgraph.end();
+ while (it != subgraph.begin())
+ {
+ --it;
+ Layer& base = **it;
if ((base.GetType() == LayerType::DepthwiseConvolution2d || base.GetType() == LayerType::Convolution2d
|| base.GetType() == LayerType::BatchNormalization || base.GetType() == LayerType::FullyConnected
@@ -174,9 +183,7 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
if (baseLayer->GetParameters().m_BiasEnabled)
{
- biases = GetOverriddenDataType(baseLayer->m_Bias->GetTensorInfo(),
- GetOptionalBiasTypeFromWeightsType(
- baseLayer->m_Weight->GetTensorInfo().GetDataType()));
+ biases = baseLayer->m_Bias->GetTensorInfo();
}
arm_compute::Status status = NeonConvolution2dWorkloadValidate(
@@ -195,6 +202,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::DepthwiseConvolution2d)
@@ -206,9 +215,7 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
if (baseLayer->GetParameters().m_BiasEnabled)
{
- biases = GetOverriddenDataType(baseLayer->m_Bias->GetTensorInfo(),
- GetOptionalBiasTypeFromWeightsType(
- baseLayer->m_Weight->GetTensorInfo().GetDataType()));
+ biases = baseLayer->m_Bias->GetTensorInfo();
}
arm_compute::Status status = NeonDepthwiseConvolutionWorkloadValidate(
@@ -226,6 +233,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::FullyConnected)
@@ -247,6 +256,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::BatchNormalization)
@@ -278,6 +289,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
replacementLayer->m_Gamma = std::move(baseLayer->m_Gamma);
replacementLayer->m_Mean = std::move(baseLayer->m_Mean);
replacementLayer->m_Variance = std::move(baseLayer->m_Variance);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::Addition)
@@ -297,6 +310,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::Division)
@@ -316,6 +331,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::Multiplication)
@@ -335,6 +352,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
else if (base.GetType() == LayerType::Subtraction)
@@ -354,6 +373,8 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
activationLayer,
activationDesc,
name);
+ untouched.erase(baseLayer->GetGuid());
+ untouched.erase(activationLayer->GetGuid());
}
}
}
@@ -367,6 +388,10 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
{
optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph));
}
+ else
+ {
+ ReportUntouchedLayers(optimizationViews, untouched);
+ }
return optimizationViews;
}