From 1a03d76786a59a7d20deabb02f047516e98680d4 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Wed, 21 Feb 2018 14:47:09 +0000 Subject: COMPMID-765: Fix windows in DirectConvLayer and DepthwiseConvLayer Change-Id: I6c68733c8a2ada12aa3994e3e5213d20222df861 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/121637 Reviewed-by: Anthony Barbier Tested-by: Jenkins --- .../NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'src/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.cpp') diff --git a/src/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.cpp b/src/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.cpp index dad4fee837..f5ee608b60 100644 --- a/src/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.cpp +++ b/src/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.cpp @@ -238,6 +238,7 @@ void NEDepthwiseConvolutionLayer3x3Kernel::configure_generic() ARM_COMPUTE_ERROR_ON_MISMATCHING_DIMENSIONS(_output->info()->tensor_shape(), output_shape); const unsigned int conv_stride_x = _conv_info.stride().first; + const unsigned int conv_stride_y = _conv_info.stride().second; const unsigned int conv_pad_top = _conv_info.pad_top(); const unsigned int conv_pad_right = _conv_info.pad_right(); const unsigned int conv_pad_bottom = _conv_info.pad_bottom(); @@ -264,15 +265,10 @@ void NEDepthwiseConvolutionLayer3x3Kernel::configure_generic() // Configure kernel window Window win = calculate_max_window(*_output->info(), Steps(_num_elems_written_per_iteration)); - const unsigned int num_x_steps = (output_shape.x() + _num_elems_written_per_iteration - 1) / _num_elems_written_per_iteration; - const int input_num_elems_processed = get_input_num_elems_processed(_num_elems_written_per_iteration, conv_stride_x); - - AccessWindowStatic input_access(_input->info(), - -conv_pad_left, - -conv_pad_top, - (num_x_steps - 1) * input_num_elems_processed + num_elems_read_per_iteration, - _input->info()->tensor_shape().y() + conv_pad_bottom); - AccessWindowStatic weights_access(_weights->info(), 0, 0, _weights->info()->dimension(0), _weights->info()->dimension(1)); + AccessWindowRectangle input_access(_input->info(), -conv_pad_left, -conv_pad_top, + num_elems_read_per_iteration, 3, + conv_stride_x, conv_stride_y); + AccessWindowStatic weights_access(_weights->info(), 0, 0, 3, 3); AccessWindowHorizontal output_access(_output->info(), 0, _num_elems_written_per_iteration); update_window_and_padding(win, input_access, weights_access, output_access); -- cgit v1.2.1