Skip to content

ras: include ncclTimeout in the client error breakdown#2263

Open
EylonKrause wants to merge 1 commit into
NVIDIA:masterfrom
EylonKrause:fix/ras-timeout-breakdown
Open

ras: include ncclTimeout in the client error breakdown#2263
EylonKrause wants to merge 1 commit into
NVIDIA:masterfrom
EylonKrause:fix/ras-timeout-breakdown

Conversation

@EylonKrause

Copy link
Copy Markdown

Description

rasClientBreakDownErrors enumerates the most-frequent NCCL error codes among a communicator's ranks with for (int i = ncclUnhandledCudaError; i < ncclInProgress; i++). That bound stops at ncclRemoteError (6) and never visits ncclTimeout (8), which sorts after ncclInProgress (7) in ncclResult_t. But the headline count is computed as nRanks - (ncclErrors[ncclSuccess] + ncclErrors[ncclInProgress]), which does include timeout ranks. So when one or more ranks report ncclTimeout, the RAS report states "Asynchronous error on N ranks" while the per-rank breakdown lists fewer than N — the timeout ranks are attributed to no rank/GPU/node. Separately, ncclErrorToString has no ncclTimeout case and falls through to "Unexpected error".

Related Issues

None.

Changes & Impact

  • src/ras/client_support.cc: loop to ncclNumResults while skipping ncclInProgress, so ncclTimeout is included in the breakdown; and add the missing ncclTimeout case to ncclErrorToString. Diagnostic / serviceability output only; no data-path effect. Non-breaking.

Performance Impact

None.

Testing

  • Builds clean with make src.build; all_reduce_perf regression: Out of bounds values : 0 OK.
  • The omission is evident from the enum order (ncclTimeout = 8 > ncclInProgress = 7) versus the loop bound; the header/breakdown disagreement appears only when a rank reports ncclTimeout.

rasClientBreakDownErrors iterated error codes with i < ncclInProgress,
which stops at enum 6 and never visits ncclTimeout (enum 8, which sorts
after ncclInProgress=7). The headline rank count (computed as nRanks minus
ncclSuccess/ncclInProgress) does include timeout ranks, so on a timeout the
summary said N ranks errored while the per-rank breakdown listed fewer.
Loop to ncclNumResults skipping ncclInProgress, and add the missing
ncclTimeout case to ncclErrorToString (was falling through to Unexpected).

Signed-off-by: EylonKrause <eylon1909@gmail.com>
@EylonKrause

Copy link
Copy Markdown
Author

Disclosure: this contribution was authored with an AI coding assistant (Claude) and reviewed before submission.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant