diff options
author | Manuel Bottini <manuel.bottini@arm.com> | 2020-12-03 16:26:35 +0000 |
---|---|---|
committer | Manuel Bottini <manuel.bottini@arm.com> | 2020-12-18 13:36:07 +0000 |
commit | 0c58f99495844c6ace629116451dae00e8c27418 (patch) | |
tree | 709fe9b3088626a135aec253ca20ede21d2c870f /src/runtime/CL | |
parent | 2567adfc881049fefada9be523347b4f384e6d27 (diff) | |
download | ComputeLibrary-0c58f99495844c6ace629116451dae00e8c27418.tar.gz |
Remove OpenCL padding CLScaleKernel
Resolves COMPMID-3918
Change-Id: I970b1eaf2ae6f2f5a8cfc318cd1a3dfd3ba36fdb
Signed-off-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4668
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Diffstat (limited to 'src/runtime/CL')
-rw-r--r-- | src/runtime/CL/functions/CLScale.cpp | 37 |
1 files changed, 14 insertions, 23 deletions
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<CLFillBorderKernel>()), _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 |