Skip to content

test(rccl): add Add4G, Recorder, proxy call, LSA and ReduceScatter_LL tests - #12641

Merged
pvallem merged 11 commits into
developfrom
users/pvallem/GIN_TESTS-combined-misc
Oct 5, 2026
Merged

pvallem merged 11 commits into
developfrom
users/pvallem/GIN_TESTS-combined-misc

Conversation

@pvallem

@pvallem pvallem commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

add4G, Recorder RedOp records, negative lsaRank, ncclProxyCallBlocking error paths, ReduceScatter_LL placement and the LSA barrier epoch had no tests.

Fix: add a test for each, plus two pins of known proxy response defects; the symmetric-kernel tests skip without cuMem.

JIRA ID: AICOMRCCL-2694, AICOMRCCL-2697, AICOMRCCL-2698, AICOMRCCL-2699, AICOMRCCL-2700, AICOMRCCL-2704

Pin the add4G contract used by the LSA peer pointer math: the delta
lands in the high word only, the low word is never touched, the high
word wraps mod 2^32, and pointer bases round-trip.

Register Add4G.* in the fixtures quick and standard categories and in
the precheckin BitOps filter.
Cover the RedOp record() overload in recorder.cc: the PreMulSum branch
must serialise scalar, datatype and residence, and RedOpDestroy must
serialise op and comm. Register the test in the test_runner configs.
Add flat-VA and IPC-table cases asserting a negative lsaRank returns
ncclInvalidArgument instead of resolving below the flat base or reading
ipcPeerPtrs[-1].
Drive ncclProxyCallBlocking against a fake proxy on a socketpair and
check four paths: a delayed reply is polled until it arrives, a proxy
error result ends the poll unchanged, a raised abort flag ends a wait
on a silent proxy, and a send failure returns without polling.
Add two inverted pins for current ncclProxyCallBlocking behaviour:
an oversized matching reply is received past the caller's respBuff,
and an error exit leaves its entry on proxyState->expectedResponses.
Each pin carries the post-fix assertions commented out, so the fix
PR flips them instead of writing new tests.
Force NCCL_SYM_KERNEL=ReduceScatter_LL, the sole caller of
ncclLLA2ASession::send, and check a per-(rank, index) unique float sum
so swapped LL data words or misplaced slots fail the oracle. Counts
cover the aligned 8-byte and the bounded odd paths.

Run on 2 to 8 ranks of one node. Allocate the symmetric windows once
and skip collectively when symmetric memory or deviceApiSupport is
missing, so the skip names the real reason rather than the
ncclInvalidUsage the ineligible forced kernel would return. Only the
first count may skip on ncclInvalidUsage, and the per-count checks
are MPI-collective so a rank-local failure stops every rank together.

Register the test in the mi300x device_api_mpi_lsa config, which
already runs 2 co-located ranks with NCCL_CUMEM_ENABLE=1.
Barrier_Lsa_EpochPersistsAcrossLaunches checks that each launch's LSA
barrier session starts from the epoch the previous session's
destructor saved, so the unicast barrier keeps ordering a cross-rank
handoff over repeated launches.
@pvallem
pvallem requested review from a team October 1, 2026 16:48
@therock-pr-bot

therock-pr-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass —
🚫 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?

@pvallem

pvallem commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

@argus 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: Worth settling before approval: the BitOps filter in ci-precheckin.json skips four suites because three of its patterns match no test name.

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

Comment thread projects/rccl/test/ProxyTests.cpp Resolved
Comment thread projects/rccl/test/ProxyTests.cpp Resolved
Comment thread projects/rccl/test/_RecorderTests.cpp Resolved
Fix the BitOps precheckin filter: DIVUP, ROUNDUP and *Hash matched no
Suite.Test name, so four suites never ran. Use the Suite.* form.

Make the ReduceScatter_LL ncclInvalidUsage skip collective through
mpiCoordinatedSkipReason so a diverging verdict cannot hang peers.
@pvallem

pvallem commented Oct 1, 2026

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: Worth settling before approval: ReduceScatterLL_PositionDependentData can skip at four separate points with nothing asserting the verification loop ran, and it is the only SymmetricKernelCorruptionTest registered in any config.

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

Synchronize the stream after a successful ncclReduceScatter before the
coordinated ineligibility vote, so a skip can never return into ~SymBuf
while a kernel still reads the window it deregisters and frees.
@pvallem

pvallem commented Oct 1, 2026

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: Looks approval ready.

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

@pvallem

pvallem commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

@argus re-review

@amd-argus

amd-argus Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@pvallem the current head (3faa6976) already has a review from me above; nothing has changed since then for me to look at again. Push a change and I'll pick it up, or ask again once you have.

Every case skipped on its own rank's tryAllocSymBuf result, and the
short-circuited allocation chain let a failing rank stop registering
windows while its peers kept going. Add allocSymBufsSkipReason, which
registers every buffer regardless and then votes through
mpiCoordinatedSkipReason, and use it in all seven cases.
@pvallem

pvallem commented Oct 1, 2026

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.

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

Only the JSON path of Recorder RedOp records is tested, so raw
rcclApiCall fields written in binary mode can regress unseen.

Fix: read both RedOp records back from the binary dump and check each
field; stacked on #12641.

JIRA ID: AICOMRCCL-2699
@pvallem

pvallem commented Oct 2, 2026

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.

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

@pvallem
pvallem merged commit 9af0def into develop Oct 5, 2026
86 of 88 checks passed
@pvallem
pvallem deleted the users/pvallem/GIN_TESTS-combined-misc branch October 5, 2026 21:52
@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