diff --git a/paddle/fluid/pybind/eager_properties.cc b/paddle/fluid/pybind/eager_properties.cc index 93f8fa6b1e49b9..677611385e66ad 100644 --- a/paddle/fluid/pybind/eager_properties.cc +++ b/paddle/fluid/pybind/eager_properties.cc @@ -100,10 +100,7 @@ PyObject* eager_tensor_properties_get_shape(EagerTensorObject* self, PyObject* eager_tensor_properties_get_place(EagerTensorObject* self, void* closure) { - auto place = self->eagertensor.place(); - auto obj = ::pybind11::cast(place); - obj.inc_ref(); - return obj.ptr(); + return ToPyObject(self->eagertensor.place()); } PyObject* eager_tensor_properties_get_place_str(EagerTensorObject* self, diff --git a/paddle/fluid/pybind/eager_utils.cc b/paddle/fluid/pybind/eager_utils.cc index 694f9d53855007..fb3462f342fd8c 100644 --- a/paddle/fluid/pybind/eager_utils.cc +++ b/paddle/fluid/pybind/eager_utils.cc @@ -329,5 +329,11 @@ PyObject* ToPyObject(const std::vector& value) { return result; } +PyObject* ToPyObject(const platform::Place& value) { + auto obj = ::pybind11::cast(value); + obj.inc_ref(); + return obj.ptr(); +} + } // namespace pybind } // namespace paddle diff --git a/paddle/fluid/pybind/eager_utils.h b/paddle/fluid/pybind/eager_utils.h index 320545fc4d70ca..49f56a61c31f1f 100644 --- a/paddle/fluid/pybind/eager_utils.h +++ b/paddle/fluid/pybind/eager_utils.h @@ -48,6 +48,7 @@ PyObject* ToPyObject(const std::vector& value); PyObject* ToPyObject(const std::vector& value); PyObject* ToPyObject(const std::vector& value); PyObject* ToPyObject(const std::vector& value); +PyObject* ToPyObject(const platform::Place& value); } // namespace pybind } // namespace paddle