Skip to content

[ROCm] Bump UCX to v1.23.0-rc1 so NIXL uses rocm_ipc - #62827

Merged
AndreasKaratzas merged 4 commits into
vllm-project:mainfrom
AndreasKaratzas:akaratza_ucx_rocm_ipc_errh
Oct 23, 2026
Merged

AndreasKaratzas merged 4 commits into
vllm-project:mainfrom
AndreasKaratzas:akaratza_ucx_rocm_ipc_errh

Conversation

@AndreasKaratzas

Copy link
Copy Markdown
Member
  • Bump UCX_BRANCH to v1.23.0-rc1 in Dockerfile.rocm and Dockerfile.rocm_72
  • Drop UCX_RMA_PPLN_ENABLE=y
  • Set UCX_ROCM_IPC_SIGPOOL_MAX_ELEMS=inf, matching the existing rocm_copy setting

NIXL opens its UCX endpoints with peer error handling, and at the current UCX pin rocm_ipc does not advertise that capability, so NIXL never uses it for GPU-to-GPU reads on ROCm. Reads fall back to TCP emulation, or, with the UCX_RMA_PPLN_ENABLE=y override from #49251, to a host-staged pipeline whose fragment pool grows until /dev/shm allocations fail; under long-context P/D load that stalled transfers and killed the decode engine. openucx/ucx#11977, included in v1.23.0-rc1, adds the capability. With it, rocm_ipc is selected again and the override is no longer needed. Each in-flight rocm_ipc copy holds one HSA signal, and the 1024 default made multi-request NIXL reads fail, hence the signal pool setting.

On MI355, a 256 MiB NIXL READ between two GPUs goes from 0.48 GB/s (8.8 GB/s with the override) to 60.9 GB/s. With NIXL at its current pin built against the new UCX the same way as the Dockerfile, the MI355 NixlConnector groups pass: spec decode acceptance, PD accuracy sweep, AITER PD accuracy and DP EP PD accuracy. The PD accuracy sweep's lm_eval time drops from 370s to 183s. Step-5 1P1D (TP4 + TP4) passed 10/10 rounds of GSM8K and long-context NIAH; on the current image it hung in round 5.

AI assistance (Claude Code) was used to draft this change. Every line was reviewed by the submitter.

…NABLE

NIXL creates UCX endpoints with peer error handling. At the old pin,
rocm_ipc does not advertise UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE, so
NIXL GPU-to-GPU reads never use it: they fall back to TCP emulation, or,
with UCX_RMA_PPLN_ENABLE=y, to a host-staged pipeline whose fragment pool
exhausts shared memory under load. openucx/ucx#11977, in v1.23.0-rc1,
adds the capability; with it rocm_ipc is selected again and the pipeline
override is no longer needed. Lift the rocm_ipc signal pool cap the same
way as rocm_copy's, since every in-flight copy holds one signal.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Andreas Karatzas <akaratza@amd.com>
@mergify mergify Bot added ci/build rocm Related to AMD ROCm kv-connector labels Oct 21, 2026
@github-project-automation github-project-automation Bot moved this to Todo in AMD Oct 21, 2026
@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/amd-ci run nightly

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite AMD CI #15198 for commit 2e08c8d65833.

@AndreasKaratzas
AndreasKaratzas marked this pull request as ready for review October 23, 2026 02:39

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #96782 for commit a8d6afc9ed56.

ℹ️ This PR is 1 commit behind upstream main. Merged upstream main into this branch as a8d6afc9ed56 before starting CI. Pull the branch before pushing more changes.

AndreasKaratzas added a commit to AndreasKaratzas/vllm that referenced this pull request Oct 23, 2026
Port of vllm-project#62827 to this branch's Dockerfile.rocm:
- UCX_BRANCH -> 2ff0b47c (v1.23.0-rc1), which adds peer error handling
  to rocm_ipc (openucx/ucx#11977), so NIXL selects it for GPU-to-GPU reads
  instead of the TCP fallback or the host-staged pipeline.
- Drop UCX_RMA_PPLN_ENABLE=y, which is no longer needed.
- Set UCX_ROCM_IPC_SIGPOOL_MAX_ELEMS=inf, matching rocm_copy: each
  in-flight rocm_ipc copy holds one HSA signal.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andreas Karatzas <AndreasKaratzas@users.noreply.github.com>

@tjtanaa tjtanaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM if the CI passes

@tjtanaa tjtanaa added the ready ONLY add when PR is ready to merge/full CI is needed label Oct 23, 2026
@AndreasKaratzas
AndreasKaratzas merged commit be08fa5 into vllm-project:main Oct 23, 2026
55 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in AMD Oct 23, 2026
@AndreasKaratzas
AndreasKaratzas deleted the akaratza_ucx_rocm_ipc_errh branch October 23, 2026 15:48
AndreasKaratzas added a commit to AndreasKaratzas/vllm that referenced this pull request Oct 23, 2026
Conflicts, both from main's vllm-project#62827 (UCX v1.23.0-rc1 for NIXL rocm_ipc),
which this branch already carries in docker/Dockerfile.rocm (d7cb939):
- docker/Dockerfile.rocm: main's only change there is that UCX bump, so
  this branch's version is kept unchanged.
- docker/Dockerfile.rocm_72 (modify/delete): stays deleted with the ROCm
  7.2 stack.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andreas Karatzas <AndreasKaratzas@users.noreply.github.com>
AndreasKaratzas added a commit that referenced this pull request Oct 23, 2026
Conflict: .buildkite/test_areas/models_basic.yaml. Main now gives the
MiniMax M3 MonoKernel step 45 minutes; this branch had raised it from 20 to
40. Take main's 45, which reverts this branch's change to the file.
docker/Dockerfile.rocm merged cleanly: main's UCX v1.23.0-rc1 bump (#62827)
plus this branch's symbol-map stages and tools/ci export.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andreas Karatzas <AndreasKaratzas@users.noreply.github.com>
bantianyue pushed a commit to bantianyue/vllm that referenced this pull request Oct 28, 2026
)

Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: vllm-agent <claw@inferact.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/build kv-connector ready ONLY add when PR is ready to merge/full CI is needed rocm Related to AMD ROCm

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants