CMSIS-NN  
CMSIS NN Software Library
 
Loading...
Searching...
No Matches
Convolution Functions

Content

 GetBufferSizeNNConv
 

Macros

#define ARM_NN_DW_NT_T_F16_TILE_ROWS   (4)
 
#define ARM_NN_DW_NT_T_F32_TILE_ROWS   (4)
 

Functions

arm_cmsis_nn_status arm_depthwise_nhwc_conv_f32 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params_f32 *dw_conv_params, const cmsis_nn_dims *input_dims, const float32_t *input, const cmsis_nn_dims *filter_dims, const float32_t *kernel, const cmsis_nn_dims *bias_dims, const float32_t *bias, const cmsis_nn_dims *output_dims, float32_t *output)
 Depthwise convolution, NHWC layout.
 
arm_cmsis_nn_status arm_depthwise_conv_f32 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params_f32 *dw_conv_params, const cmsis_nn_dims *input_dims, const float32_t *input, const cmsis_nn_dims *filter_dims, const float32_t *kernel, const cmsis_nn_dims *bias_dims, const float32_t *bias, const cmsis_nn_dims *output_dims, float32_t *output, arm_nn_tensor_layout layout)
 Depthwise convolution, dispatch by layout.
 
arm_cmsis_nn_status arm_depthwise_conv_wrapper_f32 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params_f32 *dw_conv_params, const cmsis_nn_dims *input_dims, const float32_t *input, const cmsis_nn_dims *filter_dims, const float32_t *kernel, const cmsis_nn_dims *bias_dims, const float32_t *bias, const cmsis_nn_dims *output_dims, float32_t *output)
 Depthwise convolution wrapper using the CMSIS-NN baseline path.
 
int32_t arm_depthwise_conv_f32_get_buffer_size (const cmsis_nn_dw_conv_params_f32 *dw_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the temporary buffer size required by depthwise convolution.
 
int32_t arm_depthwise_conv_wrapper_f32_get_buffer_size (const cmsis_nn_dw_conv_params_f32 *dw_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims)
 Get the buffer size required by the depthwise convolution wrapper.
 
arm_cmsis_nn_status arm_convolve_nhwc_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data)
 Convolution, NHWC layout.
 
arm_cmsis_nn_status arm_convolve_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data, arm_nn_tensor_layout layout)
 Convolution, dispatch by layout.
 
arm_cmsis_nn_status arm_convolve_wrapper_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data)
 Convolution wrapper using the CMSIS-NN baseline path.
 
arm_cmsis_nn_status arm_convolve_1x1_nhwc_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data)
 1x1 convolution, NHWC layout.
 
arm_cmsis_nn_status arm_convolve_1x1_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data, arm_nn_tensor_layout layout)
 1x1 convolution, dispatch by layout.
 
arm_cmsis_nn_status arm_convolve_1_x_n_nhwc_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data)
 1xN convolution, NHWC layout.
 
arm_cmsis_nn_status arm_convolve_1_x_n_f32 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data, arm_nn_tensor_layout layout)
 1xN convolution, dispatch by layout.
 
int32_t arm_convolve_f32_get_buffer_size (const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the temporary buffer size required by convolution.
 
int32_t arm_convolve_wrapper_f32_get_buffer_size (const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims)
 Get the buffer size required by the convolution wrapper.
 
int32_t arm_convolve_1x1_f32_get_buffer_size (const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the buffer size required by 1x1 convolution.
 
int32_t arm_convolve_1_x_n_f32_get_buffer_size (const cmsis_nn_conv_params_f32 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the buffer size required by 1xN convolution.
 
arm_cmsis_nn_status arm_transpose_conv_wrapper_f32 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params_f32 *transpose_conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data, arm_nn_tensor_layout layout)
 Transpose convolution wrapper using the CMSIS-NN baseline path.
 
arm_cmsis_nn_status arm_transpose_conv_nhwc_f32 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params_f32 *transpose_conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data)
 Transpose convolution, NHWC layout.
 
arm_cmsis_nn_status arm_transpose_conv_f32 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params_f32 *transpose_conv_params, const cmsis_nn_dims *input_dims, const float32_t *input_data, const cmsis_nn_dims *filter_dims, const float32_t *filter_data, const cmsis_nn_dims *bias_dims, const float32_t *bias_data, const cmsis_nn_dims *output_dims, float32_t *output_data, arm_nn_tensor_layout layout)
 Transpose convolution, dispatch by layout.
 
int32_t arm_transpose_conv_f32_get_buffer_size (const cmsis_nn_transpose_conv_params_f32 *transpose_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *out_dims)
 Get the temporary buffer size required by transpose convolution.
 
int32_t arm_transpose_conv_f32_get_reverse_conv_buffer_size (const cmsis_nn_transpose_conv_params_f32 *transpose_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims)
 Get the reverse-convolution workspace size used by transpose convolution helpers.
 
arm_cmsis_nn_status arm_depthwise_nhwc_conv_f16 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params_f16 *dw_conv_params, const cmsis_nn_dims *input_dims, const float16_t *input, const cmsis_nn_dims *filter_dims, const float16_t *kernel, const cmsis_nn_dims *bias_dims, const float16_t *bias, const cmsis_nn_dims *output_dims, float16_t *output)
 Depthwise convolution, NHWC layout.
 
arm_cmsis_nn_status arm_depthwise_conv_f16 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params_f16 *dw_conv_params, const cmsis_nn_dims *input_dims, const float16_t *input, const cmsis_nn_dims *filter_dims, const float16_t *kernel, const cmsis_nn_dims *bias_dims, const float16_t *bias, const cmsis_nn_dims *output_dims, float16_t *output, arm_nn_tensor_layout layout)
 Depthwise convolution, dispatch by layout.
 
arm_cmsis_nn_status arm_depthwise_conv_wrapper_f16 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params_f16 *dw_conv_params, const cmsis_nn_dims *input_dims, const float16_t *input, const cmsis_nn_dims *filter_dims, const float16_t *kernel, const cmsis_nn_dims *bias_dims, const float16_t *bias, const cmsis_nn_dims *output_dims, float16_t *output)
 Depthwise convolution wrapper using the CMSIS-NN baseline path.
 
int32_t arm_depthwise_conv_f16_get_buffer_size (const cmsis_nn_dw_conv_params_f16 *dw_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the temporary buffer size required by depthwise convolution.
 
int32_t arm_depthwise_conv_wrapper_f16_get_buffer_size (const cmsis_nn_dw_conv_params_f16 *dw_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims)
 Get the buffer size required by the depthwise convolution wrapper.
 
arm_cmsis_nn_status arm_convolve_nhwc_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data)
 Convolution, NHWC layout.
 
arm_cmsis_nn_status arm_convolve_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data, arm_nn_tensor_layout layout)
 Convolution, dispatch by layout.
 
arm_cmsis_nn_status arm_convolve_wrapper_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data)
 Convolution wrapper using the CMSIS-NN baseline path.
 
arm_cmsis_nn_status arm_convolve_1x1_nhwc_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data)
 1x1 convolution, NHWC layout.
 
arm_cmsis_nn_status arm_convolve_1x1_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data, arm_nn_tensor_layout layout)
 1x1 convolution, dispatch by layout.
 
arm_cmsis_nn_status arm_convolve_1_x_n_nhwc_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data)
 1xN convolution, NHWC layout.
 
arm_cmsis_nn_status arm_convolve_1_x_n_f16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data, arm_nn_tensor_layout layout)
 1xN convolution, dispatch by layout.
 
int32_t arm_convolve_f16_get_buffer_size (const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the temporary buffer size required by convolution.
 
int32_t arm_convolve_wrapper_f16_get_buffer_size (const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims)
 Get the buffer size required by the convolution wrapper.
 
int32_t arm_convolve_1x1_f16_get_buffer_size (const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the buffer size required by 1x1 convolution.
 
int32_t arm_convolve_1_x_n_f16_get_buffer_size (const cmsis_nn_conv_params_f16 *conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *output_dims, arm_nn_tensor_layout layout)
 Get the buffer size required by 1xN convolution.
 
arm_cmsis_nn_status arm_transpose_conv_wrapper_f16 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params_f16 *transpose_conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data, arm_nn_tensor_layout layout)
 Transpose convolution wrapper using the CMSIS-NN baseline path.
 
arm_cmsis_nn_status arm_transpose_conv_nhwc_f16 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params_f16 *transpose_conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data)
 Transpose convolution, NHWC layout.
 
arm_cmsis_nn_status arm_transpose_conv_f16 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params_f16 *transpose_conv_params, const cmsis_nn_dims *input_dims, const float16_t *input_data, const cmsis_nn_dims *filter_dims, const float16_t *filter_data, const cmsis_nn_dims *bias_dims, const float16_t *bias_data, const cmsis_nn_dims *output_dims, float16_t *output_data, arm_nn_tensor_layout layout)
 Transpose convolution, dispatch by layout.
 
int32_t arm_transpose_conv_f16_get_buffer_size (const cmsis_nn_transpose_conv_params_f16 *transpose_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *out_dims)
 Get the temporary buffer size required by transpose convolution.
 
int32_t arm_transpose_conv_f16_get_reverse_conv_buffer_size (const cmsis_nn_transpose_conv_params_f16 *transpose_conv_params, const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims)
 Get the reverse-convolution workspace size used by transpose convolution helpers.
 
arm_cmsis_nn_status arm_convolve_1_x_n_s4 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 1xn convolution for s4 weights
 
arm_cmsis_nn_status arm_convolve_1_x_n_s8 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 1xn convolution
 
arm_cmsis_nn_status arm_convolve_1x1_s4 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 s4 version for 1x1 convolution with support for non-unity stride values
 
arm_cmsis_nn_status arm_convolve_1x1_s4_fast (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Fast s4 version for 1x1 convolution (non-square shape)
 
arm_cmsis_nn_status arm_convolve_1x1_s8 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 s8 version for 1x1 convolution with support for non-unity stride values
 
arm_cmsis_nn_status arm_convolve_1x1_s8_fast (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Fast s8 version for 1x1 convolution (non-square shape)
 
arm_cmsis_nn_status arm_convolve_even_s4 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *packed_filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Basic s4 convolution function with a requirement of even number of kernels.
 
arm_cmsis_nn_status arm_convolve_s16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int16_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const cmsis_nn_bias_data *bias_data, const cmsis_nn_dims *output_dims, int16_t *output_data)
 Basic s16 convolution function.
 
arm_cmsis_nn_status arm_convolve_s4 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *packed_filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Basic s4 convolution function.
 
arm_cmsis_nn_status arm_convolve_s8 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *upscale_dims, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Basic s8 convolution function.
 
arm_cmsis_nn_status arm_convolve_wrapper_s16 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int16_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const cmsis_nn_bias_data *bias_data, const cmsis_nn_dims *output_dims, int16_t *output_data)
 s16 convolution layer wrapper function with the main purpose to call the optimal kernel available in cmsis-nn to perform the convolution.
 
arm_cmsis_nn_status arm_convolve_wrapper_s4 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 s4 convolution layer wrapper function with the main purpose to call the optimal kernel available in cmsis-nn to perform the convolution.
 
arm_cmsis_nn_status arm_convolve_wrapper_s8 (const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 s8 convolution layer wrapper function with the main purpose to call the optimal kernel available in cmsis-nn to perform the convolution.
 
arm_cmsis_nn_status arm_depthwise_conv_3x3_s8 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Optimized s8 depthwise convolution function for 3x3 kernel size with some constraints on the input arguments(documented below). Refer arm_depthwise_conv_s8() for function argument details.
 
arm_cmsis_nn_status arm_depthwise_conv_fast_s16 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int16_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int64_t *bias, const cmsis_nn_dims *output_dims, int16_t *output)
 Optimized s16 depthwise convolution function with constraint that in_channel equals out_channel. Refer arm_depthwise_conv_s16() for function argument details.
 
arm_cmsis_nn_status arm_depthwise_conv_s16 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int16_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int64_t *bias, const cmsis_nn_dims *output_dims, int16_t *output)
 Basic s16 depthwise convolution function that doesn't have any constraints on the input dimensions.
 
arm_cmsis_nn_status arm_depthwise_conv_s4 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Basic s4 depthwise convolution function that doesn't have any constraints on the input dimensions.
 
arm_cmsis_nn_status arm_depthwise_conv_s4_opt (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Optimized s4 depthwise convolution function with constraint that in_channel equals out_channel. Refer arm_depthwise_conv_s4() for function argument details.
 
 __attribute__ ((optimize("no-unroll-loops")))
 
arm_cmsis_nn_status arm_depthwise_conv_s8 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Basic s8 depthwise convolution function that doesn't have any constraints on the input dimensions.
 
arm_cmsis_nn_status arm_depthwise_conv_s8_opt (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *kernel, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Optimized s8 depthwise convolution function with constraint that in_channel equals out_channel. Refer arm_depthwise_conv_s8() for function argument details.
 
arm_cmsis_nn_status arm_depthwise_conv_wrapper_s16 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int16_t *input, const cmsis_nn_dims *filter_dims, const int8_t *filter, const cmsis_nn_dims *bias_dims, const int64_t *bias, const cmsis_nn_dims *output_dims, int16_t *output)
 Wrapper function to pick the right optimized s16 depthwise convolution function.
 
arm_cmsis_nn_status arm_depthwise_conv_wrapper_s4 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *filter, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Wrapper function to pick the right optimized s4 depthwise convolution function.
 
arm_cmsis_nn_status arm_depthwise_conv_wrapper_s8 (const cmsis_nn_context *ctx, const cmsis_nn_dw_conv_params *dw_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input, const cmsis_nn_dims *filter_dims, const int8_t *filter, const cmsis_nn_dims *bias_dims, const int32_t *bias, const cmsis_nn_dims *output_dims, int8_t *output)
 Wrapper function to pick the right optimized s8 depthwise convolution function.
 
arm_cmsis_nn_status arm_transpose_conv_s8 (const cmsis_nn_context *ctx, const cmsis_nn_context *output_ctx, const cmsis_nn_transpose_conv_params *transpose_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Basic s8 transpose convolution function.
 
arm_cmsis_nn_status arm_transpose_conv_wrapper_s8 (const cmsis_nn_context *ctx, const cmsis_nn_context *reverse_conv_ctx, const cmsis_nn_transpose_conv_params *transpose_conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data)
 Wrapper to select optimal transposed convolution algorithm depending on parameters.
 

Description

Collection of convolution, depthwise convolution functions and their variants.

The convolution is implemented in 2 steps: im2col and General Matrix Multiplication(GEMM)

im2col is a process of converting each patch of image data into a column. After im2col, the convolution is computed as matrix-matrix multiplication.

To reduce the memory footprint, the im2col is performed partially. Each iteration, only a few column (i.e., patches) are generated followed by GEMM.

Macro Definition Documentation

◆ ARM_NN_DW_NT_T_F16_TILE_ROWS

#define ARM_NN_DW_NT_T_F16_TILE_ROWS   (4)

◆ ARM_NN_DW_NT_T_F32_TILE_ROWS

#define ARM_NN_DW_NT_T_F32_TILE_ROWS   (4)

Function Documentation

◆ __attribute__()

__attribute__ ( (optimize("no-unroll-loops"))  )

◆ arm_convolve_1_x_n_f16()

arm_cmsis_nn_status arm_convolve_1_x_n_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data,
arm_nn_tensor_layout  layout 
)

1xN convolution, dispatch by layout.

◆ arm_convolve_1_x_n_f16_get_buffer_size()

int32_t arm_convolve_1_x_n_f16_get_buffer_size ( const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the buffer size required by 1xN convolution.

◆ arm_convolve_1_x_n_f32()

arm_cmsis_nn_status arm_convolve_1_x_n_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data,
arm_nn_tensor_layout  layout 
)

1xN convolution, dispatch by layout.

◆ arm_convolve_1_x_n_f32_get_buffer_size()

int32_t arm_convolve_1_x_n_f32_get_buffer_size ( const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the buffer size required by 1xN convolution.

◆ arm_convolve_1_x_n_nhwc_f16()

arm_cmsis_nn_status arm_convolve_1_x_n_nhwc_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data 
)

1xN convolution, NHWC layout.

◆ arm_convolve_1_x_n_nhwc_f32()

arm_cmsis_nn_status arm_convolve_1_x_n_nhwc_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data 
)

1xN convolution, NHWC layout.

◆ arm_convolve_1_x_n_s4()

arm_cmsis_nn_status arm_convolve_1_x_n_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

1xn convolution for s4 weights

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_1_x_n_s4_get_buffer_size will return the buffer_size if required The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, 1, WK, C_IN] where WK is the horizontal spatial filter dimension
[in]filter_dataFilter data pointer. Data type: int8 as packed int4
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. stride.w * input_dims->c is a multiple of 4
    2. Explicit constraints(since it is for 1xN convolution) -## input_dims->h equals 1 -## output_dims->h equals 1 -## filter_dims->h equals 1
      Todo:
      Remove constraint on output_dims->w to make the function generic.

◆ arm_convolve_1_x_n_s8()

arm_cmsis_nn_status arm_convolve_1_x_n_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

1xn convolution

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_1_x_n_s8_get_buffer_size will return the buffer_size if required The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, 1, WK, C_IN] where WK is the horizontal spatial filter dimension
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. input_dims->n equals 1
    2. ouput_dims->w is a multiple of 4
    3. Explicit constraints(since it is for 1xN convolution) -## input_dims->h equals 1 -## output_dims->h equals 1 -## filter_dims->h equals 1
      Todo:
      Remove constraint on output_dims->w to make the function generic.

◆ arm_convolve_1x1_f16()

arm_cmsis_nn_status arm_convolve_1x1_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data,
arm_nn_tensor_layout  layout 
)

1x1 convolution, dispatch by layout.

Note
When conv_params->weight_format is set to ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, the matmul-backed 1x1 convolution paths interpret filter_data as an already prepacked NTxN RHS buffer instead of the standard public filter layout.

◆ arm_convolve_1x1_f16_get_buffer_size()

int32_t arm_convolve_1x1_f16_get_buffer_size ( const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the buffer size required by 1x1 convolution.

Note
Returns 0 for the unity-stride no-pack path. For non-unity-stride NHWC 1x1 convolution, the returned scratch size enables the packed-tile + GEMM path. When conv_params->weight_format is ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, this still excludes the offline-packed filter storage itself.

◆ arm_convolve_1x1_f32()

arm_cmsis_nn_status arm_convolve_1x1_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data,
arm_nn_tensor_layout  layout 
)

1x1 convolution, dispatch by layout.

Note
When conv_params->weight_format is set to ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, the matmul-backed 1x1 convolution paths interpret filter_data as an already prepacked NTxN RHS buffer instead of the standard public filter layout.

◆ arm_convolve_1x1_f32_get_buffer_size()

int32_t arm_convolve_1x1_f32_get_buffer_size ( const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the buffer size required by 1x1 convolution.

Note
Returns 0 for the unity-stride no-pack path. For non-unity-stride NHWC 1x1 convolution, the returned scratch size enables the packed-tile + GEMM path. When conv_params->weight_format is ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, this still excludes the offline-packed filter storage itself.

◆ arm_convolve_1x1_nhwc_f16()

arm_cmsis_nn_status arm_convolve_1x1_nhwc_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data 
)

1x1 convolution, NHWC layout.

◆ arm_convolve_1x1_nhwc_f32()

arm_cmsis_nn_status arm_convolve_1x1_nhwc_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data 
)

1x1 convolution, NHWC layout.

◆ arm_convolve_1x1_s4()

arm_cmsis_nn_status arm_convolve_1x1_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

s4 version for 1x1 convolution with support for non-unity stride values

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. None is required by this function.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, 1, 1, C_IN]
[in]filter_dataFilter data pointer. Data type: int8 packed with 2x int4
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. conv_params->padding.w = conv_params->padding.h = 0

◆ arm_convolve_1x1_s4_fast()

arm_cmsis_nn_status arm_convolve_1x1_s4_fast ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Fast s4 version for 1x1 convolution (non-square shape)

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_1x1_s4_fast_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer ,if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, 1, 1, C_IN]
[in]filter_dataFilter data pointer. Data type: int8 packed with 2x int4
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. conv_params->padding.w = conv_params->padding.h = 0
    2. conv_params->stride.w = conv_params->stride.h = 1

◆ arm_convolve_1x1_s8()

arm_cmsis_nn_status arm_convolve_1x1_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

s8 version for 1x1 convolution with support for non-unity stride values

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. None is required by this function.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, 1, 1, C_IN]
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. conv_params->padding.w = conv_params->padding.h = 0

◆ arm_convolve_1x1_s8_fast()

arm_cmsis_nn_status arm_convolve_1x1_s8_fast ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Fast s8 version for 1x1 convolution (non-square shape)

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_1x1_s8_fast_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, 1, 1, C_IN]
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. conv_params->padding.w = conv_params->padding.h = 0
    2. conv_params->stride.w = conv_params->stride.h = 1

◆ arm_convolve_even_s4()

arm_cmsis_nn_status arm_convolve_even_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Basic s4 convolution function with a requirement of even number of kernels.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_s4_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer ,if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions. Note the product must be even.
[in]filter_dataPacked Filter data pointer. Data type: int8 packed with 2x int4
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS if successful or ARM_CMSIS_NN_ARG_ERROR if incorrect arguments or ARM_CMSIS_NN_NO_IMPL_ERROR if not for MVE
  1. Supported framework: TensorFlow Lite micro
  2. Additional memory is required for optimization. Refer to argument 'ctx' for details.

◆ arm_convolve_f16()

arm_cmsis_nn_status arm_convolve_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data,
arm_nn_tensor_layout  layout 
)

Convolution, dispatch by layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]conv_paramsConvolution parameters (stride, padding, dilation and activation clamp).
[in]input_dimsInput tensor dimensions. Format depends on layout.
[in]input_dataPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions. Format depends on layout.
[in]filter_dataPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]bias_dataOptional bias tensor data.
[in]output_dimsOutput tensor dimensions. Format depends on layout.
[out]output_dataPointer to the output tensor data.
[in]layoutTensor layout selector. Current float APIs require ARM_NN_LAYOUT_NHWC.
Note
When conv_params->weight_format is set to ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, the matmul-backed convolution paths interpret filter_data as an already prepacked NTxN RHS buffer instead of the standard public filter layout.
Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_convolve_f16_get_buffer_size()

int32_t arm_convolve_f16_get_buffer_size ( const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the temporary buffer size required by convolution.

Parameters
[in]conv_paramsConvolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
[in]output_dimsOutput tensor dimensions.
[in]layoutTensor layout selector.
Note
When conv_params->weight_format is ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, this still reports only the temporary input/im2col scratch requirement. Any offline-packed filter storage is expected to be provided by the caller.
Returns
Required buffer size in bytes, or 0 when no scratch buffer is needed.

◆ arm_convolve_f32()

arm_cmsis_nn_status arm_convolve_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data,
arm_nn_tensor_layout  layout 
)

Convolution, dispatch by layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]conv_paramsConvolution parameters (stride, padding, dilation and activation clamp).
[in]input_dimsInput tensor dimensions. Format depends on layout.
[in]input_dataPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions. Format depends on layout.
[in]filter_dataPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]bias_dataOptional bias tensor data.
[in]output_dimsOutput tensor dimensions. Format depends on layout.
[out]output_dataPointer to the output tensor data.
[in]layoutTensor layout selector. Current float APIs require ARM_NN_LAYOUT_NHWC.
Note
When conv_params->weight_format is set to ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, the matmul-backed convolution paths interpret filter_data as an already prepacked NTxN RHS buffer instead of the standard public filter layout.
Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_convolve_f32_get_buffer_size()

int32_t arm_convolve_f32_get_buffer_size ( const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the temporary buffer size required by convolution.

Parameters
[in]conv_paramsConvolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
[in]output_dimsOutput tensor dimensions.
[in]layoutTensor layout selector.
Note
When conv_params->weight_format is ARM_NN_WEIGHT_FORMAT_NT_N_PACKED, this still reports only the temporary input/im2col scratch requirement. Any offline-packed filter storage is expected to be provided by the caller.
Returns
Required buffer size in bytes, or 0 when no scratch buffer is needed.

◆ arm_convolve_nhwc_f16()

arm_cmsis_nn_status arm_convolve_nhwc_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data 
)

Convolution, NHWC layout.

◆ arm_convolve_nhwc_f32()

arm_cmsis_nn_status arm_convolve_nhwc_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data 
)

Convolution, NHWC layout.

◆ arm_convolve_s16()

arm_cmsis_nn_status arm_convolve_s16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int16_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const cmsis_nn_bias_data bias_data,
const cmsis_nn_dims output_dims,
int16_t *  output_data 
)

Basic s16 convolution function.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_s16_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). conv_params->input_offset : Not used conv_params->output_offset : Not used
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int16
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataStruct with optional bias data pointer. Bias data type can be int64 or int32 depending flag in struct.
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int16
Returns
The function returns ARM_CMSIS_NN_SUCCESS if successful or ARM_CMSIS_NN_ARG_ERROR if incorrect arguments or ARM_CMSIS_NN_NO_IMPL_ERROR
  1. Supported framework: TensorFlow Lite micro
  2. Additional memory is required for optimization. Refer to argument 'ctx' for details.

◆ arm_convolve_s4()

arm_cmsis_nn_status arm_convolve_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Basic s4 convolution function.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_s4_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer ,if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataPacked Filter data pointer. Data type: int8 packed with 2x int4
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS
  1. Supported framework: TensorFlow Lite micro
  2. Additional memory is required for optimization. Refer to argument 'ctx' for details.

◆ arm_convolve_s8()

arm_cmsis_nn_status arm_convolve_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims upscale_dims,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Basic s8 convolution function.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_s8_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, CK] where HK, WK and CK are the spatial filter dimensions. CK != C_IN is used for grouped convolution, in which case the required conditions are C_IN = N * CK and C_OUT = N * M for N groups of size M.
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]upscale_dimsInserts zeroes to upscale the input in h/w dimensions if set to 2. This is used for tranposed convolution.
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS if successful or ARM_CMSIS_NN_ARG_ERROR if incorrect arguments or ARM_CMSIS_NN_NO_IMPL_ERROR
  1. Supported framework: TensorFlow Lite micro
  2. Additional memory is required for optimization. Refer to argument 'ctx' for details.

◆ arm_convolve_wrapper_f16()

arm_cmsis_nn_status arm_convolve_wrapper_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data 
)

Convolution wrapper using the CMSIS-NN baseline path.

◆ arm_convolve_wrapper_f16_get_buffer_size()

int32_t arm_convolve_wrapper_f16_get_buffer_size ( const cmsis_nn_conv_params_f16 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims 
)

Get the buffer size required by the convolution wrapper.

◆ arm_convolve_wrapper_f32()

arm_cmsis_nn_status arm_convolve_wrapper_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data 
)

Convolution wrapper using the CMSIS-NN baseline path.

◆ arm_convolve_wrapper_f32_get_buffer_size()

int32_t arm_convolve_wrapper_f32_get_buffer_size ( const cmsis_nn_conv_params_f32 conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims 
)

Get the buffer size required by the convolution wrapper.

◆ arm_convolve_wrapper_s16()

arm_cmsis_nn_status arm_convolve_wrapper_s16 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int16_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const cmsis_nn_bias_data bias_data,
const cmsis_nn_dims output_dims,
int16_t *  output_data 
)

s16 convolution layer wrapper function with the main purpose to call the optimal kernel available in cmsis-nn to perform the convolution.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_wrapper_s8_get_buffer_size will return the buffer_size if required The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). conv_params->input_offset : Not used conv_params->output_offset : Not used
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int16
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataStruct with optional bias data pointer. Bias data type can be int64 or int32 depending flag in struct.
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int16
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.

◆ arm_convolve_wrapper_s4()

arm_cmsis_nn_status arm_convolve_wrapper_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

s4 convolution layer wrapper function with the main purpose to call the optimal kernel available in cmsis-nn to perform the convolution.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_wrapper_s4_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer ,if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataFilter data pointer. Data type: int8 packed with 2x int4
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.

◆ arm_convolve_wrapper_s8()

arm_cmsis_nn_status arm_convolve_wrapper_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_conv_params conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

s8 convolution layer wrapper function with the main purpose to call the optimal kernel available in cmsis-nn to perform the convolution.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_convolve_wrapper_s8_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of conv_params->input_offset : [-127, 128] Range of conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.

◆ arm_depthwise_conv_3x3_s8()

arm_cmsis_nn_status arm_depthwise_conv_3x3_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Optimized s8 depthwise convolution function for 3x3 kernel size with some constraints on the input arguments(documented below). Refer arm_depthwise_conv_s8() for function argument details.

Returns
The function returns one of the following ARM_CMSIS_NN_ARG_ERROR - Unsupported dimension of tensors
  • Unsupported pad size along the x axis ARM_CMSIS_NN_SUCCESS - Successful operation
  • Supported framework : TensorFlow Lite Micro
  • The following constrains on the arguments apply
    1. Number of input channel equals number of output channels
    2. Filter height and width equals 3
    3. Padding along x is either 0 or 1.

◆ arm_depthwise_conv_f16()

arm_cmsis_nn_status arm_depthwise_conv_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params_f16 dw_conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input,
const cmsis_nn_dims filter_dims,
const float16_t *  kernel,
const cmsis_nn_dims bias_dims,
const float16_t *  bias,
const cmsis_nn_dims output_dims,
float16_t *  output,
arm_nn_tensor_layout  layout 
)

Depthwise convolution, dispatch by layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]dw_conv_paramsDepthwise convolution parameters (stride, padding, dilation, channel multiplier and activation clamp).
[in]input_dimsInput tensor dimensions. Format depends on layout.
[in]inputPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions. Format depends on layout.
[in]kernelPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]biasOptional bias tensor data.
[in]output_dimsOutput tensor dimensions. Format depends on layout.
[out]outputPointer to the output tensor data.
[in]layoutTensor layout selector. Current float APIs require ARM_NN_LAYOUT_NHWC.
Note
When ctx->buf is used for internal kernel repacking, it must be aligned to the element type stored in scratch: at least 4-byte aligned for float32_t and, via at least 2-byte aligned for float16_t.

at least 2-byte aligned for float16_t.

Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_depthwise_conv_f16_get_buffer_size()

int32_t arm_depthwise_conv_f16_get_buffer_size ( const cmsis_nn_dw_conv_params_f16 dw_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the temporary buffer size required by depthwise convolution.

Parameters
[in]dw_conv_paramsDepthwise convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
[in]output_dimsOutput tensor dimensions.
[in]layoutTensor layout selector.
Returns
Required buffer size in bytes, or 0 when no scratch buffer is needed.

◆ arm_depthwise_conv_f32()

arm_cmsis_nn_status arm_depthwise_conv_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params_f32 dw_conv_params,
const cmsis_nn_dims input_dims,
const float32_t input,
const cmsis_nn_dims filter_dims,
const float32_t kernel,
const cmsis_nn_dims bias_dims,
const float32_t bias,
const cmsis_nn_dims output_dims,
float32_t output,
arm_nn_tensor_layout  layout 
)

Depthwise convolution, dispatch by layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]dw_conv_paramsDepthwise convolution parameters (stride, padding, dilation, channel multiplier and activation clamp).
[in]input_dimsInput tensor dimensions. Format depends on layout.
[in]inputPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions. Format depends on layout.
[in]kernelPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]biasOptional bias tensor data.
[in]output_dimsOutput tensor dimensions. Format depends on layout.
[out]outputPointer to the output tensor data.
[in]layoutTensor layout selector. Current float APIs require ARM_NN_LAYOUT_NHWC.
Note
When ctx->buf is used for internal kernel repacking, it must be aligned to the element type stored in scratch: at least 4-byte aligned for float32_t and, via at least 2-byte aligned for float16_t.

at least 2-byte aligned for float16_t.

Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_depthwise_conv_f32_get_buffer_size()

int32_t arm_depthwise_conv_f32_get_buffer_size ( const cmsis_nn_dw_conv_params_f32 dw_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims,
arm_nn_tensor_layout  layout 
)

Get the temporary buffer size required by depthwise convolution.

Parameters
[in]dw_conv_paramsDepthwise convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
[in]output_dimsOutput tensor dimensions.
[in]layoutTensor layout selector.
Returns
Required buffer size in bytes, or 0 when no scratch buffer is needed.

◆ arm_depthwise_conv_fast_s16()

arm_cmsis_nn_status arm_depthwise_conv_fast_s16 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int16_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int64_t *  bias_data,
const cmsis_nn_dims output_dims,
int16_t *  output_data 
)

Optimized s16 depthwise convolution function with constraint that in_channel equals out_channel. Refer arm_depthwise_conv_s16() for function argument details.

Returns
The function returns one of the following ARM_CMSIS_NN_ARG_ERROR - ctx-buff == NULL and arm_depthwise_conv_fast_s16_get_buffer_size() > 0 or input channel != output channel or ch_mult != 1

ARM_CMSIS_NN_SUCCESS - Successful operation

  • Supported framework: TensorFlow Lite
  • The following constrains on the arguments apply
    1. Number of input channel equals number of output channels or ch_mult equals 1
  • Reccomended when number of channels is 4 or greater.

◆ arm_depthwise_conv_s16()

arm_cmsis_nn_status arm_depthwise_conv_s16 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int16_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int64_t *  bias_data,
const cmsis_nn_dims output_dims,
int16_t *  output_data 
)

Basic s16 depthwise convolution function that doesn't have any constraints on the input dimensions.

Parameters
[in,out]ctxFunction context (e.g. temporary buffer). Check the function definition file to see if an additional buffer is required. Optional function {API}_get_buffer_size() provides the buffer size if an additional buffer is required. exists if additional memory is. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]dw_conv_paramsDepthwise convolution parameters (e.g. strides, dilations, pads,...) conv_params->input_offset : Not used conv_params->output_offset : Not used
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN] Batch argument N is not used.
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [1, H, W, C_OUT]
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int64
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[in,out]output_dataOutput data pointer. Data type: int16
Returns
The function returns ARM_CMSIS_NN_SUCCESS
  • Supported framework: TensorFlow Lite

◆ arm_depthwise_conv_s4()

arm_cmsis_nn_status arm_depthwise_conv_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input,
const cmsis_nn_dims filter_dims,
const int8_t *  kernel,
const cmsis_nn_dims bias_dims,
const int32_t *  bias,
const cmsis_nn_dims output_dims,
int8_t *  output 
)

Basic s4 depthwise convolution function that doesn't have any constraints on the input dimensions.

Parameters
[in,out]ctxFunction context (e.g. temporary buffer). Check the function definition file to see if an additional buffer is required. Optional function {API}_get_buffer_size() provides the buffer size if an additional buffer is required exists if additional memory is. The caller is expected to clear the buffer ,if applicable, for security reasons.
[in]dw_conv_paramsDepthwise convolution parameters (e.g. strides, dilations, pads,...) dw_conv_params->dilation is not used. Range of dw_conv_params->input_offset : [-127, 128] Range of dw_conv_params->input_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN] Batch argument N is not used.
[in]inputInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [1, H, W, C_OUT]
[in]kernelFilter data pointer. Data type: int8_t packed 4-bit weights, e.g four sequential weights [0x1, 0x2, 0x3, 0x4] packed as [0x21, 0x43].
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]biasBias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[in,out]outputOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS
  • Supported framework: TensorFlow Lite

◆ arm_depthwise_conv_s4_opt()

arm_cmsis_nn_status arm_depthwise_conv_s4_opt ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Optimized s4 depthwise convolution function with constraint that in_channel equals out_channel. Refer arm_depthwise_conv_s4() for function argument details.

Returns
The function returns one of the following ARM_CMSIS_NN_ARG_ERROR - input channel != output channel or ch_mult != 1 ARM_CMSIS_NN_SUCCESS - Successful operation
Note
If number of channels is not a multiple of 4, upto 3 elements outside the boundary will be read out for the following if MVE optimizations(Arm Helium Technology) are used.
  • Output shift
  • Output multiplier
  • Output bias
  • kernel
  • Supported framework: TensorFlow Lite
  • The following constrains on the arguments apply
    1. Number of input channel equals number of output channels or ch_mult equals 1
  • Reccomended when number of channels is 4 or greater.

◆ arm_depthwise_conv_s8()

arm_cmsis_nn_status arm_depthwise_conv_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Basic s8 depthwise convolution function that doesn't have any constraints on the input dimensions.

Parameters
[in,out]ctxFunction context (e.g. temporary buffer). Check the function definition file to see if an additional buffer is required. Optional function {API}_get_buffer_size() provides the buffer size if an additional buffer is required exists if additional memory is. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]dw_conv_paramsDepthwise convolution parameters (e.g. strides, dilations, pads,...) dw_conv_params->dilation is not used. Range of dw_conv_params->input_offset : [-127, 128] Range of dw_conv_params->input_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN] Batch argument N is not used.
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [1, H, W, C_OUT]
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[in,out]output_dataOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS
  • Supported framework: TensorFlow Lite

◆ arm_depthwise_conv_s8_opt()

arm_cmsis_nn_status arm_depthwise_conv_s8_opt ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Optimized s8 depthwise convolution function with constraint that in_channel equals out_channel. Refer arm_depthwise_conv_s8() for function argument details.

Returns
The function returns one of the following ARM_CMSIS_NN_ARG_ERROR - input channel != output channel or ch_mult != 1 ARM_CMSIS_NN_SUCCESS - Successful operation
Note
If number of channels is not a multiple of 4, upto 3 elements outside the boundary will be read out for the following if MVE optimizations(Arm Helium Technology) are used.
  • Output shift
  • Output multiplier
  • Output bias
  • kernel
  • Supported framework: TensorFlow Lite
  • The following constrains on the arguments apply
    1. Number of input channel equals number of output channels or ch_mult equals 1
  • Reccomended when number of channels is 4 or greater.

◆ arm_depthwise_conv_wrapper_f16()

arm_cmsis_nn_status arm_depthwise_conv_wrapper_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params_f16 dw_conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input,
const cmsis_nn_dims filter_dims,
const float16_t *  kernel,
const cmsis_nn_dims bias_dims,
const float16_t *  bias,
const cmsis_nn_dims output_dims,
float16_t *  output 
)

Depthwise convolution wrapper using the CMSIS-NN baseline path.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]dw_conv_paramsDepthwise convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]inputPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions.
[in]kernelPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]biasOptional bias tensor data.
[in]output_dimsOutput tensor dimensions.
[out]outputPointer to the output tensor data.
Note
When ctx->buf is used for internal kernel repacking, it must be aligned to the element type stored in scratch: at least 4-byte aligned for float32_t and, via at least 2-byte aligned for float16_t.

at least 2-byte aligned for float16_t.

Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_depthwise_conv_wrapper_f16_get_buffer_size()

int32_t arm_depthwise_conv_wrapper_f16_get_buffer_size ( const cmsis_nn_dw_conv_params_f16 dw_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims 
)

Get the buffer size required by the depthwise convolution wrapper.

◆ arm_depthwise_conv_wrapper_f32()

arm_cmsis_nn_status arm_depthwise_conv_wrapper_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params_f32 dw_conv_params,
const cmsis_nn_dims input_dims,
const float32_t input,
const cmsis_nn_dims filter_dims,
const float32_t kernel,
const cmsis_nn_dims bias_dims,
const float32_t bias,
const cmsis_nn_dims output_dims,
float32_t output 
)

Depthwise convolution wrapper using the CMSIS-NN baseline path.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]dw_conv_paramsDepthwise convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]inputPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions.
[in]kernelPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]biasOptional bias tensor data.
[in]output_dimsOutput tensor dimensions.
[out]outputPointer to the output tensor data.
Note
When ctx->buf is used for internal kernel repacking, it must be aligned to the element type stored in scratch: at least 4-byte aligned for float32_t and, via at least 2-byte aligned for float16_t.

at least 2-byte aligned for float16_t.

Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_depthwise_conv_wrapper_f32_get_buffer_size()

int32_t arm_depthwise_conv_wrapper_f32_get_buffer_size ( const cmsis_nn_dw_conv_params_f32 dw_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims output_dims 
)

Get the buffer size required by the depthwise convolution wrapper.

◆ arm_depthwise_conv_wrapper_s16()

arm_cmsis_nn_status arm_depthwise_conv_wrapper_s16 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int16_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int64_t *  bias_data,
const cmsis_nn_dims output_dims,
int16_t *  output_data 
)

Wrapper function to pick the right optimized s16 depthwise convolution function.

Parameters
[in,out]ctxFunction context (e.g. temporary buffer). Check the function definition file to see if an additional buffer is required. Optional function {API}_get_buffer_size() provides the buffer size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]dw_conv_paramsDepthwise convolution parameters (e.g. strides, dilations, pads,...) dw_conv_params->dilation is not used. Range of dw_conv_params->input_offset : Not used Range of dw_conv_params->output_offset : Not used
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [H, W, C_IN] Batch argument N is not used and assumed to be 1.
[in]input_dataInput (activation) data pointer. Data type: int16
[in]filter_dimsFilter tensor dimensions. Format: [1, H, W, C_OUT]
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int64
[in]output_dimsOutput tensor dimensions. Format: [1, H, W, C_OUT]
[in,out]output_dataOutput data pointer. Data type: int16
Returns
The function returns ARM_CMSIS_NN_SUCCESS - Successful completion.

◆ arm_depthwise_conv_wrapper_s4()

arm_cmsis_nn_status arm_depthwise_conv_wrapper_s4 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Wrapper function to pick the right optimized s4 depthwise convolution function.

Parameters
[in,out]ctxFunction context (e.g. temporary buffer). Check the function definition file to see if an additional buffer is required. Optional function {API}_get_buffer_size() provides the buffer size if required. The caller is expected to clear the buffer ,if applicable, for security reasons.
[in]dw_conv_paramsDepthwise convolution parameters (e.g. strides, dilations, pads,...) dw_conv_params->dilation is not used. Range of dw_conv_params->input_offset : [-127, 128] Range of dw_conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [H, W, C_IN] Batch argument N is not used and assumed to be 1.
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [1, H, W, C_OUT]
[in]filter_dataFilter data pointer. Data type: int8_t packed 4-bit weights, e.g four sequential weights [0x1, 0x2, 0x3, 0x4] packed as [0x21, 0x43].
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [1, H, W, C_OUT]
[in,out]output_dataOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS - Successful completion.
  • Supported framework: TensorFlow Lite

◆ arm_depthwise_conv_wrapper_s8()

arm_cmsis_nn_status arm_depthwise_conv_wrapper_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params dw_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Wrapper function to pick the right optimized s8 depthwise convolution function.

Parameters
[in,out]ctxFunction context (e.g. temporary buffer). Check the function definition file to see if an additional buffer is required. Optional function {API}_get_buffer_size() provides the buffer size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in]dw_conv_paramsDepthwise convolution parameters (e.g. strides, dilations, pads,...) dw_conv_params->dilation is not used. Range of dw_conv_params->input_offset : [-127, 128] Range of dw_conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each output channel
[in]input_dimsInput (activation) tensor dimensions. Format: [H, W, C_IN] Batch argument N is not used and assumed to be 1.
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [1, H, W, C_OUT]
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataBias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [1, H, W, C_OUT]
[in,out]output_dataOutput data pointer. Data type: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS - Successful completion.

◆ arm_depthwise_nhwc_conv_f16()

arm_cmsis_nn_status arm_depthwise_nhwc_conv_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params_f16 dw_conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input,
const cmsis_nn_dims filter_dims,
const float16_t *  kernel,
const cmsis_nn_dims bias_dims,
const float16_t *  bias,
const cmsis_nn_dims output_dims,
float16_t *  output 
)

Depthwise convolution, NHWC layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]dw_conv_paramsDepthwise convolution parameters (stride, padding, dilation, channel multiplier and activation clamp).
[in]input_dimsInput tensor dimensions in NHWC format.
[in]inputPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions in NHWC-compatible depthwise format.
[in]kernelPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]biasOptional bias tensor data.
[in]output_dimsOutput tensor dimensions in NHWC format.
[out]outputPointer to the output tensor data.
Note
When ctx->buf is used for internal kernel repacking, it must be aligned to the element type stored in scratch: at least 4-byte aligned for float32_t and, via at least 2-byte aligned for float16_t.

at least 2-byte aligned for float16_t.

Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_depthwise_nhwc_conv_f32()

arm_cmsis_nn_status arm_depthwise_nhwc_conv_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_dw_conv_params_f32 dw_conv_params,
const cmsis_nn_dims input_dims,
const float32_t input,
const cmsis_nn_dims filter_dims,
const float32_t kernel,
const cmsis_nn_dims bias_dims,
const float32_t bias,
const cmsis_nn_dims output_dims,
float32_t output 
)

Depthwise convolution, NHWC layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in]dw_conv_paramsDepthwise convolution parameters (stride, padding, dilation, channel multiplier and activation clamp).
[in]input_dimsInput tensor dimensions in NHWC format.
[in]inputPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions in NHWC-compatible depthwise format.
[in]kernelPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions. Format: [C_OUT].
[in]biasOptional bias tensor data.
[in]output_dimsOutput tensor dimensions in NHWC format.
[out]outputPointer to the output tensor data.
Note
When ctx->buf is used for internal kernel repacking, it must be aligned to the element type stored in scratch: at least 4-byte aligned for float32_t and, via at least 2-byte aligned for float16_t.

at least 2-byte aligned for float16_t.

Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_transpose_conv_f16()

arm_cmsis_nn_status arm_transpose_conv_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params_f16 transpose_conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data,
arm_nn_tensor_layout  layout 
)

Transpose convolution, dispatch by layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in,out]output_ctxOutput accumulation context for helper implementations.
[in]transpose_conv_paramsTranspose convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]input_dataPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions.
[in]filter_dataPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions.
[in]bias_dataOptional bias tensor data.
[in]output_dimsOutput tensor dimensions.
[out]output_dataPointer to the output tensor data.
[in]layoutTensor layout selector. Current float APIs require ARM_NN_LAYOUT_NHWC.
Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_transpose_conv_f16_get_buffer_size()

int32_t arm_transpose_conv_f16_get_buffer_size ( const cmsis_nn_transpose_conv_params_f16 transpose_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims out_dims 
)

Get the temporary buffer size required by transpose convolution.

Parameters
[in]transpose_conv_paramsTranspose convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
[in]out_dimsOutput tensor dimensions.
Returns
Required buffer size in bytes, or 0 when no scratch buffer is needed.

◆ arm_transpose_conv_f16_get_reverse_conv_buffer_size()

int32_t arm_transpose_conv_f16_get_reverse_conv_buffer_size ( const cmsis_nn_transpose_conv_params_f16 transpose_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims 
)

Get the reverse-convolution workspace size used by transpose convolution helpers.

Parameters
[in]transpose_conv_paramsTranspose convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
Returns
Required buffer size in bytes, or 0 when no reverse-convolution buffer is needed.

◆ arm_transpose_conv_f32()

arm_cmsis_nn_status arm_transpose_conv_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params_f32 transpose_conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data,
arm_nn_tensor_layout  layout 
)

Transpose convolution, dispatch by layout.

Parameters
[in,out]ctxFunction context that may hold a temporary scratch buffer.
[in,out]output_ctxOutput accumulation context for helper implementations.
[in]transpose_conv_paramsTranspose convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]input_dataPointer to the input tensor data.
[in]filter_dimsFilter tensor dimensions.
[in]filter_dataPointer to the filter tensor data.
[in]bias_dimsBias tensor dimensions.
[in]bias_dataOptional bias tensor data.
[in]output_dimsOutput tensor dimensions.
[out]output_dataPointer to the output tensor data.
[in]layoutTensor layout selector. Current float APIs require ARM_NN_LAYOUT_NHWC.
Returns
ARM_CMSIS_NN_SUCCESS on success or ARM_CMSIS_NN_ARG_ERROR on invalid arguments.

◆ arm_transpose_conv_f32_get_buffer_size()

int32_t arm_transpose_conv_f32_get_buffer_size ( const cmsis_nn_transpose_conv_params_f32 transpose_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims,
const cmsis_nn_dims out_dims 
)

Get the temporary buffer size required by transpose convolution.

Parameters
[in]transpose_conv_paramsTranspose convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
[in]out_dimsOutput tensor dimensions.
Returns
Required buffer size in bytes, or 0 when no scratch buffer is needed.

◆ arm_transpose_conv_f32_get_reverse_conv_buffer_size()

int32_t arm_transpose_conv_f32_get_reverse_conv_buffer_size ( const cmsis_nn_transpose_conv_params_f32 transpose_conv_params,
const cmsis_nn_dims input_dims,
const cmsis_nn_dims filter_dims 
)

Get the reverse-convolution workspace size used by transpose convolution helpers.

Parameters
[in]transpose_conv_paramsTranspose convolution parameters.
[in]input_dimsInput tensor dimensions.
[in]filter_dimsFilter tensor dimensions.
Returns
Required buffer size in bytes, or 0 when no reverse-convolution buffer is needed.

◆ arm_transpose_conv_nhwc_f16()

arm_cmsis_nn_status arm_transpose_conv_nhwc_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params_f16 transpose_conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data 
)

Transpose convolution, NHWC layout.

◆ arm_transpose_conv_nhwc_f32()

arm_cmsis_nn_status arm_transpose_conv_nhwc_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params_f32 transpose_conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data 
)

Transpose convolution, NHWC layout.

◆ arm_transpose_conv_s8()

arm_cmsis_nn_status arm_transpose_conv_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params transpose_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Basic s8 transpose convolution function.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_transpose_conv_s8_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in,out]output_ctxTemporary scratch buffer. The size required size is: output width * output height * output channel * 4 The caller is expected to clear the buffer, if applicable, for security reasons.
[in]transpose_conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of transpose_conv_params->input_offset : [-127, 128] Range of transpose_conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each out channel.
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  1. Supported framework: TensorFlow Lite micro
  2. Additional memory is required for optimization. Refer to arguments 'ctx' and 'output_ctx' for details.

◆ arm_transpose_conv_wrapper_f16()

arm_cmsis_nn_status arm_transpose_conv_wrapper_f16 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params_f16 transpose_conv_params,
const cmsis_nn_dims input_dims,
const float16_t *  input_data,
const cmsis_nn_dims filter_dims,
const float16_t *  filter_data,
const cmsis_nn_dims bias_dims,
const float16_t *  bias_data,
const cmsis_nn_dims output_dims,
float16_t *  output_data,
arm_nn_tensor_layout  layout 
)

Transpose convolution wrapper using the CMSIS-NN baseline path.

◆ arm_transpose_conv_wrapper_f32()

arm_cmsis_nn_status arm_transpose_conv_wrapper_f32 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params_f32 transpose_conv_params,
const cmsis_nn_dims input_dims,
const float32_t input_data,
const cmsis_nn_dims filter_dims,
const float32_t filter_data,
const cmsis_nn_dims bias_dims,
const float32_t bias_data,
const cmsis_nn_dims output_dims,
float32_t output_data,
arm_nn_tensor_layout  layout 
)

Transpose convolution wrapper using the CMSIS-NN baseline path.

◆ arm_transpose_conv_wrapper_s8()

arm_cmsis_nn_status arm_transpose_conv_wrapper_s8 ( const cmsis_nn_context ctx,
const cmsis_nn_context output_ctx,
const cmsis_nn_transpose_conv_params transpose_conv_params,
const cmsis_nn_per_channel_quant_params quant_params,
const cmsis_nn_dims input_dims,
const int8_t *  input_data,
const cmsis_nn_dims filter_dims,
const int8_t *  filter_data,
const cmsis_nn_dims bias_dims,
const int32_t *  bias_data,
const cmsis_nn_dims output_dims,
int8_t *  output_data 
)

Wrapper to select optimal transposed convolution algorithm depending on parameters.

Parameters
[in,out]ctxFunction context that contains the additional buffer if required by the function. arm_transpose_conv_s8_get_buffer_size will return the buffer_size if required. The caller is expected to clear the buffer, if applicable, for security reasons.
[in,out]output_ctxTemporary scratch buffer. The size required size is: output width * output height * output channel * 4 The caller is expected to clear the buffer, if applicable, for security reasons.
[in]transpose_conv_paramsConvolution parameters (e.g. strides, dilations, pads,...). Range of transpose_conv_params->input_offset : [-127, 128] Range of transpose_conv_params->output_offset : [-128, 127]
[in]quant_paramsPer-channel quantization info. It contains the multiplier and shift values to be applied to each out channel.
[in]input_dimsInput (activation) tensor dimensions. Format: [N, H, W, C_IN]
[in]input_dataInput (activation) data pointer. Data type: int8
[in]filter_dimsFilter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the spatial filter dimensions
[in]filter_dataFilter data pointer. Data type: int8
[in]bias_dimsBias tensor dimensions. Format: [C_OUT]
[in]bias_dataOptional bias data pointer. Data type: int32
[in]output_dimsOutput tensor dimensions. Format: [N, H, W, C_OUT]
[out]output_dataOutput data pointer. Data type: int8
Returns
The function returns either ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, ARM_CMSIS_NN_SUCCESS on successful completion.
  1. Supported framework: TensorFlow Lite micro
  2. Additional memory is required for optimization. Refer to arguments 'ctx' and 'output_ctx' for details.