oneAPI Deep Neural Network Library (oneDNN)
Performance library for Deep Learning
1.96.0
Convolution

A primitive to perform 1D, 2D or 3D convolution. More...

Classes

struct  dnnl::convolution_forward
 Convolution forward propagation primitive. More...
 
struct  dnnl::convolution_backward_data
 Convolution backward propagation primitive. More...
 
struct  dnnl::convolution_backward_weights
 Convolution weights gradient primitive. More...
 
struct  dnnl_convolution_desc_t
 A descriptor of a convolution operation. More...
 

Functions

dnnl_status_t DNNL_API dnnl_convolution_forward_desc_init (dnnl_convolution_desc_t *conv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
 Initializes a descriptor for a convolution forward propagation primitive. More...
 
dnnl_status_t DNNL_API dnnl_dilated_convolution_forward_desc_init (dnnl_convolution_desc_t *conv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
 Initializes a descriptor for a dilated convolution forward propagation primitive. More...
 
dnnl_status_t DNNL_API dnnl_convolution_backward_data_desc_init (dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
 Initializes a descriptor for a convolution backward propagation primitive. More...
 
dnnl_status_t DNNL_API dnnl_dilated_convolution_backward_data_desc_init (dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
 Initializes a descriptor for a dilated convolution backward propagation primitive. More...
 
dnnl_status_t DNNL_API dnnl_convolution_backward_weights_desc_init (dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
 Initializes a descriptor for a convolution weights gradient primitive. More...
 
dnnl_status_t DNNL_API dnnl_dilated_convolution_backward_weights_desc_init (dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
 Initializes a descriptor for a dilated convolution weights gradient primitive. More...
 

Detailed Description

A primitive to perform 1D, 2D or 3D convolution.

Supported variants are forward propagation, backward propagation, and weights gradient with or without bias.

See also
Convolution in developer guide

Function Documentation

◆ dnnl_convolution_forward_desc_init()

dnnl_status_t DNNL_API dnnl_convolution_forward_desc_init ( dnnl_convolution_desc_t conv_desc,
dnnl_prop_kind_t  prop_kind,
dnnl_alg_kind_t  alg_kind,
const dnnl_memory_desc_t src_desc,
const dnnl_memory_desc_t weights_desc,
const dnnl_memory_desc_t bias_desc,
const dnnl_memory_desc_t dst_desc,
const dnnl_dims_t  strides,
const dnnl_dims_t  padding_l,
const dnnl_dims_t  padding_r 
)

Initializes a descriptor for a convolution forward propagation primitive.

Note
Memory descriptors can be initialized with dnnl_format_tag_any or with format_kind set to dnnl_format_kind_any.

Arrays strides, 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.

Parameters
conv_descOutput descriptor for a convolution primitive.
prop_kindPropagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference.
alg_kindConvolution algorithm. Possible values are dnnl_convolution_direct, dnnl_convolution_winograd, dnnl_convolution_auto.
src_descSource memory descriptor.
weights_descWeights memory descriptor.
bias_descBias memory descriptor. Passing NULL, a zero memory descriptor, or a memory descriptor with format_kind set to dnnl_format_kind_undef disables the bias term.
dst_descDestination memory descriptor.
stridesArray of strides for spatial dimension.
padding_lArray of padding values for low indices for each spatial dimension ([[front,] top,] left).
padding_rArray of padding values for high indices for each spatial dimension ([[back,] bottom,] right). Can be NULL in which case padding is assumed to be symmetrical.
Returns
dnnl_success on success and a status describing the error otherwise.
Examples:
cnn_inference_f32.c, and cpu_cnn_training_f32.c.

◆ dnnl_dilated_convolution_forward_desc_init()

dnnl_status_t DNNL_API dnnl_dilated_convolution_forward_desc_init ( dnnl_convolution_desc_t conv_desc,
dnnl_prop_kind_t  prop_kind,
dnnl_alg_kind_t  alg_kind,
const dnnl_memory_desc_t src_desc,
const dnnl_memory_desc_t weights_desc,
const dnnl_memory_desc_t bias_desc,
const dnnl_memory_desc_t dst_desc,
const dnnl_dims_t  strides,
const dnnl_dims_t  dilates,
const dnnl_dims_t  padding_l,
const dnnl_dims_t  padding_r 
)

Initializes a descriptor for a dilated convolution forward propagation primitive.

Note
Memory descriptors can be initialized with dnnl_format_tag_any or with format_kind set to 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.

Parameters
conv_descOutput descriptor for a convolution primitive.
prop_kindPropagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference.
alg_kindConvolution algorithm. Possible values are dnnl_convolution_direct, dnnl_convolution_winograd, dnnl_convolution_auto.
src_descSource memory descriptor.
weights_descWeights memory descriptor.
bias_descBias memory descriptor. Passing NULL, a zero memory descriptor, or a memory descriptor with format_kind set to dnnl_format_kind_undef disables the bias term.
dst_descDestination memory descriptor.
stridesArray of strides for spatial dimension.
dilatesArray of dilations for spatial dimension. A zero value means no dilation in the corresponding dimension.
padding_lArray of padding values for low indices for each spatial dimension ([[front,] top,] left).
padding_rArray 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.
Returns
dnnl_success on success and a status describing the error otherwise.

◆ dnnl_convolution_backward_data_desc_init()

dnnl_status_t DNNL_API dnnl_convolution_backward_data_desc_init ( dnnl_convolution_desc_t conv_desc,
dnnl_alg_kind_t  alg_kind,
const dnnl_memory_desc_t diff_src_desc,
const dnnl_memory_desc_t weights_desc,
const dnnl_memory_desc_t diff_dst_desc,
const dnnl_dims_t  strides,
const dnnl_dims_t  padding_l,
const dnnl_dims_t  padding_r 
)

Initializes a descriptor for a convolution backward propagation primitive.

Note
Memory descriptors can be initialized with dnnl_format_tag_any or with format_kind set to dnnl_format_kind_any.

Arrays strides, 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.

Parameters
conv_descOutput descriptor for a convolution primitive.
alg_kindConvolution algorithm. Possible values are dnnl_convolution_direct, dnnl_convolution_winograd, dnnl_convolution_auto.
diff_src_descDiff source memory descriptor.
weights_descWeights memory descriptor.
diff_dst_descDiff destination memory descriptor.
stridesArray of strides for spatial dimension.
padding_lArray of padding values for low indices for each spatial dimension ([[front,] top,] left).
padding_rArray of padding values for high indices for each spatial dimension ([[back,] bottom,] right). Can be NULL in which case padding is assumed to be symmetrical.
Returns
dnnl_success on success and a status describing the error otherwise.

◆ dnnl_dilated_convolution_backward_data_desc_init()

dnnl_status_t DNNL_API dnnl_dilated_convolution_backward_data_desc_init ( dnnl_convolution_desc_t conv_desc,
dnnl_alg_kind_t  alg_kind,
const dnnl_memory_desc_t diff_src_desc,
const dnnl_memory_desc_t weights_desc,
const dnnl_memory_desc_t diff_dst_desc,
const dnnl_dims_t  strides,
const dnnl_dims_t  dilates,
const dnnl_dims_t  padding_l,
const dnnl_dims_t  padding_r 
)

Initializes a descriptor for a dilated convolution backward propagation primitive.

Note
Memory descriptors can be initialized with dnnl_format_tag_any or with format_kind set to 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.

Parameters
conv_descOutput descriptor for a convolution primitive.
alg_kindConvolution algorithm. Possible values are dnnl_convolution_direct, dnnl_convolution_winograd, dnnl_convolution_auto.
diff_src_descDiff source memory descriptor.
weights_descWeights memory descriptor.
diff_dst_descDiff destination memory descriptor.
stridesArray of strides for spatial dimension.
dilatesArray of dilations for spatial dimension. A zero value means no dilation in the corresponding dimension.
padding_lArray of padding values for low indices for each spatial dimension ([[front,] top,] left).
padding_rArray 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.
Returns
dnnl_success on success and a status describing the error otherwise.

◆ dnnl_convolution_backward_weights_desc_init()

dnnl_status_t DNNL_API dnnl_convolution_backward_weights_desc_init ( dnnl_convolution_desc_t conv_desc,
dnnl_alg_kind_t  alg_kind,
const dnnl_memory_desc_t src_desc,
const dnnl_memory_desc_t diff_weights_desc,
const dnnl_memory_desc_t diff_bias_desc,
const dnnl_memory_desc_t diff_dst_desc,
const dnnl_dims_t  strides,
const dnnl_dims_t  padding_l,
const dnnl_dims_t  padding_r 
)

Initializes a descriptor for a convolution weights gradient primitive.

Note
Memory descriptors can be initialized with dnnl_format_tag_any or with format_kind set to dnnl_format_kind_any.

Arrays strides, 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.

Parameters
conv_descOutput descriptor for a convolution primitive.
alg_kindConvolution algorithm. Possible values are dnnl_convolution_direct, dnnl_convolution_winograd, dnnl_convolution_auto.
src_descSource memory descriptor.
diff_weights_descDiff weights memory descriptor.
diff_bias_descDiff bias memory descriptor. Passing NULL, a zero memory descriptor, or a memory descriptor with format_kind set to dnnl_format_kind_undef disables the bias term.
diff_dst_descDiff destination memory descriptor.
stridesArray of strides for spatial dimension.
padding_lArray of padding values for low indices for each spatial dimension ([[front,] top,] left).
padding_rArray 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.
Returns
dnnl_success on success and a status describing the error otherwise.
Examples:
cpu_cnn_training_f32.c.

◆ dnnl_dilated_convolution_backward_weights_desc_init()

dnnl_status_t DNNL_API dnnl_dilated_convolution_backward_weights_desc_init ( dnnl_convolution_desc_t conv_desc,
dnnl_alg_kind_t  alg_kind,
const dnnl_memory_desc_t src_desc,
const dnnl_memory_desc_t diff_weights_desc,
const dnnl_memory_desc_t diff_bias_desc,
const dnnl_memory_desc_t diff_dst_desc,
const dnnl_dims_t  strides,
const dnnl_dims_t  dilates,
const dnnl_dims_t  padding_l,
const dnnl_dims_t  padding_r 
)

Initializes a descriptor for a dilated convolution weights gradient primitive.

Note
Memory descriptors can be initialized with dnnl_format_tag_any or with format_kind set to 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.

Parameters
conv_descOutput descriptor for a convolution primitive.
alg_kindConvolution algorithm. Possible values are dnnl_convolution_direct, dnnl_convolution_winograd, dnnl_convolution_auto.
src_descSource memory descriptor.
diff_weights_descDiff weights memory descriptor.
diff_bias_descDiff bias memory descriptor. Passing NULL, a zero memory descriptor, or a memory descriptor with format_kind set to dnnl_format_kind_undef disables the bias term.
diff_dst_descDiff destination memory descriptor.
stridesArray of strides for spatial dimension.
dilatesArray of dilations for spatial dimension. A zero value means no dilation in the corresponding dimension.
padding_lArray of padding values for low indices for each spatial dimension ([[front,] top,] left).
padding_rArray 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.
Returns
dnnl_success on success and a status describing the error otherwise.