- const Tensor& input_t,
- IntArrayRef padding, IntArrayRef stride, IntArrayRef dilation, int64_t groups,
- bool benchmark, bool deterministic, bool allow_tf32)
- {
- return cudnn_convolution_backward_weight(
- "cudnn_convolution_backward_weight",
- weight_size, grad_output_t, input_t,
- padding, stride, dilation, groups, benchmark, deterministic, allow_tf32);
- }
-
- std::tuple<at::Tensor,at::Tensor> cudnn_convolution_backward(
- const at::Tensor& input, const at::Tensor& grad_output_t, const at::Tensor& weight,
- IntArrayRef padding, IntArrayRef stride, IntArrayRef dilation, int64_t groups,
- bool benchmark, bool deterministic, bool allow_tf32, std::array<bool,2> output_mask) {
-
- Tensor grad_output = grad_output_t.contiguous(input.suggest_memory_format());
-
- Tensor grad_input, grad_weight;
- if (input.numel() == 0) {
- if (output_mask[0]) {
- grad_input = at::empty_like(input, LEGACY_CONTIGUOUS_MEMORY_FORMAT);