aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
diff options
context:
space:
mode:
authorManuel Bottini <manuel.bottini@arm.com>2021-05-18 18:41:56 +0100
committerManuel Bottini <manuel.bottini@arm.com>2021-06-15 16:33:52 +0000
commitc6f4ec377027b21a67061efd21b65609079f98f9 (patch)
treed864f2092fff63790944fea7c8de5be46293bb43 /arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
parent94f799e8f6f605333d40472860fb472e8ba6d83d (diff)
downloadComputeLibrary-c6f4ec377027b21a67061efd21b65609079f98f9.tar.gz
Port CLWinogradConvolutionLayer with ClWinogradConv2d
Port CLWinogradInputTransformKernel Port CLWinogradFilterTransformKernel Port CLWinogradOutputTransformKernel Resolves: COMPMID-4504 Change-Id: I3177dda0b9c2f56b36cb317027e94abe8d47229e Signed-off-by: Manuel Bottini <manuel.bottini@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5680 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h')
-rw-r--r--arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h30
1 files changed, 9 insertions, 21 deletions
diff --git a/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h b/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
index 7b42932f82..4b351267e3 100644
--- a/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
+++ b/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
@@ -25,31 +25,29 @@
#define ARM_COMPUTE_CLWINOGRADCONVOLUTIONLAYER_H
#include "arm_compute/core/Types.h"
-#include "arm_compute/runtime/CL/functions/CLGEMM.h"
-#include "arm_compute/runtime/CL/functions/CLWinogradInputTransform.h"
#include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/IMemoryManager.h"
+
+#include <memory>
namespace arm_compute
{
class CLCompileContext;
-class CLWinogradFilterTransformKernel;
-class CLWinogradOutputTransformKernel;
class ICLTensor;
class ITensorInfo;
/** Basic function to execute Winograd-based convolution on OpenCL. This function calls the following OpenCL functions/kernels:
*
- * -# @ref CLWinogradInputTransform
- * -# @ref CLWinogradFilterTransformKernel (only once)
- * -# @ref CLGEMM
- * -# @ref CLWinogradOutputTransformKernel
+ * -# @ref opencl::ClWinogradConv2d
*
*/
class CLWinogradConvolutionLayer : public IFunction
{
public:
- /** Default constructor */
+ /** Default Constructor */
CLWinogradConvolutionLayer(std::shared_ptr<IMemoryManager> memory_manager = nullptr);
+ /** Default Destructor */
+ ~CLWinogradConvolutionLayer();
/** Prevent instances of this class from being copied (As this class contains pointers) */
CLWinogradConvolutionLayer(const CLWinogradConvolutionLayer &) = delete;
/** Default move constructor */
@@ -58,8 +56,6 @@ public:
CLWinogradConvolutionLayer &operator=(const CLWinogradConvolutionLayer &) = delete;
/** Default move assignment operator */
CLWinogradConvolutionLayer &operator=(CLWinogradConvolutionLayer &&) = default;
- /** Default destructor */
- ~CLWinogradConvolutionLayer();
/** Set the input and output tensors.
*
* Valid data layouts:
@@ -136,16 +132,8 @@ public:
void prepare() override;
private:
- MemoryGroup _memory_group;
- CLGEMM _batched_mm;
- CLWinogradInputTransform _input_transform;
- std::unique_ptr<CLWinogradFilterTransformKernel> _filter_transform;
- std::unique_ptr<CLWinogradOutputTransformKernel> _output_transform;
- CLTensor _input0;
- CLTensor _input1;
- CLTensor _batched_mm_output;
- const ICLTensor *_original_weights;
- bool _is_prepared;
+ struct Impl;
+ std::unique_ptr<Impl> _impl;
};
} // namespace arm_compute
#endif /* ARM_COMPUTE_CLWINOGRADCONVOLUTIONLAYER_H */