Skip to content

feat(rccl): Add LL128 support for DDA RS - #12928

Merged
nusislam merged 15 commits into
developfrom
users/nusislam/dda-rs-ll128
Oct 19, 2026
Merged

nusislam merged 15 commits into
developfrom
users/nusislam/dda-rs-ll128

Conversation

@nusislam

@nusislam nusislam commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

This PR adds LL128 protocol support for DDA RS in the fabric path.

Technical Details

This PR adds LL128 protocol support for DDA RS in the fabric path. It also moves the copies to temporary buffer inside the kernel for some message sizes in the medium range [internal-env].

Issue Tracking

AICOMRCCL-2471

Test Plan

rccl-test, unit tests

Test Result

Submission Checklist

@nusislam
nusislam requested review from a team and a balanced review from Copilot October 6, 2026 17:06
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

No undocumented RCCL or NCCL environment-variable changes.

@therock-pr-bot

therock-pr-bot Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

❌ PR Check — Action Required

Check Status Details
📝 PR Description ❌ Fail Error: PR description must reference a JIRA ID, ISSUE ID, or a GitHub closing keyword.
Expected: include a JIRA ID / ISSUE ID line (separator : or -, or omitted; value may be a JIRA key, a number with/without #, or a link), OR a closing keyword + issue reference. Accepted examples:
• JIRA ID : TESTAUTO-6039
• JIRA ID - #330
• JIRA ID #330
• JIRA ID (on separate line)
ROCM-25757
• ISSUE ID : TESTUTO-3334
• ISSUE ID #3334
• ISSUE ID - TESTAUTO-3433
• ISSUE ID (on separate line)
AIRUNTIME-2352
• ISSUE ID : https://github.com/<org_name>/<repo_name>/issues/1234
• Closes #10
• Fixes octo-org/octo-repo#100
• Resolves: #123
• #123
• https://github.com/<org_name>/<repo_name>/issues/123
Current: no valid JIRA/ISSUE/closing-keyword reference found
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ⚠️ Warning Error: Source/code files changed without an accompanying unit test.
Expected: add at least one test file named like test_<name>.py / test_<name>.cpp (or <name>_test.*).
Current: code file(s) changed: projects/rccl/src/algorithms/dda/all_gather/all_gather_dda_fabric_ll128.h, projects/rccl/src/algorithms/dda/all_reduce/all_reduce_dda_ll128.h, projects/rccl/src/algorithms/dda/all_reduce/all_reduce_dda_ll128_twoshot.h, projects/rccl/src/algorithms/dda/device/CollCommon.h, projects/rccl/src/algorithms/dda/device/CollCommon_ll128.h (+9 more); no test file found
🔎 pre-commit ⏳ Pending ⏳ Still running…
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —

⚠️ 1 policy check(s) failed. Please address the issues above before this PR can be Reviewed.

🚫 Please fix the failed policies

  • ❌ PR Description

The Not ready to Review label was added to this PR. Once all policies pass, the label is removed automatically.

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

🙋 Wish to Override Policy?

@therock-pr-bot

therock-pr-bot Bot commented Oct 6, 2026

Copy link
Copy Markdown

🚫 Please fix the failed policies before requesting reviews.

The following policy checks failed:

  • ❌ PR Description

The Not ready to Review label has been added to this PR.
Once all policies pass, the label will be removed automatically.

Copilot AI 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.

Copilot review overview

🟡 Changes recommended

The LL128 tier is not selected under the default configuration, and IPC medium messages can be copied twice.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity · 1 Low severity

Open (3)
What changed in this PR

Adds LL128 protocol support for DDA fabric reduce-scatter and optimizes IPC staging.

Changes:

  • Implements LL128 reduce-scatter packing, synchronization, and reduction.
  • Derives launch and scratch geometry dynamically.
  • Adds eligibility tests and medium-message IPC staging.
File Description
DdaFabricEligibilityTests.cpp Adds LL128 eligibility boundary tests.
reduce_scatter_dda.h Adds in-kernel IPC staging.
reduce_scatter_dda_fabric_ll128.h Implements the LL128 device kernel.
dda_reduce_scatter_ipc.cu Selects IPC staging strategy.
dda_reduce_scatter_fabric_ll128.cu Adds LL128 launch geometry and eligibility.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@amd-argus

amd-argus Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@cppccppccppc @sunguobao PTAL

@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: ReduceScatterLL128_UnalignedBytes passes 4 bytes, which the old % 8 gate rejected too, so nothing in the suite pins the new 16-byte rule.

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

@nusislam nusislam changed the title Add LL128 support for DDA RS feat(rccl): Add LL128 support for DDA RS Oct 6, 2026

@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: the ReduceScatter LL128 cap going 2 MiB to 128 MiB makes the rewritten ddaReduceScatterFabricLL128 the default path over a range it has never served, with no opt-in.

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: Worth settling before approval: the gfx1250 default still routes reduce-scatter in (1 MiB, 64 MiB] onto the rewritten LL128 kernel, and the new MPI cases are registered only on gfx942 and gfx950 lanes where their gfx1250 gate always skips.

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

Comment thread projects/rccl/CHANGELOG.md Resolved
@nusislam
nusislam force-pushed the users/nusislam/dda-rs-ll128 branch from 97c0013 to a3d07a4 Compare October 8, 2026 14:08

@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: Nothing new worth raising; still open from earlier: rccl_arch_thresholds.cc:44 and 2 more. Worth clearing before approval.

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

@nusislam

Copy link
Copy Markdown
Contributor Author

The code coverage CI failures are not related to this PR. There are failures for RMA, CE, DDA Alltoall and Allgather tests.

@nusislam

Copy link
Copy Markdown
Contributor Author

@nawrinsu, @srirajpaul - Please review.

@garzaran garzaran 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.

@nusislam, I am approving the PR, but Praneeth has several comments about the tests. Please address those before merging.

@nusislam

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

…-rs-ll128

# Conflicts:
#	projects/rccl/test/DdaReduceScatterMPITests.cpp

Co-authored-by: nusislam <25847498+nusislam@users.noreply.github.com>

Copilot AI commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Merged current develop and resolved the MPI test conflict while preserving both test suites in 094d6c604.

@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

This PR changes 1,011 lines across 22 files. A change this size is hard to review
well, for a person and for this bot alike: reviewers lose the thread, defects hide in the
volume, and the feedback arrives too late to be cheap to act on. Splitting it into a
stacked pull request
gives each piece a reviewable diff and keeps the history. This review covers the whole change
regardless.

Bottom line: Worth settling before approval: removing kDdaLL128RsMaxBytes leaves DdaReduceScatterMPITests.cpp:139 unable to compile, and that suite's odd-8B-word LL128 shapes now fail the new % 16 gate.

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

This PR changes 1,524 lines across 23 files. A change this size is hard to review
well, for a person and for this bot alike: reviewers lose the thread, defects hide in the
volume, and the feedback arrives too late to be cheap to act on. Splitting it into a
stacked pull request
gives each piece a reviewable diff and keeps the history. This review covers the whole change
regardless.

Bottom line: Worth settling before approval: the updated DdaReduceScatterMPITests.cpp landed at the monorepo root, so the built copy in projects/rccl/test still uses the removed kDdaLL128RsMaxBytes and rccl-UnitTestsMPI will not compile.

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

Comment thread test/DdaReduceScatterMPITests.cpp Resolved
@nusislam
nusislam force-pushed the users/nusislam/dda-rs-ll128 branch from 0b6a7f1 to 33ab2e9 Compare October 18, 2026 23:27

@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

This PR changes 1,090 lines across 23 files. A change this size is hard to review
well, for a person and for this bot alike: reviewers lose the thread, defects hide in the
volume, and the feedback arrives too late to be cheap to act on. Splitting it into a
stacked pull request
gives each piece a reviewable diff and keeps the history. This review covers the whole change
regardless.

Bottom line: Nothing new worth raising; still open from earlier: rccl_arch_thresholds.cc:47 and 2 more. Worth clearing before approval.

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

@nusislam
nusislam merged commit 00e3e30 into develop Oct 19, 2026
76 of 83 checks passed
@nusislam
nusislam deleted the users/nusislam/dda-rs-ll128 branch October 19, 2026 13:50
aduforest added a commit that referenced this pull request Oct 19, 2026
#12928 moved the fabric LL128 reduce-scatter to the warp-per-slice layout
(512 threads, 16-byte shards and buffers, the LL128 cap, a slot sized from
the scratch bank) and dropped DDA_LL128_RS_THREADS; the IPC launcher now
copies shards up to 1 MiB in the kernel and takes the stop event before
the host staging copy.

Co-Authored-By: Claude <noreply@anthropic.com>
@systems-assistant

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

alex-breslow-amd pushed a commit that referenced this pull request Oct 29, 2026
## Motivation
The coco PR gate built its develop baseline at develop tip on every run,
because each run uses a fresh output directory. A PR was therefore
measured against code it did not contain. In 18 replayed ruby64 runs,
seven unrelated PRs showed another commit's 1-node reduce_scatter change
(#12928) as their own.

## Technical Details
`rccl_resolve_coco_run.py` now, for PR runs:
- resolves the PR's base branch (`GET /pulls/{n}`) and its merge-base
with the head (`GET /compare/{base}...{head}`), using the job's
`GITHUB_TOKEN`;
- appends `--baseline-sha <merge-base>` to `coco_args`, which already
flows into both the build-only and the test `coco pr` calls;
- fails the setup job when the merge-base cannot be resolved or equals
the PR head, rather than silently comparing the wrong code. API failures
name the request and status. Only server errors, rate limits and
transport failures (timeouts, resets, truncated responses) are retried.

**When the pin applies.** It is passed only when the checked-out coco
harness declares `--baseline-sha` (the probe searches `coco/cli/`). A
harness without the flag gets a workflow warning and the baseline stays
on its configured ref. The new `require_baseline_sha` action input
(default `false`) turns that warning into a setup failure.

**The PR gate requires the pin.** #14389 moved the default harness to
`1.4.x`, which declares `--baseline-sha`, so the second commit passes
`require_baseline_sha: 'true'` in `rccl-coco-pr.yml`. A harness that
loses the flag now fails setup instead of silently measuring against
develop tip. The scheduled workflow never runs in PR mode, so it is
unchanged. Rolling `coco_ref` back to `1.3.x` has to turn the input off
as well, and a comment in the workflow says so.

The wiring test reads the action's `action.yml`, which the RCCL
script-test job (`rccl-cluster-runner-allowlist.yml`) did not check out.
That workflow's sparse checkout now includes
`.github/actions/rccl-resolve-coco-run`, and its `paths` filter includes
that directory, so an edit to the action's inputs re-runs the test that
guards them.

The action also passes the harness location explicitly (`HARNESS_DIR`)
instead of relying on the step's working directory. Periodic runs are
unchanged.

## Issue Tracking
JIRA ID: AICOMRCCL-2204

## Test Plan
- `.github/scripts/tests/rccl_resolve_coco_run_test.py`: 50 tests pass
when run directly, with or without an HTTP proxy in the environment.
`python3 -m pytest .github/scripts/tests/*rccl*_test.py` gives 157
passed, 2 skipped. They cover:
  - args with and without a pin;
- merge-base resolution against the PR's own base branch, a base branch
with reserved characters, an uppercase head, a head that is its own
merge-base, and a malformed or incomplete response;
- the harness probe on a moved, single-quoted or multi-line declaration,
and on a harness that only has `--baseline-stack`;
- GitHub failures: a 404 and a malformed URL fail at once with the
request named; 5xx, rate limits, timeouts, connection resets and
truncated bodies are retried; a missing token; a non-JSON body;
- `main()` end to end: missing `HARNESS_DIR`, a periodic run, a required
pin on an old harness, and an API failure;
- one test against a real loopback socket that resets the connection
after the request, through a direct (no-proxy) opener;
- the wiring: the action declares `require_baseline_sha` (default off)
and the PR workflow passes it, since GitHub only warns about an
undeclared input.
- Formatted with the repo's black 26.5.1.
- Mutation-checked: reverting retry-on-404, the literal-only probe, the
lowercasing, the URL quoting, the transient-error clause, the
`InvalidURL` clause and a misspelt workflow input each makes at least
one test fail.
- Against the real API: this PR's merge-base resolves to `c7047ffc473d`
(matching `git merge-base`), an uppercase head resolves the same, and a
nonexistent PR fails in 0.2 s with the request in the message.

## Test Result
All pass. This PR's own gate run is the first end-to-end check: with the
`1.4.x` default harness, the `coco pr` command lines should show
`--baseline-sha` and the baseline stack's RCCL version line should be
the PR's merge-base. Without this change the gate runs the `1.4.x`
harness but still builds its baseline at develop tip.

## Submission Checklist

- [x] Look over the contributing guidelines at
https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md.

---------

Signed-off-by: speriaswamy-amd <surya.periaswamy@amd.com>
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.

6 participants