diff options
author | Pablo Tello <pablo.tello@arm.com> | 2018-08-22 11:40:33 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:54:54 +0000 |
commit | bda6e4b51bc4045c97100bb9d562164ba7c6c28f (patch) | |
tree | 8924bbae251b34dc35a4ffc9a9ece79d28c4415b /arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h | |
parent | 238c97cd8bfdb6dfce5c4eefed6aac4d9bb59457 (diff) | |
download | ComputeLibrary-bda6e4b51bc4045c97100bb9d562164ba7c6c28f.tar.gz |
COMPMID-1247:Integrate kernel size 1x3 & 3x1 support in NEWinogradLayer.
Change-Id: I6fe198881230e49864c841a3b2366ccf2a9247f9
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/145210
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h')
-rw-r--r-- | arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h b/arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h index 9cdd69a70a..c71c105d92 100644 --- a/arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEWinogradConvolutionLayerKernel.h @@ -159,7 +159,7 @@ public: void run(const Window &window, const ThreadInfo &info) override; /** Winograd base kernel */ - using WinogradBase = winograd::WinogradGEMM<OutputTileRows, OutputTileCols, KernelCols, KernelCols>; + using WinogradBase = winograd::WinogradGEMM<OutputTileRows, OutputTileCols, KernelRows, KernelCols>; /** Winograd convolution kernel */ using WinogradConv = typename WinogradBase::template Convolution<T, T>; @@ -360,6 +360,21 @@ template <typename T> class INEWinogradLayerTransformWeightsKernel : public INEKernel { public: + /** Prevent instances of this class from being copied (As this class contains pointers) */ + INEWinogradLayerTransformWeightsKernel(const INEWinogradLayerTransformWeightsKernel &) = default; + /** Prevent instances of this class from being copied (As this class contains pointers) */ + INEWinogradLayerTransformWeightsKernel &operator=(const INEWinogradLayerTransformWeightsKernel &) = default; + /** Allow instances of this class to be moved */ + INEWinogradLayerTransformWeightsKernel(INEWinogradLayerTransformWeightsKernel &&) = default; + /** Allow instances of this class to be moved */ + INEWinogradLayerTransformWeightsKernel &operator=(INEWinogradLayerTransformWeightsKernel &&) = default; + + INEWinogradLayerTransformWeightsKernel() + { + } + virtual ~INEWinogradLayerTransformWeightsKernel() + { + } /** Determine how much memory (in units of T) to allocate for the * transformed weights. * @@ -388,9 +403,14 @@ public: virtual void configure(const ITensor *weights_hwio, ITensor *output, const int matrix_stride, const int num_output_channels, const int num_input_channels) = 0; - virtual ~INEWinogradLayerTransformWeightsKernel() - { - } + /** Static function to check if given info will lead to a valid configuration of @ref NEWinogradLayerTransformWeightsKernel + * + * @param[in] input First tensor input info. Data types supported: F32. + * @param[in] weights Weights tensor info. Data types supported: same as @p input. + * + * @return a status + */ + static Status validate(const ITensorInfo *input, const ITensorInfo *weights); }; /** NEON kernel to perform Winograd weights transform. */ |