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