Skip to content

[TRTLLM-15344][feat] nixl bounce v2 (6/6): NixlTransferAgent integration - #17608

Draft
chuangz0 wants to merge 6 commits into
NVIDIA:mainfrom
chuangz0:bounce-v2/p6-integration
Draft

[TRTLLM-15344][feat] nixl bounce v2 (6/6): NixlTransferAgent integration#17608
chuangz0 wants to merge 6 commits into
NVIDIA:mainfrom
chuangz0:bounce-v2/p6-integration

Conversation

@chuangz0

@chuangz0 chuangz0 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

@coderabbitai summary

Description

Part 6/6 (final) of splitting the NIXL bounce-buffer v2 transport (#15780) into reviewable pieces. This PR wires the transport into production:

  • AgentDesc gains an optional bounce capability handshake blob (backward-compatible: empty when bounce is disabled; serialized alongside the existing backend blob + VMM regions)
  • NixlTransferAgent owns the transport behind a pimpl (bounce::NixlBounceState) and routes eligible requests via shouldUseBounce; runtime opt-in with TRTLLM_NIXL_BOUNCE_ENABLE (off by default — when unset the agent behaves exactly as before)
  • isBounceEnabled() / getBounceSubmitCount() + nanobind bindings, so tests and deployments can verify engagement programmatically instead of grepping logs
  • CI hardening: the executor_bounce pre-merge group (added in part 1) now fails if bounceAgentE2ETest was not built, so pre-merge cannot silently lose the NIXL E2E coverage; adds the python single-process cache-transceiver test to l0_h100.yml

Stack: part 6/6, stacked on #17607 — review only the last commit (nixl bounce v2 (6/6)). Umbrella: #15780.

Test Coverage

  • cpp/tests/unit_tests/executor/bounce/bounceNixlE2ETest.cpp — real-NIXL loopback: two real agents, real RDMA
  • cpp/tests/unit_tests/executor/bounce/bounceAgentE2ETest.cpp — production path: bounce engaged via NixlTransferAgent::submitTransferRequests, public agent API only
  • tests/unittest/disaggregated/test_cache_transceiver_single_process.py — python-level transceiver test with bounce enabled
  • test_unit_tests[executor_bounce-90] (pre-merge since part 1) picks up the two new E2E gtests automatically and now enforces that they were built

PR Checklist

Please review the following before submitting your PR:

  • PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.

  • PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.

  • Test cases are provided for new code paths (see test instructions)

  • If PR introduces API changes, an appropriate PR label is added - either api-compatible or api-breaking. For api-breaking, include BREAKING in the PR title.

  • Any new dependencies have been scanned for license and vulnerabilities

  • CODEOWNERS updated if ownership changes

  • Documentation updated as needed

  • Update tava architecture diagram if there is a significant design change in PR.

  • The reviewers assigned automatically/manually are appropriate for the PR.

  • Please check this after reviewing the above items as appropriate for this PR.

GitHub Bot Help

To see a list of available CI bot commands, please comment /bot help.

🤖 Generated with Claude Code

@chuangz0 chuangz0 changed the title [None][feat] nixl bounce v2 (6/6): NixlTransferAgent integration [TRTLLM-15344][feat] nixl bounce v2 (6/6): NixlTransferAgent integration Aug 13, 2026
Buddy allocator, shared data arena, execution-context pool, and the
gather/scatter CUDA kernel, plus their unit tests. These are the
dependency-free building blocks of the NIXL bounce-buffer v2 transport;
nothing is wired into production paths yet.

Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
Bounce config (env-var parsing), wire message codec (control-plane
messages + capability handshake encode/decode), and the transfer-plan
builder that maps a TransferRequest onto bounce chunks. Unit-tested;
still not reachable from production paths.

Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
ControlChannel interface with ZMQ and NIXL-notification implementations,
plus the TransferEngine abstraction and its NIXL implementation. The
top-level cppzmq fetch is decoupled from ENABLE_UCX so bounce only needs
NIXL + zmq. The NIXL-backed sources gain their first consumers in the
transport PR (5/6); the zmq channel is unit-tested here.

Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
Credit-based scheduler that hands out bounce-buffer credits over the
buddy allocator, with anti-starvation handling for large chunks. Heavily
unit-tested (fairness, starvation, recycling, concurrency).

Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
The BounceTransport reactor: gather -> RDMA write into the remote bounce
arena -> scatter, driven by credits from the scheduler and the control
channel from PR 3/6. Compiled into the NIXL wrapper behind TLLM_BOUNCE_V2
(zmq-gated) but not yet reachable: the NixlTransferAgent integration and
the runtime opt-in land in PR 6/6. Covered by real-NIXL reactor tests
(byte-exact round-trip, failure paths, optional TSan variant).

Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
Wires the bounce transport into production: AgentDesc gains an optional
bounce capability handshake, NixlTransferAgent owns the transport behind
a pimpl and routes eligible requests via shouldUseBounce (opt-in with
TRTLLM_NIXL_BOUNCE_ENABLE, off by default), plus python bindings for
programmatic engagement checks. Adds the two end-to-end tests (real-NIXL
loopback and public-agent-API path), CI wiring (l0_h100), and a python
single-process transceiver test.

Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
@chuangz0
chuangz0 force-pushed the bounce-v2/p6-integration branch from e2dd683 to 5e03e08 Compare August 13, 2026 05:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant