From e1314665fcfd2a32d6117a8fc16f67a83db3bb05 Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Mon, 1 Feb 2021 17:09:32 +0000 Subject: Make CL Pooling kernels and functions state-less Resolves COMPMID-4000 Change-Id: I64878f93c033b4928fdefbb964c37c67fdecfaab Signed-off-by: Michele Di Giorgio Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4971 Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins Reviewed-by: Manuel Bottini Reviewed-by: Georgios Pinitas --- arm_compute/runtime/CL/functions/CLPoolingLayer.h | 34 +++++++++++++++++------ 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'arm_compute/runtime/CL/functions/CLPoolingLayer.h') diff --git a/arm_compute/runtime/CL/functions/CLPoolingLayer.h b/arm_compute/runtime/CL/functions/CLPoolingLayer.h index ef1f426c22..ec1c4eb768 100644 --- a/arm_compute/runtime/CL/functions/CLPoolingLayer.h +++ b/arm_compute/runtime/CL/functions/CLPoolingLayer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,25 +24,34 @@ #ifndef ARM_COMPUTE_CLPOOLINGLAYER_H #define ARM_COMPUTE_CLPOOLINGLAYER_H -#include "arm_compute/runtime/CL/ICLSimpleFunction.h" +#include "arm_compute/runtime/IFunction.h" -#include "arm_compute/core/Error.h" #include "arm_compute/core/Types.h" +#include + namespace arm_compute { class CLCompileContext; class ICLTensor; class ITensorInfo; -/** Basic function to simulate a pooling layer with the specified pooling operation. This function calls the following OpenCL kernels: - * - * -# @ref CLFillBorderKernel (executed if padding size is different from zero) - * -# @ref CLPoolingLayerKernel - */ -class CLPoolingLayer : public ICLSimpleFunction +/** Basic function to run @ref opencl::ClPooling */ +class CLPoolingLayer : public IFunction { public: + /** Default Constructor */ + CLPoolingLayer(); + /** Default Destructor */ + ~CLPoolingLayer(); + /** Prevent instances of this class from being copied (As this class contains pointers) */ + CLPoolingLayer(const CLPoolingLayer &) = delete; + /** Default move constructor */ + CLPoolingLayer(CLPoolingLayer &&) = default; + /** Prevent instances of this class from being copied (As this class contains pointers) */ + CLPoolingLayer &operator=(const CLPoolingLayer &) = delete; + /** Default move assignment operator */ + CLPoolingLayer &operator=(CLPoolingLayer &&) = default; /** Set the input and output tensors. * * @param[in,out] input Source tensor. (Written to only when padding != 0) Data types supported: QASYMM8/QASYMM8_SIGNED/F16/F32. @@ -70,6 +79,13 @@ public: * @return a status */ static Status validate(const ITensorInfo *input, const ITensorInfo *output, const PoolingLayerInfo &pool_info, const ITensorInfo *indices = nullptr); + + // Inherited methods overridden: + void run() override; + +private: + struct Impl; + std::unique_ptr _impl; }; } // namespace arm_compute #endif /* ARM_COMPUTE_CLPOOLINGLAYER_H */ -- cgit v1.2.1