32 arm_conv::ConvolutionArgs &_c_args,
34 : _winograd_impl{w_impl}, _conv_args{_c_args}, _nthreads{nthreads}
47 const unsigned int batch_idx = 3;
51 const size_t input_row_stride = src_strides[
height_idx] / element_size_in_bytes;
52 const size_t input_col_stride = src_strides[
width_idx] / element_size_in_bytes;
53 const size_t input_batch_stride = src_strides[batch_idx] / element_size_in_bytes;
54 const auto input_nhwc_ptr =
59 _winograd_impl.input_transform->execute(_conv_args, input_nhwc_ptr, input_batch_stride, input_row_stride,
60 input_col_stride, win_transf_ptr, _winograd_impl.winograd_spec,
61 workspace->
buffer(),
info.thread_id, _nthreads);
65 arm_conv::ConvolutionArgs &_c_args,
67 : _winograd_impl{w_impl}, _conv_args{_c_args}, _nthreads{nthreads}
82 const unsigned int batch_idx = 3;
86 const size_t out_row_stride = dst_strides[
height_idx] / element_size_in_bytes;
87 const size_t out_col_stride = dst_strides[
width_idx] / element_size_in_bytes;
88 const size_t out_batch_stride = dst_strides[batch_idx] / element_size_in_bytes;
89 const auto wout_transf_ptr =
reinterpret_cast<const void *
>(
93 void *biases_data_ptr =
nullptr;
94 if (biases !=
nullptr)
100 _winograd_impl.output_transform->execute(_conv_args, wout_transf_ptr, _winograd_impl.winograd_spec, biases_data_ptr,
101 dst_nhwc_ptr, out_batch_stride, out_row_stride, out_col_stride,
102 workspace->
buffer(),
info.thread_id, _nthreads);