aboutsummaryrefslogtreecommitdiff
path: root/arm_compute
diff options
context:
space:
mode:
authorSheri Zhang <sheri.zhang@arm.com>2021-03-10 22:43:38 +0000
committerSheri Zhang <sheri.zhang@arm.com>2021-03-23 12:14:53 +0000
commit1efed925da927cc47bff6327c66f252b65c660bc (patch)
treeff2c40d579fc832a9a625844e3df5b3d7fcbb44e /arm_compute
parentf9ab9f9ca1bbcac8688980bfd64e26fec2e0e9a2 (diff)
downloadComputeLibrary-1efed925da927cc47bff6327c66f252b65c660bc.tar.gz
Make ClDirectConvolutionKernel stateless
ClDirectorConvolution triggers ClActivation (if enabled) Remove static tuner as the interface need to be changed base on new api. Remove functions in ClScaleKernel specific for static Tuner. Solves: COMPMID-4010 Signed-off-by: Sheri Zhang <sheri.zhang@arm.com> Change-Id: I7861c3462fda323a6fe1891834068a462245cb1b Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5262 Reviewed-by: Sang-Hoon Park <sang-hoon.park@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute')
-rw-r--r--arm_compute/runtime/CL/CLScheduler.h13
-rw-r--r--arm_compute/runtime/CL/functions/CLDirectConvolutionLayer.h25
-rw-r--r--arm_compute/runtime/CL/tuners/BifrostTuner.h44
-rw-r--r--arm_compute/runtime/CL/tuners/MidgardTuner.h44
-rw-r--r--arm_compute/runtime/CL/tuners/Tuners.h56
5 files changed, 18 insertions, 164 deletions
diff --git a/arm_compute/runtime/CL/CLScheduler.h b/arm_compute/runtime/CL/CLScheduler.h
index d3a91da751..41a074089e 100644
--- a/arm_compute/runtime/CL/CLScheduler.h
+++ b/arm_compute/runtime/CL/CLScheduler.h
@@ -165,13 +165,12 @@ private:
/** Flag to ensure symbols initialisation is happening before Scheduler creation */
static std::once_flag _initialize_symbols;
- cl::Context _context;
- cl::CommandQueue _queue;
- GPUTarget _target;
- bool _is_initialised;
- ICLTuner *_cl_tuner;
- std::unique_ptr<ICLTuner> _cl_default_static_tuner;
- CLGEMMHeuristicsHandle *_gemm_heuristics;
+ cl::Context _context;
+ cl::CommandQueue _queue;
+ GPUTarget _target;
+ bool _is_initialised;
+ ICLTuner *_cl_tuner;
+ CLGEMMHeuristicsHandle *_gemm_heuristics;
};
} // namespace arm_compute
#endif /* ARM_COMPUTE_CLSCHEDULER_H */
diff --git a/arm_compute/runtime/CL/functions/CLDirectConvolutionLayer.h b/arm_compute/runtime/CL/functions/CLDirectConvolutionLayer.h
index 0afc9d3f38..6e9e2161b9 100644
--- a/arm_compute/runtime/CL/functions/CLDirectConvolutionLayer.h
+++ b/arm_compute/runtime/CL/functions/CLDirectConvolutionLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2020 Arm Limited.
+ * Copyright (c) 2017-2021 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -33,8 +33,6 @@
namespace arm_compute
{
class CLCompileContext;
-class CLDirectConvolutionLayerKernel;
-class CLFillBorderKernel;
class ICLTensor;
class ITensorInfo;
@@ -43,14 +41,18 @@ class ITensorInfo;
class CLDirectConvolutionLayer : public IFunction
{
public:
- /** Default constructor */
+ /** Constructor */
CLDirectConvolutionLayer();
- /** Prevent instances of this class from being copied */
+ /** Destructor */
+ ~CLDirectConvolutionLayer();
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
CLDirectConvolutionLayer(const CLDirectConvolutionLayer &) = delete;
- /** Prevent instances of this class from being copied */
+ /** Default move constructor */
+ CLDirectConvolutionLayer(CLDirectConvolutionLayer &&);
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
CLDirectConvolutionLayer &operator=(const CLDirectConvolutionLayer &) = delete;
- /** Default destructor */
- ~CLDirectConvolutionLayer();
+ /** Default move assignment operator */
+ CLDirectConvolutionLayer &operator=(CLDirectConvolutionLayer &&);
/** Set the input and output tensors.
*
* @param[in] input Source tensor. 3 lower dimensions represent a single input [width, height, IFM],
@@ -103,11 +105,8 @@ public:
void run() override;
private:
- std::unique_ptr<CLDirectConvolutionLayerKernel> _direct_conv_kernel;
- std::unique_ptr<CLFillBorderKernel> _input_border_handler;
- CLActivationLayer _activationlayer_function;
-
- bool _is_activationlayer_enabled;
+ struct Impl;
+ std::unique_ptr<Impl> _impl;
};
}
#endif /* ARM_COMPUTE_CLDIRECTCONVOLUTIONLAYER_H */
diff --git a/arm_compute/runtime/CL/tuners/BifrostTuner.h b/arm_compute/runtime/CL/tuners/BifrostTuner.h
deleted file mode 100644
index 237693fb88..0000000000
--- a/arm_compute/runtime/CL/tuners/BifrostTuner.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2018-2020 Arm Limited.
- *
- * SPDX-License-Identifier: MIT
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-#ifndef ARM_COMPUTE_TUNERS_BIFROST_TUNER_H
-#define ARM_COMPUTE_TUNERS_BIFROST_TUNER_H
-
-#include "arm_compute/runtime/CL/ICLTuner.h"
-
-namespace arm_compute
-{
-namespace tuners
-{
-/** Bifrost based OpenCL tuner implementation */
-class BifrostTuner final : public ICLTuner
-{
-public:
- // Inherited overriden methods
- void tune_kernel_static(ICLKernel &kernel) override;
- void tune_kernel_dynamic(ICLKernel &kernel) override;
- void tune_kernel_dynamic(ICLKernel &kernel, ITensorPack &tensors) override;
-};
-} // namespace tuners
-} // namespace arm_compute
-#endif /*ARM_COMPUTE_TUNERS_BIFROST_TUNER_H */
diff --git a/arm_compute/runtime/CL/tuners/MidgardTuner.h b/arm_compute/runtime/CL/tuners/MidgardTuner.h
deleted file mode 100644
index 86d46044c2..0000000000
--- a/arm_compute/runtime/CL/tuners/MidgardTuner.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2018-2020 Arm Limited.
- *
- * SPDX-License-Identifier: MIT
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-#ifndef ARM_COMPUTE_TUNERS_MIDGARD_TUNER_H
-#define ARM_COMPUTE_TUNERS_MIDGARD_TUNER_H
-
-#include "arm_compute/runtime/CL/ICLTuner.h"
-
-namespace arm_compute
-{
-namespace tuners
-{
-/** Midgard based OpenCL tuner implementation */
-class MidgardTuner final : public ICLTuner
-{
-public:
- // Inherited overriden methods
- void tune_kernel_static(ICLKernel &kernel) override;
- void tune_kernel_dynamic(ICLKernel &kernel) override;
- void tune_kernel_dynamic(ICLKernel &kernel, ITensorPack &tensors) override;
-};
-} // namespace tuners
-} // namespace arm_compute
-#endif /*ARM_COMPUTE_TUNERS_MIDGARD_TUNER_H */
diff --git a/arm_compute/runtime/CL/tuners/Tuners.h b/arm_compute/runtime/CL/tuners/Tuners.h
deleted file mode 100644
index 3ba9e0071d..0000000000
--- a/arm_compute/runtime/CL/tuners/Tuners.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2018-2020 Arm Limited.
- *
- * SPDX-License-Identifier: MIT
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-#ifndef ARM_COMPUTE_TUNERS_H
-#define ARM_COMPUTE_TUNERS_H
-
-#include "arm_compute/runtime/CL/tuners/BifrostTuner.h"
-#include "arm_compute/runtime/CL/tuners/MidgardTuner.h"
-
-#include <memory>
-
-namespace arm_compute
-{
-namespace tuners
-{
-/** Tuner factory class */
-class TunerFactory final
-{
-public:
- static std::unique_ptr<ICLTuner> create_tuner(GPUTarget target)
- {
- GPUTarget arch = get_arch_from_target(target);
- switch(arch)
- {
- case GPUTarget::BIFROST:
- return std::make_unique<BifrostTuner>();
- case GPUTarget::MIDGARD:
- return std::make_unique<MidgardTuner>();
- default:
- return nullptr;
- }
- }
-};
-} // namespace tuners
-} // namespace arm_compute
-#endif /*ARM_COMPUTE_TUNERS_H */