Skip to content

net_ib_cast: port net_ib error-path fixes (AICOMRCCL-2750) - #14015

Merged
nikitaxgusev merged 5 commits into
developfrom
users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths
Oct 28, 2026
Merged

nikitaxgusev merged 5 commits into
developfrom
users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths

Conversation

@nikitaxgusev

Copy link
Copy Markdown
Contributor

Motivation

net_ib_cast is a renamed copy of net_ib (ncclIb* to IbCast*), so NCCL syncs never merge upstream net_ib fixes into it; they only arrive through explicit backports. A few error-path fixes that already live in RCCL net_ib are still missing in net_ib_cast. They only matter when an IB-cast GIN proxy operation or connection fails (AINIC, or NCCL_NET=IB-CAST / ROCM-IB). Normal operation, correctness, and performance are unaffected.

Technical Details

Ports four upstream net_ib error-path fixes into net_ib_cast, matching RCCL net_ib on develop one to one (only ncclIb* to IbCast* renames, no behavioral divergence):

# Upstream NCCL fix net_ib on develop net_ib_cast change
1 b4a53400 gin/proxy latent bugs gin.cc ncclRmaIbProxyTest uses devBase->gidInfo.link_layer, remDevs[0] gin.cc IbCastRmaIbProxyTest: devBases[i] to devBase, remDevs[i] to remDevs[0] (error log used the completion index as a device index; a non-first error CQE segfaulted)
2 b4a53400 p2p.cc ncclIbReqTypeStr contains "IGet" p2p.cc IbCastReqTypeStr: add "IGet" (IGet failure read past the array)
3 8b967feb (NCCL 2.30.7) p2p_resiliency.cc wr_id < NET_IB_MAX_REQUESTS p2p_resiliency.cc: wr_id <= NET_IB_MAX_REQUESTS to wr_id < (off-by-one that would index recvReqs[] out of bounds)
4 799ca467 gin: poll completions while waiting for CTS gin.cc ncclGinIbAllGather single post-and-poll loop gin.cc IbCastGinIbAllGather: same single post-and-poll loop (a lost CTS no longer hangs GIN context creation / window registration)

Not ported on purpose: net_ib's ginSeq/batch and printIbWcStatusHint are net_ib architecture, outside these fixes. Performance commits (b736405d, ccdb45e8) and the cosmetic qp_num warning are tracked separately.

Issue Tracking

JIRA ID : AICOMRCCL-2750

Test Plan

Added NetIbCast.CastGinErrorPath in test/transport/NetIbMPI/GinProxyErrorPathTests.cpp, a whitebox host-only test (no NIC, no MPI traffic) that drives the four ported paths through test-only seams: the IGet name lookup, an error completion that is not first in the poll batch (with devBases[1] left NULL), wr_id == NET_IB_MAX_REQUESTS, and the GIN allgather polling the receive while isend still waits for CTS. Builds into rccl-UnitTestsMPI.

A standalone logic harness (g++ with ASan/UBSan) reproduces the exact control flow of all four functions in both fixed and buggy form to confirm the test discriminates the fix.

Test Result

Standalone harness, fixed vs buggy, trimmed:

== Fix 1: completion-index warning ==
  ok:   rmaProxyTest(fixed) == ncclRemoteError   (buggy: NULL devBases[1] -> segfault)
== Fix 2: IGet name ==
  ok:   ReqTypeStr[GIN_IGET] == "IGet"           (buggy: index 5 past 5-entry array)
== Fix 3: receiver wr_id bound ==
  ok:   wr_id==NET_IB_MAX_REQUESTS -> ncclInternalError   (buggy: recvReqs[256] OOB)
== Fix 4: allgather polls recv before send ==
  ok:   recvPolledBeforeSend == 1                (buggy: 0, lost CTS hangs)
ALL CHECKS PASSED (0 failures)

NetIbCast.CastGinErrorPath builds into rccl-UnitTestsMPI; a full on-node run can follow on an MI350X node.

Submission Checklist

@nikitaxgusev
nikitaxgusev requested review from a team and a balanced review from Copilot October 22, 2026 11:03
@therock-pr-bot

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

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass —
⛔ 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/transport/net_ib_cast/gin.cc, projects/rccl/src/transport/net_ib_cast/net_ib_cast_inspect.h, projects/rccl/src/transport/net_ib_cast/p2p.cc, projects/rccl/src/transport/net_ib_cast/p2p_resiliency.cc, projects/rccl/test/host/fakes/net_ib_cast_p2p_fakes.cc (+2 more); no test file found
🚫 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

Static review found no blocking issues in the targeted backports or regression-test integration; runtime validation was not performed.

No open issues 🎉

What changed in this PR

Backports four existing net_ib error-path fixes into net_ib_cast, keeping the renamed transport aligned where upstream fixes require manual porting.

Changes:

  • Corrects error-completion device indexing, adds the IGet request name, and fixes the receiver request-ID boundary.
  • Updates GIN allgather to poll completions while sends wait for CTS.
  • Adds host-only regression helpers and coverage to rccl-UnitTestsMPI.
File Description
projects/​rccl/​test/​transport/​NetIbMPI/​GinProxyErrorPathTests.cpp Adds regression checks for all four fixes.
projects/​rccl/​test/​CMakeLists.txt Includes the new test in the MPI test target.
projects/​rccl/​src/​transport/​net_ib_cast/​p2p.cc Adds the IGet name and lookup helper.
projects/​rccl/​src/​transport/​net_ib_cast/​p2p_resiliency.cc Fixes the receiver boundary check and adds a regression helper.
projects/​rccl/​src/​transport/​net_ib_cast/​net_ib_cast_inspect.h Declares the host-only regression helpers.
projects/​rccl/​src/​transport/​net_ib_cast/​gin.cc Fixes allgather progress and error logging; adds regression helpers.

Review effort: Balanced

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

Looks good

@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

5 more finding(s), not posted inline
  • projects/rccl/src/transport/net_ib_cast/p2p_resiliency.cc:1279 (Low) ncclIbCastTestRecvWrIdBound passes a stack ncclIbNetCommBase, so a reverted bound reads recvReqs[256] past the object (UB)
  • projects/rccl/src/transport/net_ib_cast/gin.cc:898 (Low) RmaProxy seam uses an InfiniBand link layer, so the remDevs[0] half of the fix (gin.cc:768) is never executed
  • projects/rccl/src/transport/net_ib_cast/net_ib_cast_inspect.h:141 (Nit) Comment says NULL if the IGet slot is missing, but a missing slot is an out-of-bounds read
  • projects/rccl/src/transport/net_ib_cast/gin.cc:977 (Nit) ncclIbCastTestGinAllGatherPollsRecv swaps the live global netIbCast op table, unguarded, in release librccl
  • projects/rccl/src/transport/net_ib_cast/gin.cc:988 (Nit) Five per-op save/restore pairs of netIbCast could be one struct copy (ncclNet_t savedNet = netIbCast)

Bottom line: Worth settling before approval: NetIbCast.CastGinErrorPath is not selected by any CI category or test_runner config, so the new regression checks never run. The four ported fixes match net_ib line for line.

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

@i-kosarev i-kosarev 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 with nits

@nikitaxgusev

Copy link
Copy Markdown
Contributor Author

@argus re-review

@nikitaxgusev
nikitaxgusev force-pushed the users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths branch from 7ebb5bf to fda5bd1 Compare October 26, 2026 10:17
@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-oci-rccl-pr-smoke

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-debug_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug fda5bd1 fda5bd1 cached
pr-14015_rccl-perf_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-tests-develop-perf develop fd42f7f cached
pr-14015_rccl-perf_rocm-10.2-latest gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 cached
pr-14015_rccl-perf_rocm-10.2-latest openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-tests-develop-perf develop fd42f7f 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 develop fd42f7f cached
rocm-10.1-ga_rccl-develop-perf rccl-tests-develop-perf develop fd42f7f cached

Failures

No failing tests in this run.

15 tests skipped.

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-ruby64-rccl-pr-build

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-backtrace_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-backtrace_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-backtrace_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-backtrace_rocm-10.1-ga rccl-pr-14015-backtrace fda5bd1 fda5bd1 built 424s
pr-14015_rccl-backtrace_rocm-10.1-ga rccl_gtest-pr-14015 fda5bd1 fda5bd1 built
pr-14015_rccl-debug_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug fda5bd1 fda5bd1 built 413s
pr-14015_rccl-perf_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 fda5bd1 fda5bd1 built 242s
pr-14015_rccl-perf_rocm-10.1-ga rcclt-develop-perf develop fd42f7f built 67s
pr-14015_rccl-perf_rocm-10.2-latest gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 built 26s
pr-14015_rccl-perf_rocm-10.2-latest openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 fda5bd1 fda5bd1 built 320s
pr-14015_rccl-perf_rocm-10.2-latest rcclt-develop-perf develop fd42f7f built 67s
pr-14015_rccl_rocm-7.0.2.2 gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl_rocm-7.0.2.2 rocm-7.0.2.2 7.0.2.2 7.0.2.2 cached
pr-14015_rccl_rocm-7.0.2.2 openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl_rocm-7.0.2.2 rccl-pr-14015 fda5bd1 fda5bd1 built 284s
pr-14015_rccl_rocm-7.0.2.2 rccl_gtest-pr-14015 fda5bd1 fda5bd1 built
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 built 26s
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 develop fd42f7f built 259s
rocm-10.1-ga_rccl-develop-perf rcclt-develop-perf develop fd42f7f built 73s

Failures

No failing tests in this run.

183 tests skipped.

pr-rocm-systems-14015-ruby64-rccl-pr-smoke

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-debug_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug fda5bd1 fda5bd1 cached
pr-14015_rccl-perf_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-perf_rocm-10.1-ga rcclt-develop-perf develop fd42f7f cached
pr-14015_rccl-perf_rocm-10.2-latest gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 cached
pr-14015_rccl-perf_rocm-10.2-latest openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 fda5bd1 fda5bd1 cached
pr-14015_rccl-perf_rocm-10.2-latest rcclt-develop-perf develop fd42f7f 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 develop fd42f7f cached
rocm-10.1-ga_rccl-develop-perf rcclt-develop-perf develop fd42f7f cached

Failures

Stack Type Subtype Tag Test Topology Case Status Message
pr-14015_rccl-perf_rocm-10.2-latest rccl_test device-api-symmetric reduce_perf 1n_8ppn_interactive Error Crashed (exit code 139)

15 tests skipped.

@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: mi455_ainic_roce_func.json:1289. Worth clearing before approval.

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

@nikitaxgusev
nikitaxgusev force-pushed the users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths branch from fda5bd1 to 7ad5b68 Compare October 26, 2026 11:53
@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-oci-rccl-pr-build

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-backtrace_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-backtrace_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-backtrace_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-backtrace_rocm-10.1-ga rccl-pr-14015-backtrace 7ad5b68 7ad5b68 build failed (exit 1)
pr-14015_rccl-backtrace_rocm-10.1-ga rccl_gtest-pr-14015 7ad5b68 7ad5b68 blocked
pr-14015_rccl-debug_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 2)
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug 7ad5b68 7ad5b68 blocked
pr-14015_rccl-perf_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 2)
pr-14015_rccl-perf_rocm-10.1-ga rccl-tests-develop-perf develop 3e8dec7 blocked
pr-14015_rccl-perf_rocm-10.2-latest gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 built 71s
pr-14015_rccl-perf_rocm-10.2-latest openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 2)
pr-14015_rccl-perf_rocm-10.2-latest rccl-tests-develop-perf develop 3e8dec7 blocked
pr-14015_rccl_rocm-7.0.2 gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl_rocm-7.0.2 rocm-7.0.2 7.0.2 7.0.2 cached
pr-14015_rccl_rocm-7.0.2 openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl_rocm-7.0.2 rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 1)
pr-14015_rccl_rocm-7.0.2 rccl_gtest-pr-14015 7ad5b68 7ad5b68 blocked
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 built 65s
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 develop 3e8dec7 built 90s
rocm-10.1-ga_rccl-develop-perf rccl-tests-develop-perf develop 3e8dec7 built 13s

Failures

No failing tests in this run.

183 tests skipped.

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-ruby64-rccl-pr-build

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-backtrace_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-backtrace_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-backtrace_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-backtrace_rocm-10.1-ga rccl-pr-14015-backtrace 7ad5b68 7ad5b68 build failed (exit 1)
pr-14015_rccl-backtrace_rocm-10.1-ga rccl_gtest-pr-14015 7ad5b68 7ad5b68 blocked
pr-14015_rccl-debug_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 2)
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug 7ad5b68 7ad5b68 blocked
pr-14015_rccl-perf_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 2)
pr-14015_rccl-perf_rocm-10.1-ga rcclt-develop-perf develop 3e8dec7 blocked
pr-14015_rccl-perf_rocm-10.2-latest gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 built 25s
pr-14015_rccl-perf_rocm-10.2-latest openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 2)
pr-14015_rccl-perf_rocm-10.2-latest rcclt-develop-perf develop 3e8dec7 blocked
pr-14015_rccl_rocm-7.0.2.2 gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl_rocm-7.0.2.2 rocm-7.0.2.2 7.0.2.2 7.0.2.2 cached
pr-14015_rccl_rocm-7.0.2.2 openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl_rocm-7.0.2.2 rccl-pr-14015 7ad5b68 7ad5b68 build failed (exit 1)
pr-14015_rccl_rocm-7.0.2.2 rccl_gtest-pr-14015 7ad5b68 7ad5b68 blocked
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 built 24s
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 develop 3e8dec7 built 623s
rocm-10.1-ga_rccl-develop-perf rcclt-develop-perf develop 3e8dec7 built 63s

Failures

No failing tests in this run.

183 tests skipped.

@nikitaxgusev
nikitaxgusev force-pushed the users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths branch from 7ad5b68 to 233307d Compare October 27, 2026 08:12
net_ib_cast is a renamed copy of net_ib, so the NCCL 2.32.3 sync never merged these upstream fixes. Bring over the completion-index warning, the IGet request name, the receiver wr_id bound, and the GIN allgather poll so a failed IB-cast GIN operation returns an error instead of segfaulting or hanging.
Call the ported net_ib error paths with no NIC. An error completion after a success returns ncclRemoteError instead of indexing devBases by the completion slot (gin.cc IbCastRmaIbProxyTest), IGet is named in IbCastReqTypeStr, wr_id == NET_IB_MAX_REQUESTS is rejected (p2p_resiliency.cc), and GIN allgather polls the receive while isend is still waiting for CTS.
- p2p.cc: add the 7th "Failed" IbCastReqTypeStr entry so the array
  matches net_ib 1:1 (net_ib has 7; cast had 6).
- gin.cc: save/restore the whole netIbCast ops table in one struct copy
  instead of five field pairs in the host-only allgather seam.
- net_ib_cast_inspect.h: correct the IGet-name comment (a short array
  reads out of bounds, it does not return NULL).
- mi455_ainic_roce_func.json: add a num_ranks:1 host-only entry so
  NetIbCast.CastGinErrorPath is selected and actually runs.

JIRA ID : AICOMRCCL-2750
@nikitaxgusev
nikitaxgusev force-pushed the users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths branch from 233307d to 9f0891d Compare October 27, 2026 08:14
The error-path port extended IbCastReqTypeStr in
net_ib_cast/p2p.cc from 5 to 7 entries ("IGet", "Failed", matching
net_ib 1:1). The host-test drift guard pins the old line, so
"Configure host tests" fails with "p2p.cc no longer contains". Update
the pinned lines in test/host/CMakeLists.txt and the matching copy in
fakes/net_ib_cast_p2p_fakes.cc so all three agree.

JIRA ID : AICOMRCCL-2750

@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: GinProxyErrorPathTests.cpp:27. Worth clearing before approval.

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

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-oci-rccl-pr-smoke

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-debug_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 f68b5ff f68b5ff cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug f68b5ff f68b5ff cached
pr-14015_rccl-perf_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 f68b5ff f68b5ff cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-tests-develop-perf develop ea604d4 cached
pr-14015_rccl-perf_rocm-10.2-latest gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 cached
pr-14015_rccl-perf_rocm-10.2-latest openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 f68b5ff f68b5ff cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-tests-develop-perf develop ea604d4 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 develop ea604d4 cached
rocm-10.1-ga_rccl-develop-perf rccl-tests-develop-perf develop ea604d4 cached

Failures

No failing tests in this run.

15 tests skipped.

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-ruby64-rccl-pr-smoke

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-debug_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 f68b5ff f68b5ff cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug f68b5ff f68b5ff cached
pr-14015_rccl-perf_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 f68b5ff f68b5ff cached
pr-14015_rccl-perf_rocm-10.1-ga rcclt-develop-perf develop ea604d4 cached
pr-14015_rccl-perf_rocm-10.2-latest gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 cached
pr-14015_rccl-perf_rocm-10.2-latest openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 f68b5ff f68b5ff cached
pr-14015_rccl-perf_rocm-10.2-latest rcclt-develop-perf develop ea604d4 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 develop ea604d4 cached
rocm-10.1-ga_rccl-develop-perf rcclt-develop-perf develop ea604d4 cached

Failures

No failing tests in this run.

15 tests skipped.

Fix 1 (AICOMRCCL-2750) makes IbCastRmaIbProxyTest index devBases[] by the
request's own device instead of the completion's slot, so an error in a
later completion slot of a one-device comm is now reported as a remote
error instead of crashing. Update the net-ib-cast-gin host microtest that
pinned the former crash (AICOMRCCL-3095) to assert the clean behavior,
matching net_ib.

JIRA ID : AICOMRCCL-2750

@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: GinProxyErrorPathTests.cpp:27. Worth clearing before approval.

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

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-oci-rccl-pr-smoke

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-debug_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 eb1bc63 eb1bc63 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug eb1bc63 eb1bc63 cached
pr-14015_rccl-perf_rocm-10.1-ga gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 eb1bc63 eb1bc63 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-tests-develop-perf develop ce26e5b cached
pr-14015_rccl-perf_rocm-10.2-latest gcc-13.2 13.2.0 13.2.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 cached
pr-14015_rccl-perf_rocm-10.2-latest openmpi-5.0.8 5.0.8 5.0.8 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 eb1bc63 eb1bc63 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-tests-develop-perf develop ce26e5b 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 develop ce26e5b cached
rocm-10.1-ga_rccl-develop-perf rccl-tests-develop-perf develop ce26e5b cached

Failures

No failing tests in this run.

15 tests skipped.

@github-actions

Copy link
Copy Markdown
Contributor

pr-rocm-systems-14015-ruby64-rccl-pr-smoke

Builds

Stack Component Version Commit Status Build time
pr-14015_rccl-debug_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-debug_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-debug_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl-pr-14015 eb1bc63 eb1bc63 cached
pr-14015_rccl-debug_rocm-10.1-ga rccl_gtest-pr-14015-debug eb1bc63 eb1bc63 cached
pr-14015_rccl-perf_rocm-10.1-ga gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.1-ga rocm-10.1-ga 10.1.0 10.1.0 cached
pr-14015_rccl-perf_rocm-10.1-ga openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.1-ga rccl-pr-14015 eb1bc63 eb1bc63 cached
pr-14015_rccl-perf_rocm-10.1-ga rcclt-develop-perf develop ce26e5b cached
pr-14015_rccl-perf_rocm-10.2-latest gcc-11.5 11.5.0 11.5.0 cached
pr-14015_rccl-perf_rocm-10.2-latest rocm-10.2-latest 10.2.0rc0 10.2.0rc0 cached
pr-14015_rccl-perf_rocm-10.2-latest openmpi-4.0.2 4.0.2rc3 4.0.2rc3 cached
pr-14015_rccl-perf_rocm-10.2-latest rccl-pr-14015 eb1bc63 eb1bc63 cached
pr-14015_rccl-perf_rocm-10.2-latest rcclt-develop-perf develop ce26e5b 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 develop ce26e5b cached
rocm-10.1-ga_rccl-develop-perf rcclt-develop-perf develop ce26e5b cached

Failures

No failing tests in this run.

15 tests skipped.

@nikitaxgusev
nikitaxgusev merged commit 88849ae into develop Oct 28, 2026
63 of 65 checks passed
@nikitaxgusev
nikitaxgusev deleted the users/nikitaxgusev/aicomrccl-2750-net-ib-cast-error-paths branch October 28, 2026 09:21
ywang103-amd pushed a commit that referenced this pull request Oct 28, 2026
## Motivation

`net_ib_cast` is a renamed copy of `net_ib` (`ncclIb*` to `IbCast*`), so
NCCL syncs never merge upstream `net_ib` fixes into it; they only arrive
through explicit backports. A few error-path fixes that already live in
RCCL `net_ib` are still missing in `net_ib_cast`. They only matter when
an IB-cast GIN proxy operation or connection fails (AINIC, or
`NCCL_NET=IB-CAST` / `ROCM-IB`). Normal operation, correctness, and
performance are unaffected.

## Technical Details

Ports four upstream `net_ib` error-path fixes into `net_ib_cast`,
matching RCCL `net_ib` on `develop` one to one (only `ncclIb*` to
`IbCast*` renames, no behavioral divergence):

| # | Upstream NCCL fix | `net_ib` on develop | `net_ib_cast` change |
|---|---|---|---|
| 1 | `b4a53400` gin/proxy latent bugs | `gin.cc` `ncclRmaIbProxyTest`
uses `devBase->gidInfo.link_layer`, `remDevs[0]` | `gin.cc`
`IbCastRmaIbProxyTest`: `devBases[i]` to `devBase`, `remDevs[i]` to
`remDevs[0]` (error log used the completion index as a device index; a
non-first error CQE segfaulted) |
| 2 | `b4a53400` | `p2p.cc` `ncclIbReqTypeStr` contains `"IGet"` |
`p2p.cc` `IbCastReqTypeStr`: add `"IGet"` (IGet failure read past the
array) |
| 3 | `8b967feb` (NCCL 2.30.7) | `p2p_resiliency.cc` `wr_id <
NET_IB_MAX_REQUESTS` | `p2p_resiliency.cc`: `wr_id <=
NET_IB_MAX_REQUESTS` to `wr_id <` (off-by-one that would index
`recvReqs[]` out of bounds) |
| 4 | `799ca467` gin: poll completions while waiting for CTS | `gin.cc`
`ncclGinIbAllGather` single post-and-poll loop | `gin.cc`
`IbCastGinIbAllGather`: same single post-and-poll loop (a lost CTS no
longer hangs GIN context creation / window registration) |

Not ported on purpose: `net_ib`'s `ginSeq`/batch and
`printIbWcStatusHint` are `net_ib` architecture, outside these fixes.
Performance commits (`b736405d`, `ccdb45e8`) and the cosmetic `qp_num`
warning are tracked separately.

## Issue Tracking

JIRA ID : AICOMRCCL-2750

## Test Plan

Added `NetIbCast.CastGinErrorPath` in
`test/transport/NetIbMPI/GinProxyErrorPathTests.cpp`, a whitebox
host-only test (no NIC, no MPI traffic) that drives the four ported
paths through test-only seams: the IGet name lookup, an error completion
that is not first in the poll batch (with `devBases[1]` left NULL),
`wr_id == NET_IB_MAX_REQUESTS`, and the GIN allgather polling the
receive while `isend` still waits for CTS. Builds into
`rccl-UnitTestsMPI`.

A standalone logic harness (`g++` with ASan/UBSan) reproduces the exact
control flow of all four functions in both fixed and buggy form to
confirm the test discriminates the fix.

## Test Result

Standalone harness, fixed vs buggy, trimmed:

```
== Fix 1: completion-index warning ==
  ok:   rmaProxyTest(fixed) == ncclRemoteError   (buggy: NULL devBases[1] -> segfault)
== Fix 2: IGet name ==
  ok:   ReqTypeStr[GIN_IGET] == "IGet"           (buggy: index 5 past 5-entry array)
== Fix 3: receiver wr_id bound ==
  ok:   wr_id==NET_IB_MAX_REQUESTS -> ncclInternalError   (buggy: recvReqs[256] OOB)
== Fix 4: allgather polls recv before send ==
  ok:   recvPolledBeforeSend == 1                (buggy: 0, lost CTS hangs)
ALL CHECKS PASSED (0 failures)
```

`NetIbCast.CastGinErrorPath` builds into `rccl-UnitTestsMPI`; a full
on-node run can follow on an MI350X node.

## Submission Checklist

- [ ] Look over the contributing guidelines at
https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md.
@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.

5 participants