From 0c58f99495844c6ace629116451dae00e8c27418 Mon Sep 17 00:00:00 2001 From: Manuel Bottini Date: Thu, 3 Dec 2020 16:26:35 +0000 Subject: Remove OpenCL padding CLScaleKernel Resolves COMPMID-3918 Change-Id: I970b1eaf2ae6f2f5a8cfc318cd1a3dfd3ba36fdb Signed-off-by: Manuel Bottini Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4668 Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins Reviewed-by: Giorgio Arena --- src/runtime/CL/functions/CLScale.cpp | 37 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 23 deletions(-) (limited to 'src/runtime/CL/functions/CLScale.cpp') diff --git a/src/runtime/CL/functions/CLScale.cpp b/src/runtime/CL/functions/CLScale.cpp index 6658957e07..aab5d9ba73 100644 --- a/src/runtime/CL/functions/CLScale.cpp +++ b/src/runtime/CL/functions/CLScale.cpp @@ -27,20 +27,17 @@ #include "arm_compute/core/Error.h" #include "arm_compute/core/Validate.h" #include "arm_compute/runtime/CL/CLScheduler.h" -#include "src/core/CL/kernels/CLFillBorderKernel.h" -#include "src/core/CL/kernels/CLScaleKernel.h" namespace arm_compute { -void CLScale::configure(ICLTensor *input, ICLTensor *output, const ScaleKernelInfo &info) +CLScale::CLScale() + : _border_handler(std::make_unique()), _kernel() { - configure(CLKernelLibrary::get().get_compile_context(), input, output, info); } -void CLScale::configure(ICLTensor *input, ICLTensor *output, InterpolationPolicy policy, BorderMode border_mode, PixelValue constant_border_value, SamplingPolicy sampling_policy, bool use_padding, - bool align_corners) +void CLScale::configure(ICLTensor *input, ICLTensor *output, const ScaleKernelInfo &info) { - configure(CLKernelLibrary::get().get_compile_context(), input, output, ScaleKernelInfo{ policy, border_mode, constant_border_value, sampling_policy, use_padding, align_corners }); + configure(CLKernelLibrary::get().get_compile_context(), input, output, info); } void CLScale::configure(const CLCompileContext &compile_context, ICLTensor *input, ICLTensor *output, const ScaleKernelInfo &info) @@ -53,30 +50,24 @@ void CLScale::configure(const CLCompileContext &compile_context, ICLTensor *inpu // Tune kernels CLScheduler::get().tune_kernel_static(*_kernel); - auto border_mode_to_use = info.border_mode; - // In the case of NHWC we can't have undefined border mode as this would require to access elements outside z dimension, - // so we treat it like border constant. - if(info.border_mode == BorderMode::UNDEFINED && input->info()->data_layout() == DataLayout::NHWC) + if(input->info()->data_layout() == DataLayout::NCHW && !_kernel->border_size().empty()) { - border_mode_to_use = BorderMode::CONSTANT; + _border_handler->configure(compile_context, input, _kernel->border_size(), info.border_mode, info.constant_border_value); } - _border_handler->configure(compile_context, input, _kernel->border_size(), border_mode_to_use, info.constant_border_value); } -void CLScale::configure(const CLCompileContext &compile_context, ICLTensor *input, ICLTensor *output, InterpolationPolicy policy, BorderMode border_mode, PixelValue constant_border_value, - SamplingPolicy sampling_policy, bool use_padding, bool align_corners) +Status CLScale::validate(const ITensorInfo *input, const ITensorInfo *output, const ScaleKernelInfo &info) { - configure(compile_context, input, output, ScaleKernelInfo{ policy, border_mode, constant_border_value, sampling_policy, use_padding, align_corners }); + return CLScaleKernel::validate(input, output, info); } -Status CLScale::validate(const ITensorInfo *input, const ITensorInfo *output, InterpolationPolicy policy, BorderMode border_mode, PixelValue constant_border_value, SamplingPolicy sampling_policy, - bool use_padding, bool align_corners) +void CLScale::run() { - return CLScale::validate(input, output, ScaleKernelInfo{ policy, border_mode, constant_border_value, sampling_policy, use_padding, align_corners }); + if(!_kernel->border_size().empty()) + { + CLScheduler::get().enqueue(*_border_handler, false); + } + CLScheduler::get().enqueue(*_kernel); } -Status CLScale::validate(const ITensorInfo *input, const ITensorInfo *output, const ScaleKernelInfo &info) -{ - return CLScaleKernel::validate(input, output, info); -} } // namespace arm_compute -- cgit v1.2.1