diff options
Diffstat (limited to 'src/backends/neon')
-rw-r--r-- | src/backends/neon/NeonBackend.cpp | 37 |
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; } |