#pragma once #include #include #include #include namespace torch::distributed::rpc { // Converts an internal ivalue::Future of Message into a user-facing // ivalue::Future of py::object type by creating a new ivalue::Future and call // its markCompleted as a callback in the given ivalue::Future. // If hasValue is true, the Message will be converted into a py::object and then // wrap it with an IValue. If hasValue is false, this ivalue::Future is only // used for signaling and launching callbacks. In this case, the message will be // discarded and then set the ivalue::Future using an empty IValue or the given // FutureError if there is an error. c10::intrusive_ptr toPyJitFuture( const c10::intrusive_ptr& messageJitFuture, bool hasValue = true); c10::intrusive_ptr pyRpcBuiltin( const WorkerInfo& dst, const std::string& opName, const py::args& args, const py::kwargs& kwargs, const float rpcTimeoutSeconds); c10::intrusive_ptr pyRpcPythonUdf( const WorkerInfo& dst, std::string& pickledPythonUDF, std::vector& tensors, const float rpcTimeoutSeconds, const bool isAsyncExecution); c10::intrusive_ptr pyRpcTorchscript( const std::string& dstWorkerName, const std::string& qualifiedNameStr, const py::tuple& argsTuple, const py::dict& kwargsDict, const float rpcTimeoutSeconds, const bool isAsyncExecution); PyRRef pyRemoteBuiltin( const WorkerInfo& dst, const std::string& opName, const float rpcTimeoutSeconds, const py::args& args, const py::kwargs& kwargs); PyRRef pyRemotePythonUdf( const WorkerInfo& dst, std::string& pickledPythonUDF, std::vector& tensors, const float rpcTimeoutSeconds, const bool isAsyncExecution); PyRRef pyRemoteTorchscript( const std::string& dstWorkerName, const std::string& qualifiedNameStr, const float rpcTimeoutSeconds, const bool isAsyncExecution, const py::args& args, const py::kwargs& kwargs); } // namespace torch::distributed::rpc