14 #if defined(_HAS_CUDA_) 22 void conv2d(Tensor<T> *x, Tensor<T> *w, Tensor<T> *out);
25 void conv2d_grad_data(Tensor<T> *w, Tensor<T> *grad, Tensor<T> *out);
28 void conv2d_grad_filter(Tensor<T> *x, Tensor<T> *grad, Tensor<T> *out);
32 #if defined(_HAS_CUDA_) 34 struct conv2d_cudnn_settings {
35 cudnnConvolutionDescriptor_t conv_desc;
36 cudnnConvolutionFwdAlgo_t algo;
37 cudnnConvolutionBwdDataAlgo_t bwd_data_algo;
38 cudnnConvolutionBwdFilterAlgo_t bwd_filter_algo;
39 cudnnFilterDescriptor_t filter_desc;
41 size_t workspace_size;
42 void *grad_data_workspace;
43 size_t grad_data_workspace_size;
44 void *grad_filter_workspace;
45 size_t grad_filter_workspace_size;
49 void conv2d_device(Tensor<T> *x, Tensor<T> *w, Tensor<T> *out, conv2d_cudnn_settings settings);
52 void conv2d_grad_data_device(Tensor<T> *w, Tensor<T> *grad, Tensor<T> *out, conv2d_cudnn_settings settings);
55 void conv2d_grad_filter_device(Tensor<T> *x, Tensor<T> *grad, Tensor<T> *out, conv2d_cudnn_settings settings);
Conv2dLayer< T > * conv2d(op::Operation< T > *input, const std::vector< unsigned int > &filter_shape, int out_channels, const std::vector< unsigned int > &padding, const std::vector< unsigned int > &strides, const std::vector< unsigned int > &dilation_rates, bool use_cross_correlation, bool use_bias, tensor_filler_t< T > filter_initializer, tensor_filler_t< T > bias_initializer)
Definition: conv2dlayer.cpp:91