Repository navigation
test(rccl): add host microtests for src/ras/diagnostics_gpu.cc - #12436
Conversation
|
@argus review |
✅ All Policy Checks Passed
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
There was a problem hiding this comment.
ARGUS
Findings
1 finding(s) that could not be posted as inline comments
projects/rccl/src/ras/diagnostics_gpu.cc:135(Medium) rasDiagnosticsGpuModelSummarize prints a peer-supplied model[] that has no guaranteed NUL, reading past the records allocation Follow-up for a separate change, not a request on this PR.rasDiagnosticsGpuModelSummarizebounds its comparison withstrncmp(..., RAS_DIAG_GPU_MODEL_NAME_LEN)at diagnostics_gpu.cc:120 but passesexpectedModelunbounded to%sat diagnostics_gpu.cc:135 and :147, andrecordsis allocated to exactlynDataat :92 then fully overwritten with peer bytes at :93. Withsizeof(rasDiagnosticsRankHeader)32 andsizeof(rasDiagnosticsGpuModelData)65, the 104-byte stride leaves the last record'smodel[64]plus its 7 padding bytes flush against the end of that allocation, and the framing layer at diagnostics.cc:392-463 validates strides and sizes but never record contents. A trailing single-rank record whose 71 bytes contain no NUL makes%swalk off the heap block, so another rank in the job controls how far this one reads.
Bottom line: Worth settling before approval: the summarize tests never exercise the qsort or read back a production-written record, so several branches they claim to cover are unasserted.
Comment @argus review to re-run, or @argus re-review after pushing.
6e870d9 to
337cb42
Compare
|
@argus re-review |
There was a problem hiding this comment.
ARGUS
Bottom line: Worth settling before approval: the NVML and driver fakes return their error without writing the out-param, so five of the unit's result guards are deletable with the suite green.
Comment @argus review to re-run, or @argus re-review after pushing.
337cb42 to
a861c96
Compare
|
@argus re-review |
There was a problem hiding this comment.
ARGUS
Bottom line: Worth settling before approval: Contains(state.lines, "unavailable via NVML") at diagnostics-gpu-test.cc:476 is satisfied by two earlier records, so the both-unknown branch it targets is still unasserted.
Comment @argus review to re-run, or @argus re-review after pushing.
|
@aduforest the current head ( |
a861c96 to
a6a2e40
Compare
|
@argus re-review |
There was a problem hiding this comment.
ARGUS
Findings
2 finding(s) that could not be posted as inline comments
projects/rccl/test/host/diagnostics-gpu-test.cc:396(Medium) both ECC failure cases assert only available, never that the counters were reset Neither failure case asserts that the counters were reset, so the four zeroing statements at diagnostics_gpu.cc:342-345 are deletable with this suite green.dataat line 375 still holds 1/3/2/4 from the first call, and the three reads that still succeed rewrite only three of them, so the failed read would surface as a stale count rather than a zero. That is precisely the invariant the comment at diagnostics_gpu.cc:351 claims to hold.projects/rccl/src/ras/diagnostics_gpu.cc:135(Medium) pre-existing peer-supplied model[] is printed with %s without ever being re-terminated Worth a separate change, not this one, and flagged only because this PR is the first thing to look closely at the summarizer.rasDiagnosticsGpuModelSummarizeprints a peer-suppliedmodel[]with%sat diagnostics_gpu.cc:135, :147 and :173, out of the exactly-nDatabuffer allocated at diagnostics_gpu.cc:92 and filled verbatim from the wire. Nothing re-terminates a gathered record the way diagnostics_gpu.cc:53 terminates the local one, so a 64-byte name carrying no NUL reads past the allocation. This predates the PR and is not something to fix here.
Bottom line: Worth settling before approval: the ECC device-range guard, three of the four ECC counter reads, and 20 of 21 reporter-failure sites are all still deletable with this suite green.
Comment @argus review to re-run, or @argus re-review after pushing.
|
@argus review |
There was a problem hiding this comment.
ARGUS
This PR changes 1,006 lines across 8 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: LGTM.
Comment @argus review to re-run, or @argus re-review after pushing.
There was a problem hiding this comment.
ARGUS
This PR changes 1,079 lines across 8 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: LGTM.
Comment @argus review to re-run, or @argus re-review after pushing.
There was a problem hiding this comment.
ARGUS
This PR changes 1,079 lines across 8 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 NvidiaDriverVersion check pair in diagnostics_gpu.cc has no test at all, and --gc-sections drops it so the 18/18 function figure excludes it.
Comment @argus review to re-run, or @argus re-review after pushing.
There was a problem hiding this comment.
ARGUS
This PR changes 1,189 lines across 8 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: LGTM.
Comment @argus review to re-run, or @argus re-review after pushing.
There was a problem hiding this comment.
ARGUS
This PR changes 1,189 lines across 8 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: LGTM.
Comment @argus review to re-run, or @argus re-review after pushing.
…velop # Conflicts: # projects/rccl/test/host/CMakeLists.txt # projects/rccl/test/host/MICROTEST_README.md # projects/rccl/test/test_categories_micro.yaml
…s-diagnostics-gpu-host-microtests # Conflicts: # projects/rccl/test/host/CMakeLists.txt # projects/rccl/test/host/MICROTEST_README.md # projects/rccl/test/test_categories_micro.yaml
TheRock Submodule Bump ActivityNewest first
|
…rs/mkuznet1/aicomrccl-2640-ras-amd-smi Brings in develop through the 2009 branch, including the diagnostics_gpu.cc microtests (#12436) and fabric telemetry in amdsmi_wrap.cc. ras-diagnostics-gpu-test.cc keeps one fixture for the AMD SMI arm: the arm-independent summarize, truncation and reporter tests from develop now expect the RAS_DIAG_* labels, the NVML collect tests are replaced by the AMD SMI ones, and the driver version comes from the ncclCudaDriverVersion seam, since nccl_stubs.cc now owns ncclCudaDriverVersionCache. Co-authored-by: Cursor <cursoragent@cursor.com>
JIRA ID: AICOMRCCL-2460
What
Adds host-only microtests for
src/ras/diagnostics_gpu.ccin the sharedrccl-UnitTestsMicrobinary. The suite covers all five GPU diagnostic check pairs: GPU inventory, CUDA driver version, NVIDIA graphics driver version, volatile ECC counters, and NVLink state/speed.The tests exercise public collection and summary entry points, validate the records written by production, and check argument errors, communicator grouping, incomplete results, mismatches, bounded rank lists, and reporter error propagation. Shared communicator and reporter helpers keep the GPU, common-diagnostics, and RAS fixtures consistent.
The NVIDIA graphics-driver cases use an NVML fake that writes nonzero output before returning an error, so failed-query data must be cleared. Full buffers, unterminated peer versions, unavailable versions, and mismatches have explicit output assertions. All changes are confined to
projects/rccl/test/.Validation
Local validation for commit
aeb2e0201:rccl-UnitTestsMicrobinary.Coverage for
diagnostics_gpu.ccfrom the focused GPU suite:Required GitHub CI is running separately on the updated commit.