aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/CL/functions
diff options
context:
space:
mode:
authorManuel Bottini <manuel.bottini@arm.com>2020-12-03 16:26:35 +0000
committerManuel Bottini <manuel.bottini@arm.com>2020-12-18 13:36:07 +0000
commit0c58f99495844c6ace629116451dae00e8c27418 (patch)
tree709fe9b3088626a135aec253ca20ede21d2c870f /src/runtime/CL/functions
parent2567adfc881049fefada9be523347b4f384e6d27 (diff)
downloadComputeLibrary-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/functions')
-rw-r--r--src/runtime/CL/functions/CLScale.cpp37
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