[None][perf] template NVLink A2A fault tolerance checks#16025
Conversation
709ea27 to
9732564
Compare
4287f6c to
bb18c31
Compare
Signed-off-by: Bo Li <22713281+bobboli@users.noreply.github.com>
bb18c31 to
2816175
Compare
chienchunhung
left a comment
There was a problem hiding this comment.
Thanks for your PR and raising the concerns! Really appreciate that you look out for the issues.
Compile-time specialization is a valid improvement and addresses concern (b).
However, the removal of FT route and payload checks assumes concern (a) is already an enforced runtime invariant. It is not: #15525 supplies only the EPLB reconfiguration primitive, while there are 4 planned PRs on the road towards the goal; #15895 covers only in-flight abort.
On the other hand, I am not sure if PR #16025 fully addresses concern (c): the mask remains captured by value and no CUDA-graph lifecycle is changed. Full graph handling is planned in my MVP scope as later PR.
My suggestion: Please keep the compile-time FT/non-FT specialization, but remove the FT-specialized route/payload checks for now. They, as for addressing concern (a) and (c), require a dependency-ordered follow-up after the routing, atomic-commit, failed-epoch, and CUDA-graph contracts land and are tested. Until the MVP fully lands, FT must explicitly disable or reject CUDA graphs.
Signed-off-by: Bo Li <22713281+bobboli@users.noreply.github.com>
Signed-off-by: Bo Li <22713281+bobboli@users.noreply.github.com>
I have updated this PR, and now Feel free to continue on this PR, or pick the changes into your WIP PRs. |
Thank you @bobboli ! I also created #16200 in correspondence to an NVBUG (perf regression). Feel free to review it. |
Summary
ENABLE_FAULT_TOLERANCE.is_rank_active()as a plain bit-test helper and place every call insideif constexpr (ENABLE_FAULT_TOLERANCE), so non-FT kernels contain no active-rank checks.enable_fault_tolerancemode from the construction-timeep_group_healthstate;active_rank_maskis validated and copied only after the mode is selected and no longer chooses the kernel specialization.CUDA-graph lifecycle handling for changing active-rank masks remains follow-up work and is not addressed by this PR.
Testing
pre-commit run --filesfor all changed C++, CUDA, Python, and test filespython -m py_compilefor the changed Python filesgit diff --checkNot run: GPU/MPI tests locally.