Only use hacky_wrapper_for_legacy_signatures if an op needs it (#45742)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/45742
Add a new flag to native_functions.yaml: `use_c10_dispatcher: hacky_wrapper_for_legacy_signatures`
and the codegen only wraps kernels in the aforementioned wrapper if that flag is set.
Apart from that, `use_c10_dispatcher: hacky_wrapper_for_legacy_signatures` is equivalent to `full`,
i.e. it has full boxing and unboxing support.
This greatly reduces the number of ops we apply the hacky_wrapper to, i.e. all ops marked as `use_c10_dispatcher: full` don't have it anymore.
ghstack-source-id: 113982139
Test Plan:
waitforsandcastle
vs fbcode:
https://www.internalfb.com/intern/fblearner/details/214511705/
vs base diff:
https://www.internalfb.com/intern/fblearner/details/214693207/
Reviewed By: ezyang
Differential Revision: D23328718
fbshipit-source-id: be120579477b3a05f26ca5f75025bfac37617620
diff --git a/aten/src/ATen/native/README.md b/aten/src/ATen/native/README.md
index f18114e..7fca0dc 100644
--- a/aten/src/ATen/native/README.md
+++ b/aten/src/ATen/native/README.md
@@ -330,6 +330,7 @@
```
use_c10_dispatcher: 'with_codegenerated_unboxing_wrapper'
+use_c10_dispatcher: 'hacky_wrapper_for_legacy_signatures'
use_c10_dispatcher: 'full'
```
@@ -340,6 +341,10 @@
and enabling `use_c10_dispatcher: full` for those will result in a compiler error.
For those, use `use_c10_dispatcher: 'with_codegenerated_unboxing_wrapper'` instead,
or just omit the argument because 'with_codegenerated_unboxing_wrapper' is the default.
+`use_c10_dispatcher: hacky_wrapper_for_legacy_signatures` is similar to `full`
+but adds a wrapper around the kernel before registering it with the dispatcher
+to support some legacy function signatures for kernels that we didn't migrate to
+the new signatures yet.
### `manual_kernel_registration`
diff --git a/aten/src/ATen/native/native_functions.yaml b/aten/src/ATen/native/native_functions.yaml
index f35845d..cf239db 100644
--- a/aten/src/ATen/native/native_functions.yaml
+++ b/aten/src/ATen/native/native_functions.yaml
@@ -47,7 +47,7 @@
# Computes the gradient of current tensor w.r.t. graph leaves.
- func: backward(Tensor self, Tensor? gradient=None, bool? retain_graph=None, bool create_graph=False) -> ()
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
manual_kernel_registration: True
variants: method
@@ -146,17 +146,17 @@
CUDA: _cudnn_rnn_flatten_weight
- func: _cudnn_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor? weight_buf, Tensor hx, Tensor? cx, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
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, Tensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[])
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: _cudnn_rnn_backward
- func: _cudnn_init_dropout_state(float dropout, bool train, int dropout_seed, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: _cudnn_init_dropout_state
@@ -473,13 +473,13 @@
- func: any.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
- func: arange(Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: arange.start_step(Scalar start, Scalar end, Scalar step, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: arange.out(Scalar end, *, Tensor(a!) out) -> Tensor(a!)
@@ -687,24 +687,24 @@
CUDA: baddbmm_out_cuda
- func: bartlett_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: bartlett_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: quantized_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor var, float eps, float output_scale, int output_zero_point) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
QuantizedCPU: quantized_batch_norm
- func: _batch_norm_impl_index(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> (Tensor, Tensor, Tensor, Tensor, int)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _batch_norm_impl_index_backward(int impl_index, Tensor input, Tensor grad_output, Tensor? weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var_transform, bool train, float eps, bool[3] output_mask, Tensor reservedSpace) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
# Sample bernoulli with values in `self` as probability.
- func: bernoulli(Tensor self, *, Generator? generator=None) -> Tensor
@@ -732,10 +732,10 @@
variants: function, method
- func: bilinear(Tensor input1, Tensor input2, Tensor weight, Tensor? bias) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: binary_cross_entropy(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
variants: function
dispatch:
@@ -750,7 +750,7 @@
CUDA: binary_cross_entropy_out_cuda
- func: binary_cross_entropy_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
variants: function
dispatch:
@@ -765,15 +765,15 @@
CUDA: binary_cross_entropy_backward_out_cuda
- func: binary_cross_entropy_with_logits(Tensor self, Tensor target, Tensor? weight=None, Tensor? pos_weight=None, int reduction=Mean) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function
- func: binary_cross_entropy_with_logits_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight=None, Tensor? pos_weight=None, int reduction=Mean) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function
- func: bincount(Tensor self, Tensor? weights=None, int minlength=0) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function, method
dispatch:
CPU: _bincount_cpu
@@ -840,10 +840,10 @@
CPU, CUDA: logical_or_out
- func: blackman_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: blackman_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: bmm(Tensor self, Tensor mat2) -> Tensor
use_c10_dispatcher: full
@@ -1002,34 +1002,34 @@
variants: method
- func: convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: convolution_overrideable(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: convolution_backward_overrideable(Tensor grad_output, Tensor input, Tensor weight, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool[3] output_mask) -> (Tensor grad_input, Tensor grad_weight, Tensor grad_bias)
use_c10_dispatcher: full
- func: _convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _convolution.deprecated(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _convolution_nogroup(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _convolution_double_backward(Tensor? ggI, Tensor? ggW, Tensor? ggb, Tensor gO, Tensor weight, Tensor self, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32, bool[3] output_mask) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: conv1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] dilation=1, int groups=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: conv2d(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1, int groups=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: conv3d(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1, int groups=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: conv_tbc(Tensor self, Tensor weight, Tensor bias, int pad=0) -> Tensor
use_c10_dispatcher: full
@@ -1039,13 +1039,13 @@
# NB: we inherit the goofy argument order from PyTorch torch.nn.functional
- func: conv_transpose1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] output_padding=0, int groups=1, int[1] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int groups=1, int[2] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: conv_transpose3d.input(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] output_padding=0, int groups=1, int[3] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: copy_(Tensor(a!) self, Tensor src, bool non_blocking=False) -> Tensor(a!)
use_c10_dispatcher: full
@@ -1105,18 +1105,18 @@
CUDA: cudnn_affine_grid_generator_backward
- func: cudnn_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: cudnn_batch_norm
# NB: You can only use this if you used cudnn_batch_norm training=True
- func: cudnn_batch_norm_backward(Tensor input, Tensor grad_output, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, float epsilon, Tensor reserveSpace) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: cudnn_batch_norm_backward
- func: cudnn_convolution.deprecated(Tensor self, Tensor weight, Tensor? bias, int[] padding, int[] stride, int[] dilation, int groups, bool benchmark, bool deterministic) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: cudnn_convolution_deprecated
@@ -1146,7 +1146,7 @@
CUDA: cudnn_convolution_backward_weight
- func: cudnn_convolution_transpose.deprecated(Tensor self, Tensor weight, Tensor? bias, int[] padding, int[] output_padding, int[] stride, int[] dilation, int groups, bool benchmark, bool deterministic) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: cudnn_convolution_transpose_deprecated
@@ -1416,7 +1416,7 @@
- func: _embedding_bag_forward_only(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False) -> (Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: _embedding_bag_forward_only_cpu
CUDA: _embedding_bag_forward_only_cuda
@@ -1425,22 +1425,22 @@
use_c10_dispatcher: full
- func: embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False) -> (Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False) -> (Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: _embedding_bag_cpu
CUDA: _embedding_bag_cuda
- func: _embedding_bag_backward(Tensor grad, Tensor indices, Tensor offsets, Tensor offset2bag, Tensor bag_size, Tensor maximum_indices, int num_weights, bool scale_grad_by_freq, int mode, bool sparse, Tensor? per_sample_weights) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _embedding_bag_sparse_backward(Tensor grad, Tensor indices, Tensor offsets, Tensor offset2bag, Tensor bag_size, int num_weights, bool scale_grad_by_freq, int mode, Tensor? per_sample_weights) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _embedding_bag_dense_backward(Tensor grad, Tensor indices, Tensor offsets, Tensor offset2bag, Tensor bag_size, Tensor maximum_indices, int num_weights, bool scale_grad_by_freq, int mode, Tensor? per_sample_weights) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: _embedding_bag_dense_backward_cpu
CUDA: _embedding_bag_dense_backward_cuda
@@ -1470,16 +1470,16 @@
variants: method
- func: new_full(Tensor self, int[] size, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: method
- func: new_zeros(Tensor self, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: method
# other overrides are to provide a more helpful error message that dtype is required
- func: _empty_affine_quantized(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, float scale=1, int zero_point=0, MemoryFormat? memory_format=contiguous_format) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: empty_affine_quantized_other_backends_stub
QuantizedCPU, QuantizedCUDA: empty_affine_quantized
@@ -1487,7 +1487,7 @@
# it's a factory function receiving a tensor argument, thus overriding explicitly
# other overrides are to provide a more helpful error message that dtype is required
- func: _empty_per_channel_affine_quantized(int[] size, *, Tensor scales, Tensor zero_points, int axis, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=contiguous_format) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
category_override: factory
dispatch:
CPU: empty_per_channel_affine_quantized_other_backends_stub
@@ -1512,11 +1512,11 @@
device_guard: False
- func: empty_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
device_guard: False
- func: empty_strided(int[] size, int[] stride, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: empty_strided_cpu
CUDA: empty_strided_cuda
@@ -1592,10 +1592,10 @@
device_guard: False
- func: eye(int n, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: eye.m(int n, int m, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: eye.out(int n, *, Tensor(a!) out) -> Tensor(a!)
dispatch:
@@ -1689,15 +1689,15 @@
device_guard: False
- func: full(int[] size, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: full.out(int[] size, Scalar fill_value, *, Tensor(a!) out) -> Tensor(a!)
- func: full_like(Tensor self, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: from_file(str filename, bool? shared=None, int? size=0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: from_file
@@ -1775,46 +1775,46 @@
CUDA: grid_sampler_3d_backward_cuda
- func: hann_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: hann_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: hamming_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: hamming_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: hamming_window.periodic_alpha(int window_length, bool periodic, float alpha, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: hamming_window.periodic_alpha_beta(int window_length, bool periodic, float alpha, float beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: kaiser_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: kaiser_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: kaiser_window.beta(int window_length, bool periodic, float beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: hinge_embedding_loss(Tensor self, Tensor target, float margin=1.0, int reduction=Mean) -> Tensor
use_c10_dispatcher: full
- func: group_norm(Tensor input, int num_groups, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enabled=True) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: native_group_norm(Tensor input, Tensor? weight, Tensor? bias, int N, int C, int HxW, int group, float eps) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU, CUDA: native_group_norm
Math: math_group_norm
- func: native_group_norm_backward(Tensor grad_out, Tensor input, Tensor mean, Tensor rstd, Tensor? weight, int N, int C, int HxW, int group, bool[3] output_mask) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU, CUDA: native_group_norm_backward
@@ -1893,7 +1893,7 @@
CPU, CUDA: _index_put_impl_
- func: instance_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool use_input_stats, float momentum, float eps, bool cudnn_enabled) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function
- func: inverse(Tensor self) -> Tensor
@@ -1979,16 +1979,16 @@
- func: kthvalue.dimname_out(Tensor self, int k, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
- func: layer_norm(Tensor input, int[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: native_layer_norm(Tensor input, Tensor? weight, Tensor? bias, int M, int N, float eps) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: layer_norm_cpu
CUDA: layer_norm_cuda
- func: native_layer_norm_backward(Tensor grad_out, Tensor input, Tensor mean, Tensor rstd, Tensor? weight, int M, int N, bool[3] output_mask) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: layer_norm_backward_cpu
CUDA: layer_norm_backward_cuda
@@ -2004,11 +2004,11 @@
- func: nan_to_num.out(Tensor self, float? nan=None, float? posinf=None, float? neginf=None, *, Tensor(a!) out) -> Tensor(a!)
- func: linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
- func: mkldnn_linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
MkldnnCPU: mkldnn_linear
@@ -2038,7 +2038,7 @@
use_c10_dispatcher: full
- func: linspace(Scalar start, Scalar end, int? steps=None, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: linspace.out(Scalar start, Scalar end, int? steps=None, *, Tensor(a!) out) -> Tensor(a!)
dispatch:
@@ -2118,7 +2118,7 @@
variants: function, method
- func: logspace(Scalar start, Scalar end, int? steps=None, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: logspace.out(Scalar start, Scalar end, int? steps=None, float base=10.0, *, Tensor(a!) out) -> Tensor(a!)
dispatch:
@@ -2375,7 +2375,7 @@
CPU, CUDA: amin_out
- func: mkldnn_convolution(Tensor self, Tensor weight, Tensor? bias, int[] padding, int[] stride, int[] dilation, int groups) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: mkldnn_convolution_backward_input(int[] self_size, Tensor grad_output, Tensor weight, int[] padding, int[] stride, int[] dilation, int groups, bool bias_defined) -> Tensor
use_c10_dispatcher: full
@@ -2387,17 +2387,17 @@
use_c10_dispatcher: full
- func: miopen_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_batch_norm
- func: miopen_batch_norm_backward(Tensor input, Tensor grad_output, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, float epsilon) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_batch_norm_backward
- func: miopen_convolution(Tensor self, Tensor weight, Tensor? bias, int[] padding, int[] stride, int[] dilation, int groups, bool benchmark, bool deterministic) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_convolution
@@ -2422,7 +2422,7 @@
CUDA: miopen_convolution_backward_weight
- func: miopen_convolution_transpose(Tensor self, Tensor weight, Tensor? bias, int[] padding, int[] output_padding, int[] stride, int[] dilation, int groups, bool benchmark, bool deterministic) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_convolution_transpose
@@ -2444,7 +2444,7 @@
CUDA: miopen_convolution_transpose_backward_weight
- func: miopen_depthwise_convolution(Tensor self, Tensor weight, Tensor? bias, int[] padding, int[] stride, int[] dilation, int groups, bool benchmark, bool deterministic) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_depthwise_convolution
@@ -2464,12 +2464,12 @@
CUDA: miopen_depthwise_convolution_backward_weight
- func: miopen_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor hx, Tensor? cx, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_rnn
- func: miopen_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[])
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: miopen_rnn_backward
@@ -2589,7 +2589,7 @@
device_guard: False
- func: native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: batch_norm_cpu
CUDA: batch_norm_cuda
@@ -2605,7 +2605,7 @@
CUDA: batch_norm_stats_cuda
- func: batch_norm_elemt(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor invstd, float eps) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: batch_norm_elemt_cuda
@@ -2615,33 +2615,33 @@
# for backward compatibility
- func: batch_norm_gather_stats(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, float momentum, float eps, int count) -> (Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: batch_norm_gather_stats_cuda
- func: batch_norm_gather_stats_with_counts(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, float momentum, float eps, Tensor counts) -> (Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: batch_norm_gather_stats_with_counts_cuda
- func: native_batch_norm_backward(Tensor grad_out, Tensor input, Tensor? weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_invstd, bool train, float eps, bool[3] output_mask) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: batch_norm_backward_cpu
CUDA: batch_norm_backward_cuda
- func: batch_norm_backward_reduce(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, bool input_g, bool weight_g, bool bias_g) -> (Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: batch_norm_backward_reduce_cuda
- func: batch_norm_backward_elemt(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, Tensor mean_dy, Tensor mean_dy_xmu) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: batch_norm_backward_elemt_cuda
- func: batch_norm_update_stats(Tensor input, Tensor? running_mean, Tensor? running_var, float momentum) -> (Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: batch_norm_update_stats_cpu
CUDA: batch_norm_update_stats_cuda
@@ -2653,7 +2653,7 @@
use_c10_dispatcher: full
- func: _nnpack_spatial_convolution(Tensor input, Tensor weight, Tensor? bias, int[2] padding, int[2] stride=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function
- func: _nnpack_spatial_convolution_backward(Tensor input, Tensor grad_output, Tensor weight, int[2] padding, bool[3] output_mask) -> (Tensor, Tensor, Tensor)
@@ -2672,12 +2672,12 @@
device_guard: False
- func: ones(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: ones.out(int[] size, *, Tensor(a!) out) -> Tensor(a!)
- func: ones_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: pairwise_distance(Tensor x1, Tensor x2, float p=2, float eps=1e-06, bool keepdim=False) -> Tensor
use_c10_dispatcher: full
@@ -2784,7 +2784,7 @@
- func: deg2rad.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
- func: scalar_tensor(Scalar s, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: rand.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
device_guard: False
@@ -2793,7 +2793,7 @@
device_guard: False
- func: rand(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: rand.generator(int[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
@@ -2802,15 +2802,15 @@
- func: rand.generator_out(int[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
- func: rand_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randint(int high, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randint.generator(int high, int[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- func: randint.low(int low, int high, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randint.low_generator(int low, int high, int[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
@@ -2823,13 +2823,13 @@
- func: randint.low_generator_out(int low, int high, int[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
- func: randint_like(Tensor self, int high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randint_like.low_dtype(Tensor self, int low, int high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randn(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randn.generator(int[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
@@ -2844,10 +2844,10 @@
- func: randn.generator_out(int[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
- func: randn_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randperm(int n, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: randperm.generator(int n, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
@@ -2859,10 +2859,10 @@
CUDA: randperm_out_cuda
- func: range.step(Scalar start, Scalar end, Scalar step=1, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: range(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: range.out(Scalar start, Scalar end, Scalar step=1, *, Tensor(a!) out) -> Tensor(a!)
dispatch:
@@ -3290,11 +3290,11 @@
# `torch.functional.py`. They shall be moved here once we have mapping between
# Python strings and C++ Enum in codegen.
- func: stft(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool normalized=False, bool? onesided=None, bool? return_complex=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function, method
- func: istft(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool center=True, bool normalized=False, bool? onesided=None, int? length=None, bool return_complex=False) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: function, method
- func: stride.int(Tensor self, int dim) -> int
@@ -3751,12 +3751,12 @@
device_guard: False
- func: zeros(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: zeros.out(int[] size, *, Tensor(a!) out) -> Tensor(a!)
- func: zeros_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _standard_gamma_grad(Tensor self, Tensor output) -> Tensor
use_c10_dispatcher: full
@@ -4157,27 +4157,27 @@
# FIXME: would be nicer if TensorOptions was optional based; not adding default arguments for options given
# the default would never make sense.
- func: sparse_coo_tensor.size(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: sparse_coo_tensor.indices(Tensor indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: sparse_coo_tensor.indices_size(Tensor indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _sparse_coo_tensor_unsafe(Tensor indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _validate_sparse_coo_tensor_args(Tensor indices, Tensor values, int[] size) -> ()
use_c10_dispatcher: full
- func: _sparse_coo_tensor_with_dims(int sparse_dim, int dense_dim, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
SparseCPU, SparseCUDA: new_with_dims_sparse
- func: _sparse_coo_tensor_with_dims_and_tensors(int sparse_dim, int dense_dim, int[] size, Tensor indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
SparseCPU, SparseCUDA: new_with_dims_and_tensor_sparse
@@ -4498,7 +4498,7 @@
# TensorOptions. Otherwise, an ambiguity error is thrown.
# See NOTE [ TensorOptions Constructors ].
- func: to.dtype_layout(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool non_blocking=False, bool copy=False, MemoryFormat? memory_format=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
variants: method
device_guard: False
@@ -4565,20 +4565,20 @@
# Fused RNN kernels
- func: _thnn_fused_lstm_cell(Tensor input_gates, Tensor hidden_gates, Tensor cx, Tensor? input_bias=None, Tensor? hidden_bias=None) -> (Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: _thnn_fused_lstm_cell_cuda
- func: _thnn_fused_lstm_cell_backward(Tensor? grad_hy, Tensor? grad_cy, Tensor cx, Tensor cy, Tensor workspace, bool has_bias) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: _thnn_fused_lstm_cell_backward_cuda
- func: _thnn_differentiable_lstm_cell_backward(Tensor? grad_hy, Tensor? grad_cy, Tensor input_gates, Tensor hidden_gates, Tensor? input_bias, Tensor? hidden_bias, Tensor cx, Tensor cy) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: _thnn_fused_gru_cell(Tensor input_gates, Tensor hidden_gates, Tensor hx, Tensor? input_bias=None, Tensor? hidden_bias=None) -> (Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CUDA: _thnn_fused_gru_cell_cuda
@@ -4588,7 +4588,7 @@
CUDA: _thnn_fused_gru_cell_backward_cuda
- func: _thnn_differentiable_gru_cell_backward(Tensor grad_hy, Tensor input_gates, Tensor hidden_gates, Tensor hx, Tensor? input_bias, Tensor? hidden_bias) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
# RNN cells and layers
- func: lstm.input(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor, Tensor)
@@ -4616,16 +4616,16 @@
use_c10_dispatcher: full
- func: lstm_cell(Tensor input, Tensor[] hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> (Tensor, Tensor)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
- func: rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
# Quantized RNN layer registration has been moved to C10 dispatch in `RNN.cpp`
@@ -5241,13 +5241,13 @@
variants: method, function
- func: tril_indices(int row, int col, int offset=0, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: tril_indices_cpu
CUDA: tril_indices_cuda
- func: triu_indices(int row, int col, int offset=0, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
dispatch:
CPU: triu_indices_cpu
CUDA: triu_indices_cuda
@@ -6711,7 +6711,7 @@
CUDA: legacy::cuda::_thnn_multi_margin_loss_forward_out
- func: multi_margin_loss(Tensor self, Tensor target, Scalar p=1, Scalar margin=1, Tensor? weight=None, int reduction=Mean) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: multi_margin_loss_cpu
@@ -6724,7 +6724,7 @@
CUDA: legacy::cuda::_thnn_multi_margin_loss_backward_out
- func: multi_margin_loss_backward(Tensor grad_output, Tensor self, Tensor target, Scalar p, Scalar margin, Tensor? weight=None, int reduction=Mean) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: multi_margin_loss_cpu_backward
@@ -6767,7 +6767,7 @@
python_module: nn
- func: nll_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, int ignore_index=-100) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
- func: nll_loss_forward.output(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index, *, Tensor(a!) output, Tensor(b!) total_weight) -> (Tensor(a!), Tensor(b!))
@@ -6777,7 +6777,7 @@
CUDA: legacy::cuda::_thnn_nll_loss_forward_out
- func: nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: nll_loss_forward_cpu
@@ -6790,7 +6790,7 @@
CUDA: legacy::cuda::_thnn_nll_loss_backward_out
- func: nll_loss_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index, Tensor total_weight) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: nll_loss_backward_cpu
@@ -6800,7 +6800,7 @@
python_module: nn
- func: nll_loss2d(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, int ignore_index=-100) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
- func: nll_loss2d_forward.output(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index, *, Tensor(a!) output, Tensor(b!) total_weight) -> (Tensor(a!), Tensor(b!))
@@ -6810,7 +6810,7 @@
CUDA: legacy::cuda::_thnn_nll_loss2d_forward_out
- func: nll_loss2d_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: nll_loss2d_forward_cpu
@@ -6823,7 +6823,7 @@
CUDA: legacy::cuda::_thnn_nll_loss2d_backward_out
- func: nll_loss2d_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index, Tensor total_weight) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: nll_loss2d_backward_cpu
@@ -7931,7 +7931,7 @@
CUDA: slow_conv_transpose2d_out_cuda
- func: slow_conv_transpose2d(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int[2] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: slow_conv_transpose2d_cpu
@@ -7957,7 +7957,7 @@
CUDA: slow_conv_transpose3d_out_cuda
- func: slow_conv_transpose3d(Tensor self, Tensor weight, int[3] kernel_size, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] output_padding=0, int[3] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: slow_conv_transpose3d_cpu
@@ -7980,7 +7980,7 @@
python_module: nn
- func: thnn_conv2d(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias=None, int[2] stride=1, int[2] padding=0) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
- func: thnn_conv2d_forward.output(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias, int[2] stride, int[2] padding, *, Tensor(a!) output, Tensor(b!) finput, Tensor(c!) fgrad_input) -> (Tensor(a!), Tensor(b!), Tensor(c!))
@@ -7990,7 +7990,7 @@
CUDA: legacy::cuda::_thnn_conv2d_forward_out
- func: thnn_conv2d_forward(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias, int[2] stride, int[2] padding) -> (Tensor output, Tensor finput, Tensor fgrad_input)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: slow_conv2d_forward_cpu
@@ -8013,7 +8013,7 @@
python_module: nn
- func: thnn_conv_depthwise2d(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
- func: thnn_conv_depthwise2d_forward.out(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias, int[2] stride, int[2] padding, int[2] dilation, *, Tensor(a!) out) -> Tensor(a!)
@@ -8022,7 +8022,7 @@
CUDA: legacy::cuda::_thnn_conv_depthwise2d_forward_out
- func: thnn_conv_depthwise2d_forward(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias, int[2] stride, int[2] padding, int[2] dilation) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CUDA: legacy::cuda::_thnn_conv_depthwise2d_forward
@@ -8042,7 +8042,7 @@
python_module: nn
- func: slow_conv3d(Tensor self, Tensor weight, int[3] kernel_size, Tensor? bias=None, int[3] stride=1, int[3] padding=0) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
- func: slow_conv3d_forward.output(Tensor self, Tensor weight, int[3] kernel_size, Tensor? bias, int[3] stride, int[3] padding, *, Tensor(a!) output, Tensor(b!) finput, Tensor(c!) fgrad_input) -> (Tensor(a!), Tensor(b!), Tensor(c!))
@@ -8051,7 +8051,7 @@
CPU: slow_conv3d_forward_out_cpu
- func: slow_conv3d_forward(Tensor self, Tensor weight, int[3] kernel_size, Tensor? bias, int[3] stride, int[3] padding) -> (Tensor output, Tensor finput, Tensor fgrad_input)
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: slow_conv3d_forward_cpu
@@ -8068,7 +8068,7 @@
CPU: slow_conv3d_backward_cpu
- func: slow_conv_dilated2d(Tensor self, Tensor weight, int[2] kernel_size, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: slow_conv_dilated2d_cpu
@@ -8082,7 +8082,7 @@
CUDA: slow_conv_dilated2d_backward_cuda
- func: slow_conv_dilated3d(Tensor self, Tensor weight, int[3] kernel_size, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1) -> Tensor
- use_c10_dispatcher: full
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: nn
dispatch:
CPU: slow_conv_dilated3d_cpu
@@ -8248,13 +8248,13 @@
variants: function
- func: fft_fftfreq(int n, float d=1.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: fft
- use_c10_dispatcher: full
variants: function
- func: fft_rfftfreq(int n, float d=1.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
+ use_c10_dispatcher: hacky_wrapper_for_legacy_signatures
python_module: fft
- use_c10_dispatcher: full
variants: function
- func: fft_fftshift(Tensor self, int[1]? dim=None) -> Tensor
diff --git a/tools/autograd/gen_variable_type.py b/tools/autograd/gen_variable_type.py
index 6e0dc07..a1f162f 100644
--- a/tools/autograd/gen_variable_type.py
+++ b/tools/autograd/gen_variable_type.py
@@ -424,7 +424,7 @@
def maybe_unwrap_optional_tensors(option, formals, args):
assert len(formals) == len(args), \
"Assert we didn't screw up with method_args removing self but forgetting to remove it from formals"
- if option['use_c10_dispatcher'] == 'full':
+ if option['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
def maybe_unwrap_optional_tensor(formal, arg):
if formal['dynamic_type'] == 'Tensor' and formal['is_nullable']:
return "{}.has_value() ? *{} : at::Tensor()".format(arg, arg)
@@ -532,9 +532,10 @@
else:
return ADD_TRACE_INPUT.substitute(name=name, input=value)
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
trace_inputs = declaration['schema_order_arguments']
else:
+ assert declaration['use_c10_dispatcher'] == 'with_codegenerated_unboxing_wrapper'
trace_inputs = declaration['arguments']
if is_out_overload(declaration):
@@ -543,9 +544,10 @@
out_input = trace_inputs[0]
trace_inputs = trace_inputs[1:]
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
trace_input_spec = [(i['name'], i['name'], i['type'], i.get('is_nullable')) for i in trace_inputs]
else:
+ assert declaration['use_c10_dispatcher'] == 'with_codegenerated_unboxing_wrapper'
trace_input_spec = [(i['name'], i['name'], i['simple_type'], i.get('is_nullable')) for i in trace_inputs]
trace_inputs = \
@@ -690,7 +692,7 @@
registration_declarations = []
for declaration in aten_declarations:
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
declaration_formals = declaration['schema_order_formals']
else:
assert declaration['use_c10_dispatcher'] == 'with_codegenerated_unboxing_wrapper'
@@ -725,7 +727,7 @@
for declaration in aten_declarations:
formal_types = [arg['type'] for arg in declaration['arguments']]
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
formals = declaration['schema_order_formals']
else:
assert declaration['use_c10_dispatcher'] == 'with_codegenerated_unboxing_wrapper'
@@ -736,7 +738,7 @@
body = emit_body(declaration)
type_definitions.append(METHOD_DEFINITION.substitute(
declaration, type_definition_body=body, formals=formals))
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
wrapper_registrations.append(WRAPPER_REGISTRATION.substitute(
declaration, class_type='VariableType'))
else:
@@ -753,10 +755,11 @@
trace_method_definitions.append(METHOD_DEFINITION.substitute(
declaration, type_definition_body=trace_body, formals=formals))
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
trace_wrapper_registrations.append(WRAPPER_REGISTRATION.substitute(
declaration, class_type='TraceType'))
else:
+ assert declaration['use_c10_dispatcher'] == 'with_codegenerated_unboxing_wrapper'
trace_wrapper_registrations.append(UNBOXEDONLY_WRAPPER_REGISTRATION.substitute(
declaration, class_type='TraceType'))
@@ -798,7 +801,7 @@
trace_dispatch_args = ['op', 'c10::DispatchKey::Tracer'] + declaration['args']
schema_order_trace_dispatch_args = ['op', 'c10::DispatchKey::Tracer'] + declaration['schema_order_args']
assign_return_values = '{} = '.format(tie_return_values) if not modifies_arguments and not returns_void else ''
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['hacky_wrapper_for_legacy_signatures', 'full']:
call = TRACE_DISPATCH.substitute(
declaration,
schema_order_arg_types=schema_order_arg_types,
@@ -1262,7 +1265,7 @@
body = []
unpacked_args = []
unpacked_args_simple_type = {}
- if declaration['use_c10_dispatcher'] == 'full':
+ if declaration['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']:
arguments = declaration['schema_order_arguments']
else:
assert declaration['use_c10_dispatcher'] == 'with_codegenerated_unboxing_wrapper'
diff --git a/tools/codegen/api/cpp.py b/tools/codegen/api/cpp.py
index f8fd2fd..0abbcb0 100644
--- a/tools/codegen/api/cpp.py
+++ b/tools/codegen/api/cpp.py
@@ -86,7 +86,7 @@
if mutable:
return 'Tensor &' # TODO: fix this discrepancy
else:
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
return 'const c10::optional<Tensor>&'
else:
return 'const Tensor &'
@@ -101,7 +101,7 @@
elif str(t.elem) == 'Dimname':
return "DimnameList"
# TODO: do something reasonable about lists of optional tensors
- elif not local.use_c10_dispatcher() is UseC10Dispatcher.full and str(t.elem) == 'Tensor?':
+ elif (not local.use_c10_dispatcher().dispatcher_uses_new_style()) and str(t.elem) == 'Tensor?':
return "TensorList"
elem = argumenttype_type(t.elem, mutable=mutable)
# TODO: explicitly qualify namespace here
diff --git a/tools/codegen/api/dispatcher.py b/tools/codegen/api/dispatcher.py
index 6cb141c..b6011d0 100644
--- a/tools/codegen/api/dispatcher.py
+++ b/tools/codegen/api/dispatcher.py
@@ -29,7 +29,7 @@
#
def argumenttype_type(t: Type, *, mutable: bool) -> str:
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
# This is a faux amis. If it makes sense in the future to add
# more special cases here, or invert things so cpp.argument_type
# calls this, or just completely inline the function, please do
@@ -49,7 +49,7 @@
return cpp.returns_type(rs)
def argument(a: Argument) -> DispatcherArgument:
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
return DispatcherArgument(
type=argument_type(a),
name=a.name,
@@ -67,7 +67,7 @@
return cpp.name(func)
def arguments(func: FunctionSchema) -> Sequence[DispatcherArgument]:
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
return list(map(argument, itertools.chain(func.out_arguments, func.arguments, func.kwarg_only_arguments)))
else:
return [
@@ -106,7 +106,8 @@
elif isinstance(a.argument, ThisArgument):
return [DispatcherExpr(type=argument_type(a.argument.argument), expr=a.name)]
elif isinstance(a.argument, Argument):
- if a.name == 'memory_format' and tensor_options is not None and local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if a.name == 'memory_format' and tensor_options is not None and \
+ local.use_c10_dispatcher().dispatcher_uses_new_style():
return [DispatcherExpr(
type=argument_type(a.argument),
expr=f'c10::impl::check_tensor_options_and_extract_memory_format({tensor_options.name}, {a.name})')
@@ -125,7 +126,7 @@
# I don't think this is entirely sound, but it should be reasonably
# close
def legacydispatcherarguments_exprs(args: Sequence[LegacyDispatcherArgument]) -> Sequence[DispatcherExpr]:
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
process_tensoroptions = ProcessTensoroptions.SCATTER
else:
process_tensoroptions = ProcessTensoroptions.PASS_THROUGH
@@ -136,7 +137,7 @@
process_tensoroptions=process_tensoroptions)
def exprs(args: Sequence[DispatcherArgument]) -> Sequence[DispatcherExpr]:
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
process_tensoroptions = ProcessTensoroptions.SCATTER
else:
process_tensoroptions = ProcessTensoroptions.PASS_THROUGH
diff --git a/tools/codegen/gen.py b/tools/codegen/gen.py
index 45adede..69e1aae 100644
--- a/tools/codegen/gen.py
+++ b/tools/codegen/gen.py
@@ -287,11 +287,12 @@
if not def_only and not f.manual_kernel_registration and (dispatch is not None or f.dispatch is None):
# Figure out which signature the function is
if local.use_c10_dispatcher() is UseC10Dispatcher.full:
-
+ payload = f"TORCH_FN({type_name})"
+ elif local.use_c10_dispatcher() is UseC10Dispatcher.hacky_wrapper_for_legacy_signatures:
payload = "c10::impl::hacky_wrapper_for_legacy_signatures<" \
f"{returns_type} ({dispatcher_args_types_str})>(TORCH_FN({type_name}))"
-
else:
+ assert local.use_c10_dispatcher() is UseC10Dispatcher.with_codegenerated_unboxing_wrapper
payload = f"torch::CppFunction::makeUnboxedOnly(&{type_name})"
# Annotate it with dispatch information if necessary
@@ -383,7 +384,7 @@
return op.call({exprs_str(signature_group.signature)});
}}
"""
- elif local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ elif local.use_c10_dispatcher().dispatcher_uses_new_style():
# for c10-full ops, the scattered version is the real op and the gathered version is a proxy
# calling into the scattered version
return f"""
@@ -473,7 +474,7 @@
return op.call({exprs_str(signature_group.signature)});
}}
"""
- elif local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ elif local.use_c10_dispatcher().dispatcher_uses_new_style():
# for c10-full ops, the scattered version is the real op and the gathered version is a proxy
# calling into the scattered version
return f"""
@@ -565,7 +566,7 @@
dispatcher_args = dispatcher.arguments(f.func)
args: Union[Sequence[DispatcherArgument], Sequence[LegacyDispatcherArgument]]
- if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ if local.use_c10_dispatcher().dispatcher_uses_new_style():
returns_type = dispatcher_returns_type
args = dispatcher_args
exprs = dispatcher.exprs(dispatcher_args)
@@ -605,10 +606,13 @@
"""
elif target is Target.REGISTRATION:
if local.use_c10_dispatcher() is UseC10Dispatcher.full:
+ return f"""m.impl("aten::{f.func.name}", TORCH_FN({name}));"""
+ elif local.use_c10_dispatcher() is UseC10Dispatcher.hacky_wrapper_for_legacy_signatures:
return f"""m.impl("aten::{f.func.name}",
c10::impl::hacky_wrapper_for_legacy_signatures<{dispatcher_returns_type} ({', '.join(a.type for a in dispatcher_args)})>(
TORCH_FN({name})));"""
else:
+ assert local.use_c10_dispatcher() is UseC10Dispatcher.with_codegenerated_unboxing_wrapper
return f"""m.impl_UNBOXED("aten::{f.func.name}", {name});"""
elif target is Target.DECLARATION:
raise AssertionError()
diff --git a/tools/codegen/model.py b/tools/codegen/model.py
index 8556e16..a8d0c88 100644
--- a/tools/codegen/model.py
+++ b/tools/codegen/model.py
@@ -47,10 +47,13 @@
# Valid values of the 'variants' field in native_functions.yaml
Variant = Enum('Variant', ('function', 'method'))
-UseC10Dispatcher = Enum('UseC10Dispatcher', (
- 'full',
- 'with_codegenerated_unboxing_wrapper'
-))
+class UseC10Dispatcher(Enum):
+ full = 0
+ with_codegenerated_unboxing_wrapper = 1
+ hacky_wrapper_for_legacy_signatures = 2
+
+ def dispatcher_uses_new_style(self) -> bool:
+ return self in [UseC10Dispatcher.full, UseC10Dispatcher.hacky_wrapper_for_legacy_signatures]
# The basic input to the code generation is native_functions.yaml.
# The name "native", BTW, comes from the distinction between native
@@ -128,6 +131,8 @@
use_c10_dispatcher = UseC10Dispatcher.with_codegenerated_unboxing_wrapper
elif use_c10_dispatcher_s == 'full':
use_c10_dispatcher = UseC10Dispatcher.full
+ elif use_c10_dispatcher_s == 'hacky_wrapper_for_legacy_signatures':
+ use_c10_dispatcher = UseC10Dispatcher.hacky_wrapper_for_legacy_signatures
else:
raise AssertionError(
f'use_c10_dispatcher must be unset or set to full, got {use_c10_dispatcher}')
diff --git a/tools/jit/gen_unboxing_wrappers.py b/tools/jit/gen_unboxing_wrappers.py
index 1af3fda..f140308 100644
--- a/tools/jit/gen_unboxing_wrappers.py
+++ b/tools/jit/gen_unboxing_wrappers.py
@@ -334,7 +334,7 @@
return_type=return_type,
formals_types_with_leading_comma=argument_types_with_leading_comma)
else:
- assert decl['use_c10_dispatcher'] == 'full'
+ assert decl['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']
if is_namespace_function:
return CALL_NAMESPACE.substitute(name=decl['name'],
args=pack_arguments(args),
@@ -381,7 +381,7 @@
op_capture=op_capture,
lvalues=lvalues)
else:
- assert decl['use_c10_dispatcher'] == 'full'
+ assert decl['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']
return constructor
@@ -488,7 +488,7 @@
shards[x].append(OPERATOR.substitute(signature=decl['schema_string'],
op=emit_decl_variant(decl)))
else:
- assert decl['use_c10_dispatcher'] == 'full'
+ assert decl['use_c10_dispatcher'] in ['full', 'hacky_wrapper_for_legacy_signatures']
for i, shard in enumerate(shards):
env = {