Skip to content

ci(rccl): build device-api with rocSHMEM GIN - #12752

Merged
dlamd1dai merged 10 commits into
developfrom
users/dondai/aic2221-device-api-ci
Oct 22, 2026
Merged

dlamd1dai merged 10 commits into
developfrom
users/dondai/aic2221-device-api-ci

Conversation

@dlamd1dai

@dlamd1dai dlamd1dai commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Replaces #11895. That PR was opened from a fork, where the required RCCL PR gate check can never pass: fork PRs get no secrets, so RCCL coco PR skips its Setup job and the gate fails closed. This branch lives in ROCm/rocm-systems, so the gate dispatches coco to the Ruby and OCI clusters itself.

Review history from #11895 does not carry over. All 10 review threads on this PR (Argus and @Kapil-Shyam-Pawar) are resolved, and Argus re-reviewed 774335be8d with LGTM.

Rebased onto develop on 2026-10-19 (head 41731d7d77). The only conflict was device-api-tests.json, where develop added the gin-d3-nicfusion suite (#11133). That suite is kept in the GIN matrix. The PR's own diff is unchanged.

Summary

  • device-api.sbatch installs RCCL with --prefix, matching gin.sbatch, so lib/cmake/rccl/*config.cmake exists. --rocshmem-gin builds the sibling rocSHMEM checkout into projects/rccl/ext/rocshmem. This job does not call build-rocshmem.sh.
  • The non-GIN matrix (device-api-nongin-tests.json, ENABLE_DEVICE_API=1 ./install.sh build) runs AllReduce, AllGather and ReduceScatter at -R 2, which are the collectives that have symmetric kernels, plus LSA all_reduce_perf -D 1 and -D 2.
  • The GIN matrix (device-api-tests.json, cmake ENABLE_DEVICE_API + ENABLE_ROCSHMEM_GIN build) is host-proxy alltoall: gin-d3, gin-d4, and gin-d3-nicfusion from develop, all with NCCL_GIN_TYPE=2.
  • Anvil SDMA allgather (NCCL_GIN_TYPE=7) moves to gin-tests.json as rccl-gin-rocshmem-sdma-ag-d3, next to the existing SDMA alltoall and broadcast cases. The gin build fails if all_gather_perf was not produced, and the gin test results remain non-gating.
  • rccl-tests' cmake build RDC-links alltoall_perf, all_gather_perf and broadcast_perf. all_reduce_perf still does not build in that configuration, so it stays on the non-GIN matrix.
  • Each matrix records its own exit status, and on test failure the job log shows the runner's FAILED RUNS summary from test_out.

Independent of #11894 (pytest harness). test_AllToAllDevtime.py is unchanged.

JIRA ID : AICOMRCCL-2221

Known failure on ROCm 10.2 nightlies (not caused by this PR)

On ROCm 10.2 nightlies (HIP 7.17.26405 to 7.17.26412), communicator teardown in symmetric and device-API runs fails in ncclCuMemFree. One rank hits alloc.h:789/:809 HIP failure 'invalid argument' and another segfaults in hipMemUnmap. The develop nightly of RCCL cluster CI fails the same way without this PR (run 38567603219, Oct 14). The likely root cause is the HIP VMM import/release regression ROCM-33022. RCCL-side tracking is in AICOMRCCL-3065.

On this PR it appeared as:

  • the Ruby coco error on 774335be8d, where device-api-symmetric_reduce_perf exited with rc 139 on rocm-10.2-latest only (the 10.1-ga stacks passed);
  • the symmetric and gin-d4 failures in the Oct 12 device-api run on 91bd83c1f4.

If it recurs, it is this bug, not a regression from this change. This PR touches only CI scripts and the rccl-tests CMake, not RCCL source.

Test plan

RCCL cluster CI on 41731d7d77: run 39293555415.

  • device-api job installs librccl.so, finds the RCCL cmake config, and installs rocSHMEM at projects/rccl/ext/rocshmem
  • non-GIN matrix runs all_reduce_perf, all_gather_perf and reduce_scatter_perf at -R 2, plus all_reduce_perf -D 1 and -D 2
  • GIN matrix runs alltoall_perf -D 3 and -D 4 (gin-d3, gin-d4, gin-d3-nicfusion; NCCL_GIN_TYPE=2)
  • gin job builds all_gather_perf and runs rccl-gin-rocshmem-sdma-ag-d3 (test result is non-gating)

@dlamd1dai
dlamd1dai requested review from a team October 3, 2026 20:46
@therock-pr-bot

therock-pr-bot Bot commented Oct 3, 2026

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass PR does not contain code files — Unit Test auto-passed
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —

🎉 All policy checks passed!

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

@amd-argus amd-argus Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ARGUS

Bottom line: Worth settling before approval: device-api.sbatch:161 builds the non-GIN rccl-tests binaries against the --rocshmem-gin librccl.so, which leaves its rocSHMEM host symbols for the executable to supply.

Comment @argus review to re-run, or @argus re-review after pushing.

@dlamd1dai dlamd1dai self-assigned this Oct 12, 2026
@dlamd1dai
dlamd1dai force-pushed the users/dondai/aic2221-device-api-ci branch from 2b6f1bf to 91bd83c Compare October 12, 2026 03:53
@dlamd1dai

Copy link
Copy Markdown
Contributor Author

@argus re-review

@amd-argus amd-argus Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ARGUS

Bottom line: LGTM once the required_perf_bins comment is narrowed to what the -x check actually guarantees.

Comment @argus review to re-run, or @argus re-review after pushing.

@dlamd1dai

Copy link
Copy Markdown
Contributor Author

@argus re-review

@amd-argus amd-argus Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ARGUS

Bottom line: LGTM once the failure handler at device-api.sbatch:280 also tails ${test_out}, where run-device-api-ci.sh writes its FAILED RUNS summary.

Comment @argus review to re-run, or @argus re-review after pushing.

@dlamd1dai

Copy link
Copy Markdown
Contributor Author

@argus re-review

d5084ba addresses the latest notes:

  • The test-failure handler now tails ${test_out} as well as ${test_err}. run-device-api-ci.sh writes === FAILED RUNS to stdout, and a non-GIN failure is followed by the GIN matrix, so the handler also prints each of those blocks. Otherwise the summary can sit above the last 60 lines.
  • The build-phase comment no longer says a set -e abort is caught inside the || subshell. Each step still has the explicit check after it.

@amd-argus amd-argus Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ARGUS

Bottom line: LGTM.

Comment @argus review to re-run, or @argus re-review after pushing.

@amd-argus amd-argus Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ARGUS

Bottom line: LGTM.

Comment @argus review to re-run, or @argus re-review after pushing.

dlamd1dai and others added 9 commits October 19, 2026 13:21
The device-api job compiled RCCL with --rocshmem-gin but never installed
it, so the cmake config glob died before any benchmark, and rccl-tests
did not RDC-link the binaries that load that library.

Co-authored-by: Cursor <cursoragent@cursor.com>
GIN type 6 selects rocSHMEM GDA, so gin-d3-allgather never reached the SDMA kernel this job builds. Point it at type 7 and keep the longer rocSHMEM build from dying on a 2h SLURM limit or a missing rccl.env.

Co-authored-by: Cursor <cursoragent@cursor.com>
…221)

Restore the ENABLE_DEVICE_API install.sh build and LSA matrix so this job
still covers device-API-without-rocSHMEM, and match gin.sbatch's build-log
handling for the remaining Argus nits.

Co-authored-by: Cursor <cursoragent@cursor.com>
…-2221)

Keep the ENABLE_DEVICE_API install.sh build for the symmetric matrix, and
do not run or require all_reduce_perf -D 1/-D 2 in this job.

Co-authored-by: Cursor <cursoragent@cursor.com>
A single || on the test brace group ignored set -e for the non-GIN run, so
only the GIN matrix status was retained. Capture each invocation separately.

Co-authored-by: Cursor <cursoragent@cursor.com>
…-2221)

Put all_reduce_perf -D 1/-D 2 back on the non-GIN matrix, where that binary
builds, and run the five symmetric binaries against the rocSHMEM GIN build so
the RDC link is exercised. Keep a single --rocshmem-gin librccl.so.

Co-authored-by: Cursor <cursoragent@cursor.com>
The -x check only proves each RDC-linked binary was built under make -k.
The rocSHMEM GIN path is reached only by the -D 3/-D 4 suites.

Co-authored-by: Cursor <cursoragent@cursor.com>
…221)

The runner writes that summary to stdout, and a non-GIN failure is followed
by the GIN matrix, so the job log has to show test_out rather than only
test_err. The build-phase comment now matches the || subshell, where set -e
does not abort intermediate steps.

Co-authored-by: Cursor <cursoragent@cursor.com>
…221)

Symmetric kernels exist only for AllReduce, AllGather, and ReduceScatter, so
the non-GIN matrix runs those at -R 2 and the device-api GIN matrix keeps
the host-proxy alltoall suites. Anvil SDMA allgather moves to gin-tests.json,
and --rocshmem-gin builds rocSHMEM instead of a separate prebuild.

Co-authored-by: Cursor <cursoragent@cursor.com>
@dlamd1dai
dlamd1dai force-pushed the users/dondai/aic2221-device-api-ci branch from 774335b to 41731d7 Compare October 19, 2026 17:22
Comment thread projects/rccl-tests/src/CMakeLists.txt Resolved
…OMRCCL-2221)

The comment named the CI matrices and gin.sbatch, which change on their own
schedule. Describe the binaries by their GIN device paths instead.

Co-authored-by: Cursor <cursoragent@cursor.com>

@amd-argus amd-argus Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ARGUS

Bottom line: LGTM.

Comment @argus review to re-run, or @argus re-review after pushing.

@dlamd1dai
dlamd1dai merged commit 7b5df5b into develop Oct 22, 2026
71 of 80 checks passed
@dlamd1dai
dlamd1dai deleted the users/dondai/aic2221-device-api-ci branch October 22, 2026 21:39
@systems-assistant

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants