.. index:: pair: group; Convolution .. _doxid-group__dnnl__api__convolution: Convolution =========== .. toctree:: :hidden: struct_dnnl_convolution_backward_data.rst struct_dnnl_convolution_backward_weights.rst struct_dnnl_convolution_forward.rst Overview ~~~~~~~~ A primitive to perform 1D, 2D or 3D convolution. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block // structs struct :ref:`dnnl::convolution_backward_data`; struct :ref:`dnnl::convolution_backward_weights`; struct :ref:`dnnl::convolution_forward`; // global functions :ref:`dnnl_status_t` DNNL_API :ref:`dnnl_convolution_forward_primitive_desc_create`( :ref:`dnnl_primitive_desc_t`* primitive_desc, :ref:`dnnl_engine_t` engine, :ref:`dnnl_prop_kind_t` prop_kind, :ref:`dnnl_alg_kind_t` alg_kind, :ref:`const_dnnl_memory_desc_t` src_desc, :ref:`const_dnnl_memory_desc_t` weights_desc, :ref:`const_dnnl_memory_desc_t` bias_desc, :ref:`const_dnnl_memory_desc_t` dst_desc, const :ref:`dnnl_dims_t` strides, const :ref:`dnnl_dims_t` dilates, const :ref:`dnnl_dims_t` padding_l, const :ref:`dnnl_dims_t` padding_r, :ref:`const_dnnl_primitive_attr_t` attr ); :ref:`dnnl_status_t` DNNL_API :ref:`dnnl_convolution_backward_data_primitive_desc_create`( :ref:`dnnl_primitive_desc_t`* primitive_desc, :ref:`dnnl_engine_t` engine, :ref:`dnnl_alg_kind_t` alg_kind, :ref:`const_dnnl_memory_desc_t` diff_src_desc, :ref:`const_dnnl_memory_desc_t` weights_desc, :ref:`const_dnnl_memory_desc_t` diff_dst_desc, const :ref:`dnnl_dims_t` strides, const :ref:`dnnl_dims_t` dilates, const :ref:`dnnl_dims_t` padding_l, const :ref:`dnnl_dims_t` padding_r, :ref:`const_dnnl_primitive_desc_t` hint_fwd_pd, :ref:`const_dnnl_primitive_attr_t` attr ); :ref:`dnnl_status_t` DNNL_API :ref:`dnnl_convolution_backward_weights_primitive_desc_create`( :ref:`dnnl_primitive_desc_t`* primitive_desc, :ref:`dnnl_engine_t` engine, :ref:`dnnl_alg_kind_t` alg_kind, :ref:`const_dnnl_memory_desc_t` src_desc, :ref:`const_dnnl_memory_desc_t` diff_weights_desc, :ref:`const_dnnl_memory_desc_t` diff_bias_desc, :ref:`const_dnnl_memory_desc_t` diff_dst_desc, const :ref:`dnnl_dims_t` strides, const :ref:`dnnl_dims_t` dilates, const :ref:`dnnl_dims_t` padding_l, const :ref:`dnnl_dims_t` padding_r, :ref:`const_dnnl_primitive_desc_t` hint_fwd_pd, :ref:`const_dnnl_primitive_attr_t` attr ); .. _details-group__dnnl__api__convolution: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ A primitive to perform 1D, 2D or 3D convolution. Supported variants are forward propagation, backward propagation, and weights gradient with or without bias. .. rubric:: See also: :ref:`Convolution ` in developer guide Global Functions ---------------- .. index:: pair: function; dnnl_convolution_forward_primitive_desc_create .. _doxid-group__dnnl__api__convolution_1gab5d114c896caa5c32e0035eaafbd5f40: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`dnnl_status_t` DNNL_API dnnl_convolution_forward_primitive_desc_create( :ref:`dnnl_primitive_desc_t`* primitive_desc, :ref:`dnnl_engine_t` engine, :ref:`dnnl_prop_kind_t` prop_kind, :ref:`dnnl_alg_kind_t` alg_kind, :ref:`const_dnnl_memory_desc_t` src_desc, :ref:`const_dnnl_memory_desc_t` weights_desc, :ref:`const_dnnl_memory_desc_t` bias_desc, :ref:`const_dnnl_memory_desc_t` dst_desc, const :ref:`dnnl_dims_t` strides, const :ref:`dnnl_dims_t` dilates, const :ref:`dnnl_dims_t` padding_l, const :ref:`dnnl_dims_t` padding_r, :ref:`const_dnnl_primitive_attr_t` attr ) Creates a primitive descriptor for a convolution forward propagation primitive. .. note:: Memory descriptors can be initialized with :ref:`dnnl_format_tag_any ` or with format_kind set to :ref:`dnnl_format_kind_any `. Arrays ``strides``, ``dilates``, ``padding_l``, and ``padding_r`` contain values for spatial dimensions only and hence must have the same number of elements as there are spatial dimensions. The order of values is the same as in the tensor: depth (for 3D tensors), height (for 3D and 2D tensors), and width. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - primitive_desc - Output primitive descriptor. * - engine - Engine to use. * - prop_kind - Propagation kind. Possible values are :ref:`dnnl_forward_training ` and :ref:`dnnl_forward_inference `. * - alg_kind - Convolution algorithm. Possible values are :ref:`dnnl_convolution_direct `, :ref:`dnnl_convolution_winograd `, :ref:`dnnl_convolution_auto `. * - src_desc - Source memory descriptor. * - weights_desc - Weights memory descriptor. * - bias_desc - Bias memory descriptor. Passing NULL, a zero memory descriptor, or a memory descriptor with format_kind set to :ref:`dnnl_format_kind_undef ` disables the bias term. * - dst_desc - Destination memory descriptor. * - strides - Array of strides for spatial dimension. * - dilates - Array of dilations for spatial dimension. A zero value means no dilation in the corresponding dimension. * - padding_l - Array of padding values for low indices for each spatial dimension ``([[front,] top,] left)``. * - padding_r - Array of padding values for high indices for each spatial dimension ``([[back,] bottom,] right)``. Can be NULL in which case padding is considered to be symmetrical. * - attr - Primitive attributes (can be NULL). .. rubric:: Returns: :ref:`dnnl_success ` on success and a status describing the error otherwise. .. index:: pair: function; dnnl_convolution_backward_data_primitive_desc_create .. _doxid-group__dnnl__api__convolution_1ga182e20bc7eae9df73d186acf869471da: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`dnnl_status_t` DNNL_API dnnl_convolution_backward_data_primitive_desc_create( :ref:`dnnl_primitive_desc_t`* primitive_desc, :ref:`dnnl_engine_t` engine, :ref:`dnnl_alg_kind_t` alg_kind, :ref:`const_dnnl_memory_desc_t` diff_src_desc, :ref:`const_dnnl_memory_desc_t` weights_desc, :ref:`const_dnnl_memory_desc_t` diff_dst_desc, const :ref:`dnnl_dims_t` strides, const :ref:`dnnl_dims_t` dilates, const :ref:`dnnl_dims_t` padding_l, const :ref:`dnnl_dims_t` padding_r, :ref:`const_dnnl_primitive_desc_t` hint_fwd_pd, :ref:`const_dnnl_primitive_attr_t` attr ) Creates a primitive descriptor for a convolution backward propagation primitive. .. note:: Memory descriptors can be initialized with :ref:`dnnl_format_tag_any ` or with format_kind set to :ref:`dnnl_format_kind_any `. Arrays ``strides``, ``dilates``, ``padding_l``, and ``padding_r`` contain values for spatial dimensions only and hence must have the same number of elements as there are spatial dimensions. The order of values is the same as in the tensor: depth (for 3D tensors), height (for 3D and 2D tensors), and width. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - primitive_desc - Output primitive descriptor. * - engine - Engine to use. * - alg_kind - Convolution algorithm. Possible values are :ref:`dnnl_convolution_direct `, :ref:`dnnl_convolution_winograd `, :ref:`dnnl_convolution_auto `. * - diff_src_desc - Diff source memory descriptor. * - weights_desc - Weights memory descriptor. * - diff_dst_desc - Diff destination memory descriptor. * - strides - Array of strides for spatial dimension. * - dilates - Array of dilations for spatial dimension. A zero value means no dilation in the corresponding dimension. * - padding_l - Array of padding values for low indices for each spatial dimension ``([[front,] top,] left)``. * - padding_r - Array of padding values for high indices for each spatial dimension ``([[back,] bottom,] right)``. Can be NULL in which case padding is considered to be symmetrical. * - hint_fwd_pd - Primitive descriptor for a respective forward propagation primitive. * - attr - Primitive attributes (can be NULL). .. rubric:: Returns: :ref:`dnnl_success ` on success and a status describing the error otherwise. .. index:: pair: function; dnnl_convolution_backward_weights_primitive_desc_create .. _doxid-group__dnnl__api__convolution_1gadfb6988120ff24a0b62d9e8a7443ba09: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`dnnl_status_t` DNNL_API dnnl_convolution_backward_weights_primitive_desc_create( :ref:`dnnl_primitive_desc_t`* primitive_desc, :ref:`dnnl_engine_t` engine, :ref:`dnnl_alg_kind_t` alg_kind, :ref:`const_dnnl_memory_desc_t` src_desc, :ref:`const_dnnl_memory_desc_t` diff_weights_desc, :ref:`const_dnnl_memory_desc_t` diff_bias_desc, :ref:`const_dnnl_memory_desc_t` diff_dst_desc, const :ref:`dnnl_dims_t` strides, const :ref:`dnnl_dims_t` dilates, const :ref:`dnnl_dims_t` padding_l, const :ref:`dnnl_dims_t` padding_r, :ref:`const_dnnl_primitive_desc_t` hint_fwd_pd, :ref:`const_dnnl_primitive_attr_t` attr ) Creates a primitive descriptor for a convolution weights gradient primitive. .. note:: Memory descriptors can be initialized with :ref:`dnnl_format_tag_any ` or with format_kind set to :ref:`dnnl_format_kind_any `. Arrays ``strides``, ``dilates``, ``padding_l``, and ``padding_r`` contain values for spatial dimensions only and hence must have the same number of elements as there are spatial dimensions. The order of values is the same as in the tensor: depth (for 3D tensors), height (for 3D and 2D tensors), and width. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - primitive_desc - Output primitive descriptor. * - engine - Engine to use. * - alg_kind - Convolution algorithm. Possible values are :ref:`dnnl_convolution_direct `, :ref:`dnnl_convolution_winograd `, :ref:`dnnl_convolution_auto `. * - src_desc - Source memory descriptor. * - diff_weights_desc - Diff weights memory descriptor. * - diff_bias_desc - Diff bias memory descriptor. Passing NULL, a zero memory descriptor, or a memory descriptor with format_kind set to :ref:`dnnl_format_kind_undef ` disables the bias term. * - diff_dst_desc - Diff destination memory descriptor. * - strides - Array of strides for spatial dimension. * - dilates - Array of dilations for spatial dimension. A zero value means no dilation in the corresponding dimension. * - padding_l - Array of padding values for low indices for each spatial dimension ``([[front,] top,] left)``. * - padding_r - Array of padding values for high indices for each spatial dimension ``([[back,] bottom,] right)``. Can be NULL in which case padding is considered to be symmetrical. * - hint_fwd_pd - Primitive descriptor for a respective forward propagation primitive. * - attr - Primitive attributes (can be NULL). .. rubric:: Returns: :ref:`dnnl_success ` on success and a status describing the error otherwise.