diff options
author | SiCong Li <sicong.li@arm.com> | 2020-12-01 11:38:03 +0000 |
---|---|---|
committer | SiCong Li <sicong.li@arm.com> | 2020-12-01 17:00:19 +0000 |
commit | 9a6131b79478f83d390edf25ed1c3ad5f6548130 (patch) | |
tree | 5e2caf79e2a30ced20ecee3ad6c01aff51566f63 /src/core/CL/kernels | |
parent | a243205179b0b884d59697fd900253b8d0d96f6a (diff) | |
download | ComputeLibrary-9a6131b79478f83d390edf25ed1c3ad5f6548130.tar.gz |
COMPMID-4026 Fix FP32 CLDirectConvolutionLayer nightly mismatches
The mismatches are caused by out of bound memory access on weight tensor
due to lack of padding in the channel (first in NHWC) dimension.
Signed-off-by: SiCong Li <sicong.li@arm.com>
Change-Id: I5a73f190f8e131c67ed7769f6f716db9d79dc674
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4628
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/CL/kernels')
-rw-r--r-- | src/core/CL/kernels/CLDirectConvolutionLayerKernel.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/CL/kernels/CLDirectConvolutionLayerKernel.cpp b/src/core/CL/kernels/CLDirectConvolutionLayerKernel.cpp index a642eabc4e..8884521794 100644 --- a/src/core/CL/kernels/CLDirectConvolutionLayerKernel.cpp +++ b/src/core/CL/kernels/CLDirectConvolutionLayerKernel.cpp @@ -375,7 +375,7 @@ std::pair<Status, Window> validate_and_configure_window(ITensorInfo *input, ITen AccessWindowStatic input_access(input, 0, -conv_pad_left, ceil_to_multiple(input->dimension(0), num_elems_read_per_iteration_x), ceil_to_multiple(input->dimension(1) + conv_info.pad_right(), num_elems_read_per_iteration_y)); - AccessWindowStatic weights_access(weights, 0, 0, weights->dimension(0), weights->dimension(1)); + AccessWindowStatic weights_access(weights, 0, 0, ceil_to_multiple(weights->dimension(0), num_elems_read_per_iteration_x), weights->dimension(1)); AccessWindowRectangle output_access(output, 0, 0, num_elems_written_per_iteration_x, num_elems_written_per_iteration_y); window_changed = update_window_and_padding(win, input_access, weights_access, output_access); output_access.set_valid_region(win, ValidRegion(Coordinates(), output->tensor_shape())); |