From 87350f47084d2b69daa11c3b1c7eb47e02260063 Mon Sep 17 00:00:00 2001 From: Manuel Bottini Date: Tue, 15 Sep 2020 13:03:34 +0100 Subject: COMPMID-3144: Remove padding from NEDirectConvolutionLayerKernel Change-Id: I22b907eebfbe037e6e1c7bf604172f4709a9cbed Signed-off-by: Manuel Bottini Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4082 Tested-by: Arm Jenkins Comments-Addressed: Arm Jenkins Reviewed-by: Michele Di Giorgio Reviewed-by: Georgios Pinitas --- .../NEON/functions/NEDirectConvolutionLayer.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp') diff --git a/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp b/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp index da7e771aaf..fe545905d5 100644 --- a/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp @@ -28,14 +28,11 @@ #include "arm_compute/core/Validate.h" #include "arm_compute/runtime/NEON/NEScheduler.h" -#include -#include - namespace arm_compute { NEDirectConvolutionLayer::NEDirectConvolutionLayer(std::shared_ptr memory_manager) : _memory_group(std::move(memory_manager)), _output_stage_kernel(), _conv_kernel(), _input_border_handler(), _activationlayer_function(), _accumulator(), _has_bias(false), - _is_activationlayer_enabled(false), _dim_split(Window::DimZ) + _is_activationlayer_enabled(false), _dim_split(Window::DimZ), _is_padding_required() { } @@ -59,9 +56,13 @@ void NEDirectConvolutionLayer::configure(ITensor *input, const ITensor *weights, { _output_stage_kernel.configure(output, bias); } + _is_padding_required = !_conv_kernel.border_size().empty(); - // Add zero padding XY - _input_border_handler.configure(input, _conv_kernel.border_size(), BorderMode::CONSTANT, PixelValue(static_cast(0.f))); + if(_is_padding_required) + { + // Add zero padding XY + _input_border_handler.configure(input, _conv_kernel.border_size(), BorderMode::CONSTANT, PixelValue(static_cast(0.f))); + } //Configure Activation Layer _is_activationlayer_enabled = act_info.enabled(); @@ -104,10 +105,12 @@ Status NEDirectConvolutionLayer::validate(const ITensorInfo *input, const ITenso void NEDirectConvolutionLayer::run() { - NEScheduler::get().schedule(&_input_border_handler, Window::DimZ); - MemoryGroupResourceScope scope_mg(_memory_group); + if(_is_padding_required) + { + NEScheduler::get().schedule(&_input_border_handler, Window::DimZ); + } NEScheduler::get().schedule(&_conv_kernel, _dim_split); if(_has_bias) { -- cgit v1.2.1