Hook up non_differentiability in derivatives.yaml when no autograd function is generated. (#19520)

Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/19520
ghimport-source-id: a1272aa0b23692fb189974c4daba7b2e4e0dad50

Differential Revision: D15021380

Pulled By: gchanan

fbshipit-source-id: ec83efd4bb6d17714c060f13a0527a33a10452db
This commit is contained in:
Gregory Chanan
2019-04-21 13:43:02 -07:00
committed by Facebook Github Bot
parent 8868a4f20b
commit 83373e7755
4 changed files with 7 additions and 3 deletions

View File

@ -41,8 +41,7 @@
dispatch:
CUDA: _cudnn_rnn
- func: _cudnn_rnn_backward(Tensor input, Tensor[] weight, int weight_stride0, Tensor weight_buf, Tensor hx, Tensor? cx, Tensor output, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, BoolTensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[])
matches_jit_signature: False
- func: _cudnn_rnn_backward(Tensor input, Tensor[] weight, int weight_stride0, Tensor weight_buf, Tensor hx, Tensor? cx, Tensor output, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[])
dispatch:
CUDA: _cudnn_rnn_backward

View File

@ -1413,6 +1413,9 @@
output_differentiability: [True, True, True, False, False]
input, hx, cx, weight: "_cudnn_rnn_backward(input, weight, weight_stride0, result4, hx, cx, result0, grads[0], grads[1], grads[2], mode, hidden_size, num_layers, batch_first, dropout, train, bidirectional, batch_sizes, dropout_state, retain_variables ? result3.clone() : result3, grad_input_mask)"
- name: _cudnn_rnn_backward(Tensor input, TensorList weight, int64_t weight_stride0, Tensor weight_buf, Tensor hx, Tensor cx, Tensor output, Tensor grad_output, Tensor grad_hy, Tensor grad_cy, int64_t mode, int64_t hidden_size, int64_t num_layers, bool batch_first, double dropout, bool train, bool bidirectional, IntArrayRef batch_sizes, Tensor dropout_state, Tensor reserve, std::array<bool,4> output_mask)
dropout_state: non_differentiable
# miopen
- name: miopen_convolution_transpose(Tensor self, Tensor weight, Tensor bias, IntArrayRef padding, IntArrayRef output_padding, IntArrayRef stride, IntArrayRef dilation, int64_t groups, bool benchmark, bool deterministic)

View File

@ -491,6 +491,8 @@ def emit_body(declaration):
# assert name.startswith('_th_'), \
# "IndexTensor and BoolTensor are restricted to legacy _th_ functions only.
return False
if arg['name'] in declaration.get('non_differentiable_arg_names', []):
return False
return True
def find_args_with_derivatives(differentiable_inputs):

View File

@ -383,5 +383,5 @@ def match_declarations_with_differentiability_info(declarations, differentiabili
for declaration in declarations:
info = find_info(declaration)
declaration['derivative'] = info['autograd_fn'] if info else None
declaration['non_differentiable_arg_names'] = info['non_differentiable_arg_names'] if info else None
declaration['non_differentiable_arg_names'] = info['non_differentiable_arg_names'] if info else []
declaration['output_differentiability'] = info['output_differentiability'] if info else None