Repository navigation
fix(rccl): restore the gfx1250 LSA flat AddressFree skip - #14997
Conversation
The NCCL 2.31.2 sync dropped the ncclDevrFinalize guard, so gfx1250 teardown can hang in cuMemAddressFree and SkipCuMemFreePolicy.IsolatedArchAndEnvBranches fails. Co-authored-by: Cursor <cursoragent@cursor.com>
✅ All Policy Checks Passed
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
The ROCM-30633 rationale already lives next to rcclSkipLsaFlatAddressFree. Co-authored-by: Cursor <cursoragent@cursor.com>
pr-rocm-systems-14997-oci-rccl-pr-buildBuilds
FailuresNo failing tests in this run. 189 tests skipped. pr-rocm-systems-14997-oci-rccl-pr-smokeBuilds
Failures
15 tests skipped. Performance regressions
|
pr-rocm-systems-14997-ruby64-rccl-pr-smokeBuilds
FailuresNo failing tests in this run. 15 tests skipped. Performance regressions
|
pr-rocm-systems-14997-oci-rccl-pr-buildBuilds
FailuresNo failing tests in this run. 189 tests skipped. pr-rocm-systems-14997-oci-rccl-pr-smokeBuilds
Failures
15 tests skipped. Performance regressions
|
pr-rocm-systems-14997-oci-rccl-pr-smokeBuilds
FailuresNo failing tests in this run. 15 tests skipped. Performance regressions
|
pr-rocm-systems-14997-ruby64-rccl-pr-smokeBuilds
FailuresNo failing tests in this run. 15 tests skipped. Performance regressions
|
abouteiller
left a comment
There was a problem hiding this comment.
Fixes a bug
Envar discussion does not prevent merging.
TheRock Submodule Bump ActivityNewest first
|
Motivation
ncclDevrFinalizealways frees the LSA flat virtual-address reservation. On gfx1250 thatcuMemAddressFreecan hang or double-free while peer maps are still live. The NCCL 2.31.2 sync dropped the guard, soSkipCuMemFreePolicy.IsolatedArchAndEnvBranchesfails on the RCCL unit nightly.Technical Details
Restore the gfx1250-only skip in
ncclDevrFinalize. WhenrcclSkipLsaFlatAddressFree()is true (NCCL_CUMEM_SKIP_FREE=1, or gfx1250 with the variable unset), finalize clearslsaFlatBaseand leaves the reservation for process exit. gfx950 still frees it.NCCL_CUMEM_SKIP_FREE=0forces the free on every architecture.The host unit test and
rcclSkipLsaFlatAddressFree()were already ondevelop; only the call site was missing.Issue Tracking
JIRA ID: AICOMRCCL-3009
Test Plan
rccl-UnitTestsDevRuntimeand run--gtest_filter=SkipCuMemFreePolicy.IsolatedArchAndEnvBranches.ForceOn_SkipsLsaFlatandGfx1250_SkipsLsaFlatreportrcclTestHipMemAddressFreeCount == 0.ForceOff_FreesLsaFlat,Gfx950_PeerSkipKeepsLsaFlatFree, andGfx900_SkipFreeOffreport1.ncclCommInitAll, symmetric window register,ncclDevCommCreate,ncclDevCommDestroy,ncclCommDestroy) with the skip on and withNCCL_CUMEM_SKIP_FREE=0.Test Result
All runs below are at 618a5bf on a 4x MI450 (gfx1250) node, ROCm 10.1 (HIP 7.17), built with
GPU_TARGETS=gfx1250.Unit test.
SkipCuMemFreePolicy.IsolatedArchAndEnvBranchespasses, with all five isolated cases passing. The wholerccl-UnitTestsDevRuntimebinary passes (9 tests). The test fakes the architecture withRCCL_TEST_GCN_ARCH, so the result does not depend on the GPU it runs on.Device-API comm create/destroy loop, 2 GPUs, 10 iterations per run:
ncclDevrFinalizeskip logNCCL_CUMEM_SKIP_FREE=0(forced free)With the default setting, every finalize logs
skipping lsaFlatBase hipMemAddressFreeand teardown completes. The forced-free run did not hang or double-free in 10 cycles on this node, so the original ROCM-30633 failure did not reproduce here.The 4-GPU loop was stopped during its first init and has no result. The first init in each process takes about 490 s on this node because HIP translates the gfx1250 code object for the node's A0 silicon. For the same reason, the in-tree
DeviceApi.LsaRemoteReadtimes out at its 60 s limit duringncclCommInitAll, before any device-API code runs. That is a property of this node, not of the change.No local results yet on MI300 (gfx942) or MI350 (gfx950).
Submission Checklist
Made with Cursor