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 --- src/core/NEON/kernels/NEDirectConvolutionLayerKernel.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/core/NEON/kernels/NEDirectConvolutionLayerKernel.cpp') diff --git a/src/core/NEON/kernels/NEDirectConvolutionLayerKernel.cpp b/src/core/NEON/kernels/NEDirectConvolutionLayerKernel.cpp index 4dc186a8a7..285ec2d0a0 100644 --- a/src/core/NEON/kernels/NEDirectConvolutionLayerKernel.cpp +++ b/src/core/NEON/kernels/NEDirectConvolutionLayerKernel.cpp @@ -1053,8 +1053,8 @@ std::pair validate_and_configure_window(ITensorInfo *input, ITen // Calculate right and bottom border unsigned int kernel_size = weights->dimension(0); const int conv_stride_x = std::get<0>(conv_info.stride()); + const int conv_stride_y = std::get<1>(conv_info.stride()); const int input_width = input->dimension(0); - const int input_height = input->dimension(1); switch(kernel_size) { @@ -1135,8 +1135,12 @@ std::pair validate_and_configure_window(ITensorInfo *input, ITen border_size.right = conv_pad_right; border_size.bottom = conv_pad_bottom; - Window win = calculate_max_window(*output, Steps(num_elems_written_per_iteration)); - AccessWindowStatic input_access(input, -conv_pad_left, -conv_pad_top, input_width + conv_pad_right, input_height + conv_pad_bottom); + // Configure window + Window win = calculate_max_window(*output, Steps(num_elems_written_per_iteration)); + + AccessWindowRectangle input_access(input, -conv_pad_left, -conv_pad_top, + num_elems_read_per_iteration, kernel_size, + conv_stride_x, conv_stride_y); AccessWindowStatic weights_access(weights, 0, 0, num_weight_elems_read_per_row, kernel_size); AccessWindowHorizontal output_access(output, 0, num_elems_written_per_iteration); bool window_changed = update_window_and_padding(win, input_access, weights_access, output_access); -- cgit v1.2.1