mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/59206 Reland of https://github.com/pytorch/pytorch/pull/58423 This is part 2 of the previous PR. Here we address the remaining occurrences of "raw" Message, namely the ones within toMessageImpl. And since they're the last ones, we make the constructor of Message private, to prevent new usages from emerging. ghstack-source-id: 130202848 Test Plan: CI Reviewed By: mrshenli Differential Revision: D28623892 fbshipit-source-id: f815cf6b93e488c118e5d2298473e6e9d9f4c132
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#include <torch/csrc/distributed/rpc/unpickled_python_call.h>
|
|
|
|
#include <c10/util/C++17.h>
|
|
#include <torch/csrc/distributed/rpc/python_rpc_handler.h>
|
|
|
|
namespace torch {
|
|
namespace distributed {
|
|
namespace rpc {
|
|
|
|
UnpickledPythonCall::UnpickledPythonCall(
|
|
const SerializedPyObj& serializedPyObj,
|
|
bool isAsyncExecution)
|
|
: isAsyncExecution_(isAsyncExecution) {
|
|
auto& pythonRpcHandler = PythonRpcHandler::getInstance();
|
|
pybind11::gil_scoped_acquire ag;
|
|
pythonUdf_ = pythonRpcHandler.deserialize(serializedPyObj);
|
|
}
|
|
|
|
UnpickledPythonCall::~UnpickledPythonCall() {
|
|
// explicitly setting PyObject* to nullptr to prevent py::object's dtor to
|
|
// decref on the PyObject again.
|
|
// See Note [Destructing py::object] in python_ivalue.h
|
|
py::gil_scoped_acquire acquire;
|
|
pythonUdf_.dec_ref();
|
|
pythonUdf_.ptr() = nullptr;
|
|
}
|
|
|
|
c10::intrusive_ptr<Message> UnpickledPythonCall::toMessageImpl() && {
|
|
TORCH_INTERNAL_ASSERT(
|
|
false, "UnpickledPythonCall does not support toMessage().");
|
|
}
|
|
|
|
const py::object& UnpickledPythonCall::pythonUdf() const {
|
|
return pythonUdf_;
|
|
}
|
|
|
|
} // namespace rpc
|
|
} // namespace distributed
|
|
} // namespace torch
|