Skip to content

Commit e44632c

Browse files
Shixiaowei02chuangz0Tabrizianqiaoxj07
authored andcommitted
[None][feat] Dis-agg transceiver mass integration from the DSV4 branch (NVIDIA#15222)
Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com> Signed-off-by: Fanrong Li <lfr-0531@users.noreply.github.com> Signed-off-by: Shixiaowei02 <39303645+Shixiaowei02@users.noreply.github.com> Signed-off-by: yuhangh <58161490+heyuhhh@users.noreply.github.com> Signed-off-by: Iman Tabrizian <10105175+tabrizian@users.noreply.github.com> Signed-off-by: Xianjie Qiao <xqiao@nvidia.com> Signed-off-by: Xianjie <5410381+qiaoxj07@users.noreply.github.com> Co-authored-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com> Co-authored-by: Iman Tabrizian <10105175+tabrizian@users.noreply.github.com> Co-authored-by: Xianjie Qiao <5410381+qiaoxj07@users.noreply.github.com>
1 parent 8ac0a28 commit e44632c

24 files changed

Lines changed: 1487 additions & 222 deletions

cpp/tensorrt_llm/executor/cache_transmission/nixl_utils/agentBindings.cpp

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -214,39 +214,53 @@ NB_MODULE(tensorrt_llm_transfer_agent_binding, m)
214214
.def_rw("backend_params", &kvc::BaseAgentConfig::backendParams);
215215

216216
// BaseTransferAgent class (abstract base)
217+
// All transfer-engine operations release the GIL: they may block on NIXL /
218+
// UCX / network / GPU memory pinning, and holding the GIL across them
219+
// starves Python listener / progress threads in the same process.
217220
nb::class_<kvc::BaseTransferAgent>(m, "BaseTransferAgent")
218-
.def("register_memory", &kvc::BaseTransferAgent::registerMemory, nb::arg("descs"))
219-
.def("deregister_memory", &kvc::BaseTransferAgent::deregisterMemory, nb::arg("descs"))
221+
.def("register_memory", &kvc::BaseTransferAgent::registerMemory, nb::arg("descs"),
222+
nb::call_guard<nb::gil_scoped_release>())
223+
.def("deregister_memory", &kvc::BaseTransferAgent::deregisterMemory, nb::arg("descs"),
224+
nb::call_guard<nb::gil_scoped_release>())
220225
.def("load_remote_agent",
221226
nb::overload_cast<std::string const&, kvc::AgentDesc const&>(&kvc::BaseTransferAgent::loadRemoteAgent),
222-
nb::arg("name"), nb::arg("agent_desc"))
227+
nb::arg("name"), nb::arg("agent_desc"), nb::call_guard<nb::gil_scoped_release>())
223228
.def("load_remote_agent_by_connection",
224229
nb::overload_cast<std::string const&, kvc::ConnectionInfoType const&>(
225230
&kvc::BaseTransferAgent::loadRemoteAgent),
226-
nb::arg("name"), nb::arg("connection_info"))
227-
.def("get_local_agent_desc", &kvc::BaseTransferAgent::getLocalAgentDesc)
228-
.def("invalidate_remote_agent", &kvc::BaseTransferAgent::invalidateRemoteAgent, nb::arg("name"))
231+
nb::arg("name"), nb::arg("connection_info"), nb::call_guard<nb::gil_scoped_release>())
232+
.def("get_local_agent_desc", &kvc::BaseTransferAgent::getLocalAgentDesc,
233+
nb::call_guard<nb::gil_scoped_release>())
234+
.def("invalidate_remote_agent", &kvc::BaseTransferAgent::invalidateRemoteAgent, nb::arg("name"),
235+
nb::call_guard<nb::gil_scoped_release>())
229236
.def(
230237
"submit_transfer_requests",
231238
[](kvc::BaseTransferAgent& self, kvc::TransferRequest const& request)
232239
{ return self.submitTransferRequests(request).release(); },
233-
nb::arg("request"), nb::rv_policy::take_ownership, nb::keep_alive<0, 1>())
234-
.def(
235-
"notify_sync_message", &kvc::BaseTransferAgent::notifySyncMessage, nb::arg("name"), nb::arg("sync_message"))
236-
.def("get_notified_sync_messages", &kvc::BaseTransferAgent::getNotifiedSyncMessages)
237-
.def("get_local_connection_info", &kvc::BaseTransferAgent::getLocalConnectionInfo)
238-
.def("check_remote_descs", &kvc::BaseTransferAgent::checkRemoteDescs, nb::arg("name"), nb::arg("memory_descs"));
240+
nb::arg("request"), nb::rv_policy::take_ownership, nb::call_guard<nb::gil_scoped_release>(),
241+
nb::keep_alive<0, 1>())
242+
.def("notify_sync_message", &kvc::BaseTransferAgent::notifySyncMessage, nb::arg("name"),
243+
nb::arg("sync_message"), nb::call_guard<nb::gil_scoped_release>())
244+
.def("get_notified_sync_messages", &kvc::BaseTransferAgent::getNotifiedSyncMessages,
245+
nb::call_guard<nb::gil_scoped_release>())
246+
.def("get_local_connection_info", &kvc::BaseTransferAgent::getLocalConnectionInfo,
247+
nb::call_guard<nb::gil_scoped_release>())
248+
.def("check_remote_descs", &kvc::BaseTransferAgent::checkRemoteDescs, nb::arg("name"), nb::arg("memory_descs"),
249+
nb::call_guard<nb::gil_scoped_release>());
239250

240251
#ifdef ENABLE_NIXL
241252
// NixlTransferStatus class - release GIL for blocking operations
242253
nb::class_<kvc::NixlTransferStatus, kvc::TransferStatus>(m, "NixlTransferStatus")
243254
.def("is_completed", &kvc::NixlTransferStatus::isCompleted, nb::call_guard<nb::gil_scoped_release>())
244255
.def("wait", &kvc::NixlTransferStatus::wait, nb::arg("timeout_ms") = -1,
245-
nb::call_guard<nb::gil_scoped_release>());
256+
nb::call_guard<nb::gil_scoped_release>())
257+
.def("get_last_status", &kvc::NixlTransferStatus::getLastStatus)
258+
.def("get_last_status_str", &kvc::NixlTransferStatus::getLastStatusStr);
246259

247260
// NixlTransferAgent class
248261
nb::class_<kvc::NixlTransferAgent, kvc::BaseTransferAgent>(m, "NixlTransferAgent")
249-
.def(nb::init<kvc::BaseAgentConfig const&>(), nb::arg("config"))
262+
.def(nb::init<kvc::BaseAgentConfig const&>(), nb::arg("config"), nb::call_guard<nb::gil_scoped_release>())
263+
.def("shutdown", &kvc::NixlTransferAgent::shutdown, nb::call_guard<nb::gil_scoped_release>())
250264
.def("register_memory", &kvc::NixlTransferAgent::registerMemory, nb::arg("descs"))
251265
.def("deregister_memory", &kvc::NixlTransferAgent::deregisterMemory, nb::arg("descs"))
252266
.def("load_remote_agent",

0 commit comments

Comments
 (0)