未验证 提交 5c7fce47 编写于 作者: W wanghuancoder 提交者: GitHub

refine python call error report (#47724)

* refine python call error report
上级 4b0f1b0c
...@@ -36,6 +36,9 @@ void* PackHook::operator()(const paddle::experimental::Tensor& tensor) { ...@@ -36,6 +36,9 @@ void* PackHook::operator()(const paddle::experimental::Tensor& tensor) {
auto args = PyTuple_New(1); auto args = PyTuple_New(1);
PyTuple_SET_ITEM(args, 0, paddle::pybind::ToPyObject(tensor)); PyTuple_SET_ITEM(args, 0, paddle::pybind::ToPyObject(tensor));
PyObject* ret = PyObject_Call(hook_, args, nullptr); PyObject* ret = PyObject_Call(hook_, args, nullptr);
PADDLE_ENFORCE_NOT_NULL(ret,
paddle::platform::errors::External(
pybind11::detail::error_string().c_str()));
Py_XDECREF(args); Py_XDECREF(args);
egr::Controller::Instance().SetHasGrad(grad_tmp); egr::Controller::Instance().SetHasGrad(grad_tmp);
return reinterpret_cast<void*>(ret); return reinterpret_cast<void*>(ret);
...@@ -49,6 +52,9 @@ void* PackHook::operator()(void* py_tensor) { ...@@ -49,6 +52,9 @@ void* PackHook::operator()(void* py_tensor) {
Py_INCREF(reinterpret_cast<PyObject*>(py_tensor)); Py_INCREF(reinterpret_cast<PyObject*>(py_tensor));
PyTuple_SET_ITEM(args, 0, reinterpret_cast<PyObject*>(py_tensor)); PyTuple_SET_ITEM(args, 0, reinterpret_cast<PyObject*>(py_tensor));
PyObject* ret = PyObject_Call(hook_, args, nullptr); PyObject* ret = PyObject_Call(hook_, args, nullptr);
PADDLE_ENFORCE_NOT_NULL(ret,
paddle::platform::errors::External(
pybind11::detail::error_string().c_str()));
Py_XDECREF(args); Py_XDECREF(args);
egr::Controller::Instance().SetHasGrad(grad_tmp); egr::Controller::Instance().SetHasGrad(grad_tmp);
return reinterpret_cast<void*>(ret); return reinterpret_cast<void*>(ret);
...@@ -69,6 +75,9 @@ paddle::experimental::Tensor UnPackHook::operator()(void* packed_value) { ...@@ -69,6 +75,9 @@ paddle::experimental::Tensor UnPackHook::operator()(void* packed_value) {
Py_INCREF(reinterpret_cast<PyObject*>(packed_value)); Py_INCREF(reinterpret_cast<PyObject*>(packed_value));
PyTuple_SET_ITEM(args, 0, reinterpret_cast<PyObject*>(packed_value)); PyTuple_SET_ITEM(args, 0, reinterpret_cast<PyObject*>(packed_value));
PyObject* ret = PyObject_Call(hook_, args, nullptr); PyObject* ret = PyObject_Call(hook_, args, nullptr);
PADDLE_ENFORCE_NOT_NULL(ret,
paddle::platform::errors::External(
pybind11::detail::error_string().c_str()));
Py_XDECREF(args); Py_XDECREF(args);
egr::Controller::Instance().SetHasGrad(grad_tmp); egr::Controller::Instance().SetHasGrad(grad_tmp);
...@@ -91,6 +100,9 @@ void* UnPackHook::operator()(void* packed_value, void* other) { ...@@ -91,6 +100,9 @@ void* UnPackHook::operator()(void* packed_value, void* other) {
Py_INCREF(reinterpret_cast<PyObject*>(packed_value)); Py_INCREF(reinterpret_cast<PyObject*>(packed_value));
PyTuple_SET_ITEM(args, 0, reinterpret_cast<PyObject*>(packed_value)); PyTuple_SET_ITEM(args, 0, reinterpret_cast<PyObject*>(packed_value));
PyObject* ret = PyObject_Call(hook_, args, nullptr); PyObject* ret = PyObject_Call(hook_, args, nullptr);
PADDLE_ENFORCE_NOT_NULL(ret,
paddle::platform::errors::External(
pybind11::detail::error_string().c_str()));
Py_XDECREF(args); Py_XDECREF(args);
egr::Controller::Instance().SetHasGrad(grad_tmp); egr::Controller::Instance().SetHasGrad(grad_tmp);
......
...@@ -139,6 +139,8 @@ PyObject* pylayer_method_apply(PyObject* cls, ...@@ -139,6 +139,8 @@ PyObject* pylayer_method_apply(PyObject* cls,
PyLayerObject* ctx = reinterpret_cast<PyLayerObject*>( PyLayerObject* ctx = reinterpret_cast<PyLayerObject*>(
PyObject_CallFunctionObjArgs(backward_function, nullptr)); PyObject_CallFunctionObjArgs(backward_function, nullptr));
if (!ctx) { if (!ctx) {
PADDLE_THROW(paddle::platform::errors::External(
pybind11::detail::error_string().c_str()));
return nullptr; return nullptr;
} }
VLOG(6) << "PyLayer construct PyLayerContext finish..."; VLOG(6) << "PyLayer construct PyLayerContext finish...";
......
...@@ -1525,8 +1525,8 @@ paddle::experimental::Tensor PyTensorHook::operator()( ...@@ -1525,8 +1525,8 @@ paddle::experimental::Tensor PyTensorHook::operator()(
} }
PADDLE_ENFORCE_NOT_NULL(res, PADDLE_ENFORCE_NOT_NULL(res,
platform::errors::Unavailable( paddle::platform::errors::External(
"Hook function of Tensor return a nullptr.")); pybind11::detail::error_string().c_str()));
if (res == Py_None) { if (res == Py_None) {
return var; return var;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册