From b158fba3d2724abab70706f04069da6fc9146429 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Wed, 5 Jul 2017 16:50:24 +0100 Subject: COMPMID-417: Fix output access window in ChannelExtract Kernels. Change-Id: I0349ef7205e316d85a01e83e86016310143f8886 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/79820 Tested-by: Kaizen Reviewed-by: Moritz Pflanzer --- src/core/CL/kernels/CLChannelExtractKernel.cpp | 11 +++++------ src/core/NEON/kernels/NEChannelExtractKernel.cpp | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/core/CL/kernels/CLChannelExtractKernel.cpp b/src/core/CL/kernels/CLChannelExtractKernel.cpp index 541153316a..be046cf0a1 100644 --- a/src/core/CL/kernels/CLChannelExtractKernel.cpp +++ b/src/core/CL/kernels/CLChannelExtractKernel.cpp @@ -71,12 +71,12 @@ void CLChannelExtractKernel::configure(const ICLTensor *input, Channel channel, // Configure window Window win = calculate_max_window(*input->info(), Steps(_num_elems_processed_per_iteration)); AccessWindowHorizontal input_access(input->info(), 0, _num_elems_processed_per_iteration); - AccessWindowRectangle output_access(input->info(), 0, 0, _num_elems_processed_per_iteration, 1, 1.f / _subsampling, 1.f / _subsampling); + AccessWindowRectangle output_access(output->info(), 0, 0, _num_elems_processed_per_iteration, 1, 1.f / _subsampling, 1.f / _subsampling); update_window_and_padding(win, input_access, output_access); ValidRegion input_valid_region = input->info()->valid_region(); - output_access.set_valid_region(win, ValidRegion(std::move(input_valid_region.anchor), output->info()->tensor_shape())); + output_access.set_valid_region(win, ValidRegion(input_valid_region.anchor, output->info()->tensor_shape())); ICLKernel::configure(win); } @@ -115,11 +115,10 @@ void CLChannelExtractKernel::configure(const ICLMultiImage *input, Channel chann // Configure window Window win = calculate_max_window(*input_plane->info(), Steps(_num_elems_processed_per_iteration)); - AccessWindowHorizontal output_access(input_plane->info(), 0, _num_elems_processed_per_iteration); + AccessWindowHorizontal input_access(input_plane->info(), 0, _num_elems_processed_per_iteration); + AccessWindowHorizontal output_access(output->info(), 0, _num_elems_processed_per_iteration); - update_window_and_padding(win, - AccessWindowHorizontal(input_plane->info(), 0, _num_elems_processed_per_iteration), - output_access); + update_window_and_padding(win, input_access, output_access); output_access.set_valid_region(win, input_plane->info()->valid_region()); diff --git a/src/core/NEON/kernels/NEChannelExtractKernel.cpp b/src/core/NEON/kernels/NEChannelExtractKernel.cpp index ebc4b85c98..dc31685240 100644 --- a/src/core/NEON/kernels/NEChannelExtractKernel.cpp +++ b/src/core/NEON/kernels/NEChannelExtractKernel.cpp @@ -148,12 +148,11 @@ void NEChannelExtractKernel::configure(const ITensor *input, Channel channel, IT _input = input; _output = output; - Window win = calculate_max_window(*input->info(), Steps(num_elems_processed_per_iteration)); - AccessWindowRectangle output_access(input->info(), 0, 0, num_elems_processed_per_iteration, 1, 1.f / subsampling, 1.f / subsampling); + Window win = calculate_max_window(*input->info(), Steps(num_elems_processed_per_iteration)); + AccessWindowHorizontal input_access(input->info(), 0, num_elems_processed_per_iteration); + AccessWindowRectangle output_access(output->info(), 0, 0, num_elems_processed_per_iteration, 1, 1.f / subsampling, 1.f / subsampling); - update_window_and_padding(win, - AccessWindowHorizontal(input->info(), 0, num_elems_processed_per_iteration), - output_access); + update_window_and_padding(win, input_access, output_access); ValidRegion input_valid_region = input->info()->valid_region(); @@ -257,8 +256,8 @@ void NEChannelExtractKernel::configure(const IMultiImage *input, Channel channel _output = output; Window win = calculate_max_window(*_input->info(), Steps(num_elems_processed_per_iteration)); - AccessWindowHorizontal output_access(output->info(), 0, num_elems_processed_per_iteration); AccessWindowHorizontal input_access(_input->info(), 0, num_elems_processed_per_iteration); + AccessWindowHorizontal output_access(output->info(), 0, num_elems_processed_per_iteration); update_window_and_padding(win, input_access, output_access); output_access.set_valid_region(win, _input->info()->valid_region()); -- cgit v1.2.1