pytorch
7864ae9f - Improve error messages for operator registration API (#47636)

Commit
4 years ago
Improve error messages for operator registration API (#47636) Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/47636 Previously: ``` terminate called after throwing an instance of 'c10::Error' what(): *cpp_signature == cpp_signature_->signature INTERNAL ASSERT FAILED at "caffe2/aten/src/ATen/core/dispatch/OperatorEntry.cpp":92, please report a bug to PyTorch. Tried to register a kernel (registered at buck-out/dev/gen/caffe2/generate-code/autograd/generated/TraceType_2.cpp:9847) for operator aten::div.out (registered at buck-out/dev/gen/caffe2/aten/gen_aten=TypeDefault.cpp/TypeDefault.cpp:3541) for dispatch key Tracer, but the C++ function signature at::Tensor& (at::Tensor const&, at::Tensor const&, at::Tensor&) mismatched with a previous kernel (registered at buck-out/dev/gen/caffe2/aten/gen_aten=CPUType.cpp/CPUType.cpp:2166) that had the signature at::Tensor& (at::Tensor&, at::Tensor const&, at::Tensor const&) ``` Now: ``` terminate called after throwing an instance of 'c10::Error' what(): *cpp_signature == cpp_signature_->signature INTERNAL ASSERT FAILED at "caffe2/aten/src/ATen/core/dispatch/OperatorEntry.cpp":96, please report a bug to PyTorch. Mismatch in kernel C++ signatures operator: aten::div.out(Tensor self, Tensor other, *, Tensor(a!) out) -> (Tensor(a!)) registered at buck-out/dev/gen/caffe2/aten/gen_aten=TypeDefault.cpp/TypeDefault.cpp:3541 kernel 1: at::Tensor& (at::Tensor&, at::Tensor const&, at::Tensor const&) dispatch key: CPU registered at buck-out/dev/gen/caffe2/aten/gen_aten=CPUType.cpp/CPUType.cpp:2166 kernel 2: at::Tensor& (at::Tensor const&, at::Tensor const&, at::Tensor&) dispatch key: Tracer registered at buck-out/dev/gen/caffe2/generate-code/autograd/generated/TraceType_2.cpp:9847 ``` Previously: ``` W1109 13:38:52.464170 1644302 OperatorEntry.cpp:117] Warning: Registering a kernel (registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:310) for operator aten::_backward (registered at buck-out/dev/gen/caffe2/aten/gen_aten=TypeDefault.cpp/TypeDefault.cpp:3549) for dispatch key Autograd that overwrote a previously registered kernel (registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:310) with the same dispatch key for the same operator. (function registerKernel) ``` Now: ``` W1109 13:49:40.501817 1698959 OperatorEntry.cpp:118] Warning: Overriding a previously registered kernel for the same operator and the same dispatch key operator: aten::_backward(Tensor self, Tensor[] inputs, Tensor? gradient=None, bool? retain_graph=None, bool create_graph=False) -> () registered at buck-out/dev/gen/caffe2/aten/gen_aten=TypeDefault.cpp/TypeDefault.cpp:3549 dispatch key: Autograd previous kernel: registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:310 new kernel: registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:310 (function registerKernel) ``` Previously: ``` terminate called after throwing an instance of 'c10::Error' what(): In registration for dummy_library::dummy_op: expected schema of operator to be "dummy_library::dummy_op(Tensor a) -> (Tensor)" (registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:298), but got inferred schema "(Tensor _0) -> ()" (registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:298). The number of returns is different. 1 vs 0 ``` Now: ``` terminate called after throwing an instance of 'c10::Error' what(): Inferred operator schema for a C++ kernel function doesn't match the expected function schema. operator: dummy_library::dummy_op expected schema: dummy_library::dummy_op(Tensor a) -> (Tensor) registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:298 inferred schema: (Tensor _0) -> () registered at caffe2/torch/csrc/autograd/VariableTypeManual.cpp:298 reason: The number of returns is different. 1 vs 0 ```` Previously: ``` terminate called after throwing an instance of 'c10::Error' what(): !cpp_signature_.has_value() || (CppSignature::make<FuncType>() == cpp_signature_->signature) INTERNAL ASSERT FAILED at "caffe2/aten/src/ATen/core/dispatch/OperatorEntry.h":170, please report a bug to PyTorch. Tried to access operator _test::dummy with a wrong signature. Accessed with void (at::Tensor, long) but the operator was registered with void (at::Tensor) (schema: registered by RegisterOperators, kernel: registered by RegisterOperators) This likely happened in a call to OperatorHandle::typed<Return (Args...)>(). Please make sure that the function signature matches the signature in the operator registration call. ``` Now: ``` terminate called after throwing an instance of 'c10::Error' what(): !cpp_signature_.has_value() || (CppSignature::make<FuncType>() == cpp_signature_->signature) INTERNAL ASSERT FAILED at "caffe2/aten/src/ATen/core/dispatch/OperatorEntry.h":169, please report a bug to PyTorch. Tried to access or call an operator with a wrong signature. operator: _test::dummy(Tensor dummy) -> () registered by RegisterOperators correct signature: void (at::Tensor) registered by RegisterOperators accessed/called as: void (at::Tensor, long) This likely happened in a call to OperatorHandle::typed<Return (Args...)>(). Please make sure that the function signature matches the signature in the operator registration call. ``` ghstack-source-id: 116359052 Test Plan: waitforsandcastle Reviewed By: ezyang Differential Revision: D24846523 fbshipit-source-id: 0ce7d487b725bfbdf2261e36027cb34ef50c1fea
Author
Parents
Loading