21.02
|
Neon kernel to perform Winograd weights transform. More...
#include <NEWinogradConvolutionLayerKernel.h>
Public Member Functions | |
NEWinogradLayerTransformWeightsKernel (const NEWinogradLayerTransformWeightsKernel &)=delete | |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
NEWinogradLayerTransformWeightsKernel & | operator= (const NEWinogradLayerTransformWeightsKernel &)=delete |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
NEWinogradLayerTransformWeightsKernel (NEWinogradLayerTransformWeightsKernel &&)=default | |
Allow instances of this class to be moved. More... | |
NEWinogradLayerTransformWeightsKernel & | operator= (NEWinogradLayerTransformWeightsKernel &&)=default |
Allow instances of this class to be moved. More... | |
~NEWinogradLayerTransformWeightsKernel ()=default | |
Default destructor. More... | |
NEWinogradLayerTransformWeightsKernel () | |
Default constructor. More... | |
const char * | name () const override |
Name of the kernel. More... | |
unsigned int | get_weight_storage_size (int num_output_channels, int num_input_channels) const override |
Determine how much memory (in units of T) to allocate for the transformed weights. More... | |
int | get_matrix_stride (int num_output_channels, int num_input_channels) const override |
Gets the stride between matrices in the input worspace. More... | |
void | run (const Window &window, const ThreadInfo &info) override |
Execute the kernel on the passed window. More... | |
bool | is_parallelisable () const override |
Indicates whether or not the kernel is parallelisable. More... | |
Public Member Functions inherited from INEWinogradLayerTransformWeightsKernel | |
INEWinogradLayerTransformWeightsKernel (const INEWinogradLayerTransformWeightsKernel &)=default | |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
INEWinogradLayerTransformWeightsKernel & | operator= (const INEWinogradLayerTransformWeightsKernel &)=default |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
INEWinogradLayerTransformWeightsKernel (INEWinogradLayerTransformWeightsKernel &&)=default | |
Allow instances of this class to be moved. More... | |
INEWinogradLayerTransformWeightsKernel & | operator= (INEWinogradLayerTransformWeightsKernel &&)=default |
Allow instances of this class to be moved. More... | |
INEWinogradLayerTransformWeightsKernel () | |
virtual | ~INEWinogradLayerTransformWeightsKernel () |
virtual void | configure (const ITensor *weights_hwio, ITensor *output, const int matrix_stride, const int num_output_channels, const int num_input_channels)=0 |
Configure the weights transform kernel. More... | |
Public Member Functions inherited from ICPPKernel | |
virtual | ~ICPPKernel ()=default |
Default destructor. More... | |
virtual void | run_nd (const Window &window, const ThreadInfo &info, const Window &thread_locator) |
legacy compatibility layer for implemantions which do not support thread_locator In these cases we simply narrow the interface down the legacy version More... | |
virtual void | run_op (ITensorPack &tensors, const Window &window, const ThreadInfo &info) |
Execute the kernel on the passed window. More... | |
Public Member Functions inherited from IKernel | |
IKernel () | |
Constructor. More... | |
virtual | ~IKernel ()=default |
Destructor. More... | |
virtual BorderSize | border_size () const |
The size of the border for that kernel. More... | |
const Window & | window () const |
The maximum window the kernel can be executed on. More... | |
Static Public Member Functions | |
static Status | validate (const ITensorInfo *input, const ITensorInfo *output, const WinogradInfo &winograd_info) |
Static function to check if given info will lead to a valid configuration of NEWinogradLayerTransformWeightsKernel. More... | |
Static Public Member Functions inherited from INEWinogradLayerTransformWeightsKernel | |
static Status | validate (const ITensorInfo *input, const ITensorInfo *weights) |
Static function to check if given info will lead to a valid configuration of NEWinogradLayerTransformWeightsKernel. More... | |
Neon kernel to perform Winograd weights transform.
Definition at line 500 of file NEWinogradConvolutionLayerKernel.h.
|
delete |
Prevent instances of this class from being copied (As this class contains pointers)
|
default |
Allow instances of this class to be moved.
|
default |
Default destructor.
Default constructor.
Definition at line 203 of file NEWinogradConvolutionLayerKernel.cpp.
|
overridevirtual |
Gets the stride between matrices in the input worspace.
[in] | num_output_channels | Number of output feature maps. |
[in] | num_input_channels | Number of input feature maps. |
Implements INEWinogradLayerTransformWeightsKernel.
Definition at line 209 of file NEWinogradConvolutionLayerKernel.cpp.
References INEWinogradLayerTransformWeightsKernel::configure(), and Window::DimX.
|
overridevirtual |
Determine how much memory (in units of T) to allocate for the transformed weights.
[in] | num_output_channels | Number of output feature maps. |
[in] | num_input_channels | Number of input feature maps. |
Implements INEWinogradLayerTransformWeightsKernel.
Definition at line 194 of file NEWinogradConvolutionLayerKernel.cpp.
References arm_compute::test::validation::shape.
|
overridevirtual |
Indicates whether or not the kernel is parallelisable.
If the kernel is parallelisable then the window returned by window() can be split into sub-windows which can then be run in parallel.
If the kernel is not parallelisable then only the window returned by window() can be passed to run()
Reimplemented from IKernel.
Definition at line 253 of file NEWinogradConvolutionLayerKernel.cpp.
|
inlineoverridevirtual |
Name of the kernel.
Implements ICPPKernel.
Definition at line 516 of file NEWinogradConvolutionLayerKernel.h.
References INEWinogradLayerTransformInputKernel::configure(), INEWinogradLayerTransformInputKernel::get_matrix_stride(), arm_compute::test::validation::info, arm_compute::test::validation::input, IKernel::is_parallelisable(), ICPPKernel::run(), arm_compute::validate(), IKernel::window(), and arm_compute::test::validation::winograd_info.
|
delete |
Prevent instances of this class from being copied (As this class contains pointers)
|
default |
Allow instances of this class to be moved.
|
overridevirtual |
Execute the kernel on the passed window.
[in] | window | Region on which to execute the kernel. (Must be a region of the window returned by window()) |
[in] | info | Info about executing thread and CPU. |
Reimplemented from ICPPKernel.
Definition at line 238 of file NEWinogradConvolutionLayerKernel.cpp.
References ARM_COMPUTE_ERROR_ON_UNCONFIGURED_KERNEL, ARM_COMPUTE_UNUSED, ITensor::buffer(), Window::Dimension::end(), arm_gemm::roundup(), Window::Dimension::start(), and Window::x().
|
static |
Static function to check if given info will lead to a valid configuration of NEWinogradLayerTransformWeightsKernel.
[in] | input | Source tensor info. The input is a 4D tensor with dimensions [kernel_x, kernel_y, IFM, OFM] (NCHW data layout). kernel_x must be 3 and equal to kernel_y. Data types supported: F16/F32. |
[in] | output | Destination tensor info. The output is a 3D tensor with dimensions [OFM, IFM, 16] or [OFM, IFM, 36]. Data type supported: same as input |
[in] | winograd_info | Contains Winograd's information described in WinogradInfo |
Definition at line 259 of file NEWinogradConvolutionLayerKernel.cpp.
References ARM_COMPUTE_RETURN_ON_ERROR, ICloneable< T >::clone(), and arm_compute::test::validation::winograd_info.