Repository navigation
[MUSA]Feat: musa support - #12107
[MUSA]Feat: musa support#12107superleo wants to merge 33 commits into
Conversation
Signed-off-by: superleo <xlei.boll@gmail.com>
Signed-off-by: superleo <xlei.boll@gmail.com>
Signed-off-by: superleo <xlei.boll@gmail.com>
Signed-off-by: superleo <xlei.boll@gmail.com>
Signed-off-by: superleo <xlei.boll@gmail.com>
The zero-capability musa interface was selected by default and aborted worker creation. Keep detection and DMA-BUF on a connect-to-iface copy transport, and split the module into base and musa_copy.
Advertise REG so the musa MD is packed into the rkey, pin host staging buffers, and install the memtype cache when the MD opens.
Register each device from its PCI bus id, and advertise one musa_copy resource so the memtype endpoint stays within the lane limit.
Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 CI Triage Agent — TL;DR: The "AUTHORS file check" failed because PR #12107's author ( Full analysisSummary: Codestyle stage "AUTHORS file check" exited with code 1 — Root cause: The pipeline step computes and inserted Implicated commit: [REDACTED:Hex High Entropy String] (PR #12107, branch File: Suggested fix: On the ./contrib/authors_update.sh <upstream-base>..HEAD
git add AUTHORS && git commit --amend --no-edit # or a separate "AUTHORS: add superleo" commitwhich adds Related: PR #12107 (openucx/ucx); no existing issue found for this failure signature — it is a per-PR onboarding step, expected for every first-time contributor.
|
Signed-off-by: superleo <xlei.boll@gmail.com>
|
hi @yosefe @shamisp @tonycurtis @brminich @hoopoepg This patch contains three logical areas: MUSA memory type/UCM integration, UCT MUSA and Would you prefer to review this as one dependent commit series, or should we split it into three PRs before review? |
|
🤖 Starting review — findings will be posted here when done. |
Signed-off-by: superleo <xlei.boll@gmail.com> # Conflicts: # src/ucp/core/ucp_context.c
|
🤖 Starting review — findings will be posted here when done. |
|
This is ~1.8k added lines in a single PR; pls split it (e.g. memory type + ucm hooks, uct base/md, musa_copy transport + tests) so each part can be reviewed on its own. How is the MUSA build validated? There is no Mode: REQUEST_CHANGES Residual coverage gaps:
|
Tested provider capabilitiesMemory-type and pointer contractThe integration test confirmed that:
A critical implementation contract was identified: on a memtype-cache miss, the current UCX path assumes host memory instead of taking the MUSA detection slow path. Consequently, MUSA buffers must be allocated after the UCX context and its memory hooks exist. This is now enforced by the NIXL driver ordering and documented for integrators. MUSA transport and data correctnessThe provider passed 17/17 hardware scenarios covering:
The transfer data uses non-zero patterns that encode peer, operation, descriptor index and offset. Both receiver-side notification validation and sender-side READ-back validation are byte-exact. Progress and error handlingThe caller-progress path was exercised without a backend progress thread. The target side periodically calls Peer-exit testing produced a bounded failure rather than an infinite wait. The NIXL layer exposes this as Resource behaviorA 1,000-cycle register/transfer/release/deregister test completed with stable device memory and a process RSS plateau. The observed RSS plateau is attributed to UCX pools rather than an unbounded leak, but it is material for multi-process deployments and should be included in capacity planning. |
Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 Starting review — findings will be posted here when done. |
|
Suggested mode: Checked and not reported: Checked and not reported: Appending Checked and not reported: Duplicate Checked and not reported: Repeated Residual coverage gap: Residual coverage gap: |
|
🤖 CI Triage Agent — TL;DR: The ASan "roce on worker 0" job did not fail on any test or compile error — the Azure agent was shut down mid-build ("The agent has received a shutdown signal"), cancelling the Full analysisSummary: Build 141575, job "AddressSanitizer roce on worker 0", was cancelled by the CI agent during the gtest compilation phase of Root cause: Infrastructure, not code. The log shows uninterrupted compiler activity from 13:16:14 through 13:30:43 (largest gap between consecutive lines is only ~10 s, e.g. Implicated commit: none — commit [REDACTED:Hex High Entropy String] (PR #12107) is not implicated; the failure is agent-side cancellation. File: n/a (last compiled unit: Suggested fix: Re-run the "AddressSanitizer roce on worker 0" job — no code change is warranted. If it reproduces on this PR, check agent-pool health/preemption for that worker rather than UCX code. Secondary observation (not the failure, but it widens the window for such cancellations): the ASan configuration spends ~14.5 minutes of the job purely compiling Related:
|
Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 Starting review — findings will be posted here when done. |
93724e0 to
35d82c6
Compare
|
🤖 Starting review — findings will be posted here when done. |
|
Residual coverage gaps: (a) nothing exercises the dmabuf export path, so the page-alignment finding would not be caught by any test even on MUSA hardware; |
Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 Starting review — findings will be posted here when done. |
|
cuda_copy implements Residual coverage gap: nothing exercises the multi-device cleanup path — Residual coverage gap: With |
Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 Starting review — findings will be posted here when done. |
|
On the new
On the |
|
🤖 CI Triage Agent — TL;DR: The build never ran any UCX code — the Azure DevOps Full analysisSummary: Job "new on worker 2" (Azure build 142132) failed in the checkout stage — Root cause: Pure CI infrastructure / authentication failure, not a product or test defect. In the log the agent queries for the auth header and gets nothing back:
It then runs Note the total failure window is ~2m20s of continuous retry activity with no large timestamp gaps, so this is not a hang or timeout. The job then skipped all build/test steps ( Implicated commit: unknown — no repository commit is implicated; the failure occurred before checkout. The PR head File: none (failing step is the Azure Pipelines Suggested fix:
Related: none — a repository search for this error signature returned only unrelated PRs (#12203, #12171, #11644, #11998, #12062), confirming this is an agent/credential issue rather than a tracked code bug.
|
|
🤖 Starting review — findings will be posted here when done. |
fixed @svc-nvidia-pr-review |
|
Residual coverage gap: Residual coverage gap: |
@svc-nvidia-pr-review On CI: none of the hosted runners have the MUSA SDK or MUSA GPUs, so a On the test assumptions: with SDK 5.2.0, |
|
🚫 @superleo — not authorized to trigger a review on this repo. Contact a repo admin to be added to the allowed-users list. |
Reject unknown topology entries instead of selecting an arbitrary device. Share the lookup with focused contract tests and give MUSA base declarations C linkage for C++ callers. Clarify the MUSA transport configuration description. Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 Starting review — findings will be posted here when done. |
| { | ||
| int dev_count; | ||
|
|
||
| ucs::test::init(); |
There was a problem hiding this comment.
minor: cuda_hooks.cc skips under valgrind because bistro-patched driver functions may execute stale translations, and musamem.c installs bistro hooks on the MUSA driver API too.
| ucs::test::init(); | |
| if (RUNNING_ON_VALGRIND) { | |
| UCS_TEST_SKIP_R("Valgrind may execute stale translations of " | |
| "Bistro-patched MUSA driver functions"); | |
| } | |
| ucs::test::init(); |
|
Residual gap: Residual gap: |
|
🤖 CI Triage Agent — TL;DR: The build failed because exactly one gtest out of 8896 failed — Full analysisSummary: Root cause: Evidence from the log:
Implicated commit: unknown — not attributable to a PR commit from the log. (Branch commits in this area: File: test/gtest/ucp/test_ucp_memheap.cc:115 (reached from test/gtest/ucp/test_ucp_rma.cc:283 via test_ucp_rma.cc:162-163) Suggested fix:
Related: PR #12107 ([MUSA]Feat: musa support); the dedicated coverage for this path is
|
Stage completed copy and flush events until progress restores the application device. Avoid redundant device switches and skip MUSA hook tests under Valgrind. Add a two-device completion regression and keep both stack completions alive with a flush guard when submission assertions exit early. Signed-off-by: superleo <xlei.boll@gmail.com>
|
🤖 Starting review — findings will be posted here when done. |
|
pls map
The file-static event globals Residual coverage gap: nothing covers the error-status mapping of the MD ( Residual coverage gap: |
|
🤖 CI Triage Agent — TL;DR: The ASan gtest shard died because Full analysisSummary: Root cause: Timeline from the Azure log:
Nothing in this path is touched by the PR: the only PR-specific artifacts in the log are the new Implicated commit: unknown — not attributable to File: Suggested fix:
Related: PR #12107 ([MUSA]Feat: musa support) — failure is not caused by it; no existing issue found for
|
What?
Add initial MUSA support to UCX .
The series includes:
UCS_MEMORY_TYPE_MUSAmemory type andmusaname;musaMallocandmusaFree;musa_copystaging transport for local MUSA/host transfers;musatransport selection throughmusa_copy;The MUSA component no longer exposes a zero-capability stub TL. The copy path is provided by
musa_copy, while large-message direct RDMA remains selected through the IB transports when available.Why?
NIXL requires UCX to distinguish MUSA device allocations from host memory and to select a real transport path for MUSA buffers. Without this support, MUSA allocations can be classified as host memory, the wrong protocol can be
selected, or the worker can select a zero-capability MUSA interface and abort.
This series provides the minimum UCX-side support needed to identify MUSA memory and use either local staging or the existing IB direct-RDMA path.
How?
The implementation is intentionally limited to ordinary MUSA device allocations.
Supported paths:
musa_copy;Managed memory, VMM allocations, IPC-specific paths, heterogeneous devices, and provider-specific direct-RDMA extensions are not claimed as complete features.
Test:
The MUSA test bed /S5000 demonstrated: