Skip to content

ci(rccl): track torch 2.16's renamed pg_timeout test and drop two fixed known failures - #14675

Merged
prasanna-amd merged 2 commits into
developfrom
users/prasanna-amd/aicomrccl-3499-known-failures-torch216
Nov 2, 2026
Merged

prasanna-amd merged 2 commits into
developfrom
users/prasanna-amd/aicomrccl-3499-known-failures-torch216

Conversation

@prasanna-amd

@prasanna-amd prasanna-amd commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

JIRA ID: AICOMRCCL-3499

Summary

Every PyTorch c10d all-scope run on develop fails on one unexpected test, test_extend_nccl_pg_timeout_backend_nccl-legacy. It is not a new failure. It is the existing pg_timeout_semantics known failure, which torch 2.16 renamed from test_extend_nccl_pg_timeout_backend_nccl. known_failures.json still lists only the old name.

The assertion is the same one this test has hit on every all-scope run since 2026-09-12:

test_c10d_nccl.py:1182  self.assertEqual(w.timeout, timedelta(seconds=8))
AssertionError: Object comparison failed: datetime.timedelta(seconds=18) != datetime.timedelta(seconds=8)

Observed on run 40941007532: develop RCCL artifacts from nightly 40829635440, torch 2.16.0a0+rocm10.3.0a20261029. Result: 264 passed, 1 unexpected failures, 28 known failures -> FAILED.

Changes

  • Rename the key test_extend_nccl_pg_timeout_backend_nccl → test_extend_nccl_pg_timeout_backend_nccl-legacy. The category is unchanged.
  • Remove test_nccl_backend_4gpu_module and its nccl_backend_4gpu_hang category. The same run passed it in 38.88 s, after it had timed out at 300 s on every all-scope run from 9/19 to 10/24. AICOMRCCL-2468 was verified and closed on 2026-10-30, and the entry itself said to remove it at that point.
  • Remove test_comm_recursive_split_group and its split_group_parent_guard category (AICOMRCCL-3107). This was a PyTorch bug, not a ROCm one. [distributed] Validate the parent backend before split_group pytorch/pytorch#195758 made split_group reject a parent whose backend is not initialized, and NCCLComm::split never set initialized_ for blocking communicators. So a split child could not itself be split until a collective had run on it, which is exactly what this test does. pytorch/pytorch#202072 (1aa1528f66, landed 2026-10-27) sets the flag and names this test. History: passed on every torch 2.15 run (13), failed once on the 2.16 20261019 build, and passed in 14.5 s on the 20261029 build.

Deliberately not changed

test_extend_nccl_pg_timeout_backend0 also passed in that run, but only once, and no upstream fix has been identified for it. It stays listed until a second all-scope run confirms it.

Verification

I replayed the 29 failures and 264 passes from run 40941007532 through the harness's classification logic (test_pytorch_c10d.py, the known_set / unexpected_failed / now_passing block):

known_failures.json unexpected known now passing
develop …_backend_nccl-legacy 28 test_comm_recursive_split_group, test_extend_nccl_pg_timeout_backend0, test_nccl_backend_4gpu_module
this PR — 29 test_extend_nccl_pg_timeout_backend0

On the develop file, the replay reproduces the harness's own reported result exactly. The JSON parses, and every category referenced under tests is defined, with none left unused.

Test plan

  • Replay of run 40941007532 against this file: 0 unexpected failures
  • JSON valid; no orphaned or undefined categories
  • Next c10d all-scope run on develop reports no unexpected failures

…ed 4gpu_module known failure

torch 2.16 renamed the c10d parametrization test_extend_nccl_pg_timeout_backend_nccl
to ..._backend_nccl-legacy. The pg_timeout_semantics failure is unchanged
(timedelta(seconds=18) != timedelta(seconds=8) at test_c10d_nccl.py:1182), but the
old key no longer matches, so the harness now reports it as unexpected and
every develop c10d all-scope run fails.

test_nccl_backend_4gpu_module passes on torch 2.16 (38.88 s) and AICOMRCCL-2468
is closed. Remove it and its nccl_backend_4gpu_hang category, as the entry
itself asked.

JIRA ID: AICOMRCCL-3499
@prasanna-amd
prasanna-amd requested review from a team and a balanced review from Copilot October 30, 2026 16:06
@therock-pr-bot

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?

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.

🟢 Approval recommended

No active review issues are recorded for the RCCL known-failure list update.

No open issues 🎉

What changed in this PR

Updates RCCL CI’s PyTorch c10d known-failure list to recognize the renamed timeout test in torch 2.16 and stop suppressing the resolved 4-GPU module failure.

Changes:

  • Renames the timeout test entry to test_extend_nccl_pg_timeout_backend_nccl-legacy, retaining its existing category.
  • Removes test_nccl_backend_4gpu_module and its now-unused nccl_backend_4gpu_hang category.
  • Leaves the other known failures unchanged pending further confirmation.
File Description
projects/​rccl/​ci/​scripts/​known_failures.json Updates the timeout test name and removes the resolved 4-GPU failure exclusion.

Review effort: Balanced

The failure was a PyTorch bug, not a ROCm one. pytorch/pytorch#195758 made
split_group reject a parent whose backend is not initialized, and
NCCLComm::split never set initialized_ for blocking communicators. A split
child therefore could not itself be split until a collective had run on it,
which is exactly what this test does. pytorch/pytorch#202072 (1aa1528f66,
landed 2026-10-27) sets the flag and names this test.

History: passed on every torch 2.15 run, failed once on the 2.16 20261019
build, and passed (14.5 s) on the 20261029 build.

JIRA ID: AICOMRCCL-3499
@prasanna-amd prasanna-amd changed the title ci(rccl): track torch 2.16's renamed pg_timeout test and drop the fixed 4gpu_module known failure ci(rccl): track torch 2.16's renamed pg_timeout test and drop three fixed known failures Oct 30, 2026
@prasanna-amd prasanna-amd changed the title ci(rccl): track torch 2.16's renamed pg_timeout test and drop three fixed known failures ci(rccl): track torch 2.16's renamed pg_timeout test and drop two fixed known failures Oct 30, 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

Findings

1 more finding(s), not posted inline
  • projects/rccl/ci/scripts/known_failures.json:2 (Low) _comment still says 'A minority are active defects' but no remaining entry is one after nccl_backend_4gpu_hang is removed; reword it as a rule for future entries.

Bottom line: LGTM.

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

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14675-oci-rccl-pr-smoke

View this job on CoCo

Builds

Stack Component Version Commit Status Build time
pr-14675_rccl-perf_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14675_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14675_rccl-perf_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14675_rccl-perf_rocm-10.1-ga rccl-pr-14675 bd48d35 bd48d35 cached
pr-14675_rccl-perf_rocm-10.1-ga rccl-tests-develop-perf develop 73b509d cached
pr-14675_rccl-perf_rocm-10.2-latest gcc-13.2 13.2.0 13.2.0 cached
pr-14675_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc1 10.2.0rc1 cached
pr-14675_rccl-perf_rocm-10.2-latest openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14675_rccl-perf_rocm-10.2-latest rccl-pr-14675 bd48d35 bd48d35 cached
pr-14675_rccl-perf_rocm-10.2-latest rccl-tests-develop-perf develop 73b509d cached
pr-14675_rccl-smoke_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14675_rccl-smoke_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14675_rccl-smoke_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14675_rccl-smoke_rocm-10.1-ga rccl-pr-14675-smoke bd48d35 bd48d35 cached
pr-14675_rccl-smoke_rocm-10.1-ga rccl_gtest-pr-14675 bd48d35 bd48d35 cached
rocm-10.1-ga_rccl-develop-perf gcc-13.2 13.2.0 13.2.0 cached
rocm-10.1-ga_rccl-develop-perf rocm-10.1-ga 10.1.0 10.1.0 cached
rocm-10.1-ga_rccl-develop-perf openmpi-5.0.8 5.0.8 5.0.8 cached
rocm-10.1-ga_rccl-develop-perf rccl-develop-a2a565b0319e a2a565b a2a565b cached
rocm-10.1-ga_rccl-develop-perf rccl-tests-develop-perf develop 73b509d cached

Failures

No failing tests in this run.

15 tests skipped.

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14675-ruby64-rccl-pr-smoke

View this job on CoCo

Builds

Stack Component Version Commit Status Build time
pr-14675_rccl-perf_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14675_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14675_rccl-perf_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14675_rccl-perf_rocm-10.1-ga rccl-pr-14675 bd48d35 bd48d35 cached
pr-14675_rccl-perf_rocm-10.1-ga rcclt-develop-perf develop 60c4760 cached
pr-14675_rccl-perf_rocm-10.2-latest gcc-11.5 11.5.0 11.5.0 cached
pr-14675_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc1 10.2.0rc1 cached
pr-14675_rccl-perf_rocm-10.2-latest openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14675_rccl-perf_rocm-10.2-latest rccl-pr-14675 bd48d35 bd48d35 cached
pr-14675_rccl-perf_rocm-10.2-latest rcclt-develop-perf develop 60c4760 cached
pr-14675_rccl-smoke_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14675_rccl-smoke_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14675_rccl-smoke_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14675_rccl-smoke_rocm-10.1-ga rccl-pr-14675-smoke bd48d35 bd48d35 cached
pr-14675_rccl-smoke_rocm-10.1-ga rccl_gtest-pr-14675 bd48d35 bd48d35 cached
rocm-10.1-ga_rccl-develop-perf gcc-11.5 11.5.0 11.5.0 cached
rocm-10.1-ga_rccl-develop-perf rocm-10.1-ga 10.1.0 10.1.0 cached
rocm-10.1-ga_rccl-develop-perf openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
rocm-10.1-ga_rccl-develop-perf rccl-develop-a2a565b0319e a2a565b a2a565b cached
rocm-10.1-ga_rccl-develop-perf rcclt-develop-perf develop 60c4760 cached

Failures

No failing tests in this run.

15 tests skipped.

@alex-breslow-amd alex-breslow-amd 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.

LGTM

@prasanna-amd
prasanna-amd merged commit 59bd3ca into develop Nov 2, 2026
24 of 27 checks passed
@prasanna-amd
prasanna-amd deleted the users/prasanna-amd/aicomrccl-3499-known-failures-torch216 branch November 2, 2026 18:58
systems-assistant Bot pushed a commit to ROCm/rccl that referenced this pull request Nov 2, 2026
 two fixed known failures (#14675)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

JIRA ID: AICOMRCCL-3499

## Summary

Every PyTorch c10d **all-scope** run on develop fails on one unexpected
test, `test_extend_nccl_pg_timeout_backend_nccl-legacy`. It is not a new
failure. It is the existing `pg_timeout_semantics` known failure, which
torch 2.16 renamed from `test_extend_nccl_pg_timeout_backend_nccl`.
`known_failures.json` still lists only the old name.

The assertion is the same one this test has hit on every all-scope run
since 2026-09-12:

```
test_c10d_nccl.py:1182  self.assertEqual(w.timeout, timedelta(seconds=8))
AssertionError: Object comparison failed: datetime.timedelta(seconds=18) != datetime.timedelta(seconds=8)
```

Observed on run
[40941007532](https://github.com/ROCm/rocm-systems/actions/runs/40941007532/job/123684072400):
develop RCCL artifacts from nightly 40829635440, torch
`2.16.0a0+rocm10.3.0a20261029`. Result: `264 passed, 1 unexpected
failures, 28 known failures -> FAILED`.

## Changes

- **Rename** the key `test_extend_nccl_pg_timeout_backend_nccl` →
`test_extend_nccl_pg_timeout_backend_nccl-legacy`. The category is
unchanged.
- **Remove** `test_nccl_backend_4gpu_module` and its
`nccl_backend_4gpu_hang` category. The same run passed it in 38.88 s,
after it had timed out at 300 s on every all-scope run from 9/19 to
10/24. AICOMRCCL-2468 was verified and closed on 2026-10-30, and the
entry itself said to remove it at that point.
- **Remove** `test_comm_recursive_split_group` and its
`split_group_parent_guard` category (AICOMRCCL-3107). This was a PyTorch
bug, not a ROCm one. pytorch/pytorch#195758 made `split_group` reject a
parent whose backend is not initialized, and `NCCLComm::split` never set
`initialized_` for blocking communicators. So a split child could not
itself be split until a collective had run on it, which is exactly what
this test does.
[pytorch/pytorch#202072](pytorch/pytorch#202072)
(`1aa1528f66`, landed 2026-10-27) sets the flag and names this test.
History: passed on every torch 2.15 run (13), failed once on the 2.16
`20261019` build, and passed in 14.5 s on the `20261029` build.

## Deliberately not changed

`test_extend_nccl_pg_timeout_backend0` also passed in that run, but only
once, and no upstream fix has been identified for it. It stays listed
until a second all-scope run confirms it.

## Verification

I replayed the 29 failures and 264 passes from run 40941007532 through
the harness's classification logic (`test_pytorch_c10d.py`, the
`known_set` / `unexpected_failed` / `now_passing` block):

| `known_failures.json` | unexpected | known | now passing |
|---|---|---|---|
| develop | `…_backend_nccl-legacy` | 28 |
`test_comm_recursive_split_group`,
`test_extend_nccl_pg_timeout_backend0`, `test_nccl_backend_4gpu_module`
|
| this PR | — | 29 | `test_extend_nccl_pg_timeout_backend0` |

On the develop file, the replay reproduces the harness's own reported
result exactly. The JSON parses, and every category referenced under
`tests` is defined, with none left unused.

## Test plan

- [x] Replay of run 40941007532 against this file: 0 unexpected failures
- [x] JSON valid; no orphaned or undefined categories
- [ ] Next c10d all-scope run on develop reports no unexpected failures
[rocm-systems] ROCm/rocm-systems#14675 (commit 59bd3ca)
@peymanr

peymanr commented Nov 2, 2026

Copy link
Copy Markdown

PR Pundit review

(Testing PR Pundit Code Review agent. Not all comments may be relevant. This is a one-time automated pass: please address what is useful, no need to request a re-review. Please reply to each point, whether it applies or not: we harvest these replies, and both kinds are enormously helpful for tuning the agent. Reach out to @peymanr for suggestions.)

# Finding Where
1 🟠 Nightly all c10d run goes red if 4-GPU hang persists: this PR drops its known-failure entry without a fix projects/rccl/ci/scripts/known_failures.json:34
2 🟠 c10d CI goes red if split_group test regresses: this PR drops its known-failure entry without passing evidence projects/rccl/ci/scripts/known_failures.json:34
3 🟠 Older test trees report pg_timeout known failure as unexpected: this PR renamed the key instead of keeping both projects/rccl/ci/scripts/known_failures.json:5

1. 🟠 Should fix: Nightly all c10d run goes red if 4-GPU hang persists: this PR drops its known-failure entry without a fix

projects/rccl/ci/scripts/known_failures.json:34

The PR drops test_nccl_backend_4gpu_module (nccl_backend_4gpu_hang, an explicit ACTIVE DEFECT tied to AICOMRCCL-2468) as fixed, but no in-repo change fixes it. The only commit naming 2468 is #13789, which added the entry. known_failures.json only changes the verdict (known_set), not which tests run or how long they take. So if the hang persists, the scheduled all-scope run turns red with an unexpected failure; it does not take longer. Please link a green 8-GPU all run (the script logs known failures 'now PASSING') or the ticket resolution.

Who is affected: Scheduled or dispatched test_scope: all PyTorch c10d runs on linux-gfx942-8gpu-ossci-rocm; PR smoke runs never execute this test.

Checked against the code by an independent pass.

2. 🟠 Should fix: c10d CI goes red if split_group test regresses: this PR drops its known-failure entry without passing evidence

projects/rccl/ci/scripts/known_failures.json:34

The PR drops test_comm_recursive_split_group (split_group_parent_guard, AICOMRCCL-3107) as fixed, but the removed note said the ROCm-side cause was not yet identified. The change is more likely upstream torch nightly drift than an RCCL fix. If the test regresses, test_pytorch_c10d.py reports it as an unexpected failure, so nothing is silently hidden. Mention in the PR what showed it passing (for example the harness's 'now PASSING' warning in a CI run) and update or close AICOMRCCL-3107 so the ticket is not orphaned.

Who is affected: Maintainers tracking the PyTorch c10d nightly CI and AICOMRCCL-3107; no RCCL user-facing effect.

Checked against the code by an independent pass.

3. 🟠 Should fix: Older test trees report pg_timeout known failure as unexpected: this PR renamed the key instead of keeping both

projects/rccl/ci/scripts/known_failures.json:5

The PR replaces test_extend_nccl_pg_timeout_backend_nccl with test_extend_nccl_pg_timeout_backend_nccl-legacy instead of keeping both keys. Failures are matched against known_failures.json by exact testcase name. A run whose PyTorch test tree predates the upstream rename would therefore report this known pg_timeout_semantics failure as unexpected. CI's workflow always installs the current torch nightly from whl-next and checks out the matching test tree, so it does not hit this today. Keeping the old key as well is free, because a key that never appears never matches.

Who is affected: Only someone running test_pytorch_c10d.py by hand against a torch wheel or test tree older than the upstream nccl-legacy rename (pre 2026-08-25); the CI workflow's current nightly is not affected.

Checked against the code by an independent pass.

Shared from a pilot of PR Pundit, an agentic code reviewer that builds and tests the change and reads the project's past reviews. Reviewed at bd48d35e; findings checked and posted by @peymanr; points already raised on this PR are left out.

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

6 participants