Fix NEON/CL CustomConvolution failures
authorManuel Bottini <manuel.bottini@arm.com>
Tue, 26 Jan 2021 12:09:38 +0000 (12:09 +0000)
committerManuel Bottini <manuel.bottini@arm.com>
Wed, 27 Jan 2021 10:32:21 +0000 (10:32 +0000)
Properly handle UNDEFINED border mode as done in the reference

Change-Id: I23b117be3ee5cd0e566f6161681d38493627fc9b
Resolves: COMPMID-4133
Signed-off-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4919
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
src/runtime/CL/functions/CLConvolution.cpp
src/runtime/NEON/functions/NEConvolution.cpp

index 49dae4914664c85fe899c1e29a32e3591deda342..ffc7cda034688aa72445dee34285dbf603870e53 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2020 Arm Limited.
+ * Copyright (c) 2016-2021 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -136,8 +136,9 @@ void CLConvolutionRectangle::configure(ICLTensor *input, ICLTensor *output, cons
 void CLConvolutionRectangle::configure(const CLCompileContext &compile_context, ICLTensor *input, ICLTensor *output, const int16_t *conv, uint32_t rows, uint32_t cols, uint32_t scale,
                                        BorderMode border_mode, uint8_t constant_border_value)
 {
-    auto k = std::make_unique<CLConvolutionRectangleKernel>();
-    k->configure(compile_context, input, output, conv, rows, cols, scale, border_mode == BorderMode::UNDEFINED);
+    border_mode = (border_mode == BorderMode::UNDEFINED) ? BorderMode::CONSTANT : border_mode;
+    auto k      = std::make_unique<CLConvolutionRectangleKernel>();
+    k->configure(compile_context, input, output, conv, rows, cols, scale, false);
     _kernel = std::move(k);
     _border_handler->configure(compile_context, input, _kernel->border_size(), border_mode, PixelValue(constant_border_value));
 }
index 680d8f628fcfc30804c3016391ea1254cbe93de9..ad62a2254a50c4f65ca3342fc4dc8b0ca1a572d3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2020 Arm Limited.
+ * Copyright (c) 2016-2021 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -137,8 +137,9 @@ NEConvolutionRectangle::~NEConvolutionRectangle() = default;
 
 void NEConvolutionRectangle::configure(ITensor *input, ITensor *output, const int16_t *conv, uint32_t rows, uint32_t cols, uint32_t scale, BorderMode border_mode, uint8_t constant_border_value)
 {
-    auto k = std::make_unique<NEConvolutionRectangleKernel>();
-    k->configure(input, output, conv, rows, cols, scale, border_mode == BorderMode::UNDEFINED);
+    border_mode = (border_mode == BorderMode::UNDEFINED) ? BorderMode::CONSTANT : border_mode;
+    auto k      = std::make_unique<NEConvolutionRectangleKernel>();
+    k->configure(input, output, conv, rows, cols, scale, false);
     _kernel = std::move(k);
 
     auto b = std::make_unique<NEFillBorderKernel>();