Repository navigation
NCCL Sync 2.24.3-1 - #1645
Merged
Merged
NCCL Sync 2.24.3-1#1645
Conversation
Add scalable init API * Add new ncclCommInitRankScalable to allow for passing multiple unique IDs to the init function. * Spreads the load onto multiple bootstrap roots, allowing for constant bootstrap time. * Requires multiple ranks to create a unique ID, and the CPU-side ID exchange code to call allgather[v] instead of broadcast. Accelerate init bootstrap operations * Reduce the number of calls to allgather. * Allow roots to reply early to ranks when information is already available. * Add an option to use ncclNet instead of sockets to perform bootstrap allgather operations. Add PAT algorithms for Allgather and ReduceScatter * Parallel Aggregated Trees, variation of Bruck algorithm. * Logarithmic number of network steps for small sizes at scale. * Only supports one rank per node at the moment. Add support for registered buffers for intra-node communication. * Allow registered user buffers to be accessed directly intra-node * Avoids extra copies in algorithms which permit it, saving memory bandwidth and helping with compute overlap. Add profiler plugin API * New plugin API for profiling * Supports various levels of profiling, with a hierarchy. Asynchronous graph allocation * Make calls to cudaMalloc and cudaMemcpy during graph allocation asynchronous. * Significantly speeds up graph capture. Use fatal IB asynchronous events to stop network operation * Avoids many other error messages * Only fatal errors are affected; potentially transient errors (e.g. port down) do not cause an immediate stop. Set P2P level to PXB on AMD CPUs when using more than 2 GPUs per node * P2P would cause a significant performance degradation when using many GPUs, and therefore many interleaved data flows. * Disable P2P through the CPU when we have 3+ GPUs per node; keep it enabled when we only have 2 GPUs. Improve the init logs to report the real NCCL function. * Make the log report ncclCommInitRank or ncclCommSplit, rather than the generic ncclCommInitRankFunc. Add a parameter to set the location of the user configuration file. * Add NCCL_CONF_FILE environment variable to set where the user's configuration file resides. Increase default IB timeout * Increase IB timeout value from 18 to 20. * Should help avoid fatal errors on large RoCE systems. Add new check for nvidia peermem * On linux kernels 6.6+, /sys/kernel/mm/memory_peers is no longer present; check for /sys/module/nvidia_peermem/version instead. Fix old performance regression when mixing small and large operations. * Improves distribution of work on channels. Fix crash when NUMA IDs are equal to -1. * Can happen when a NIC is a virtual NIC, or when linux doesn't know which NUMA node a device is attached to * Issue NVIDIA/nccl-tests#233 Fix tree graph search when NCCL_CROSS_NIC is set to 1. * Would force NCCL to use the balanced_tree pattern, thereby disabling LL128 on platforms with 1 GPU+1 NIC per PCI switch. * Would also try to use alternate rings even though it was not needed. Compiler tweaks and fixes * PR ROCm#1177 * PR ROCm#1228 Fix stack smash * PR ROCm#1325 Fixes for multi-node NVLink + IB operation Coverity fixes and comments.
Comment of a Bootstrap Function changed
Network user buffer support for collectives * Leverage user buffer registration to achieve zero-copy inter-node communications for Ring, NVLS and Collnet Add RAS subsystem * Create a RAS thread keeping track of all NCCL communicators. * Add a ncclras tool contacting the RAS thread and getting a report. Add fp8 support * Add support for e5m2 and e4m3 8-bit floating point operations. * Use Tree/PAT algorithms when possible for better numerical stability. Add NIC fusion * Add a NET API to ask the network plugin to fuse a set of interfaces together. * Fuse multiple NICs under the same PCI switch as a single, larger NIC. Socket connection failure retry * Retry in case of socket connection failure (unreachable host) * Avoid "Software caused connection abort" errors on retries QP connection failure retry * Retry in case of IB QP connection failure during ibv_modify_qp. NET API improvements * Allow plugins to force a flush in case data and completion ordering is not guaranteed. * Indicate when completion is not needed (e.g. for the LL128 protocol), allowing plugins to skip generating a completion. * Allow for full offload of allgather operations when using one GPU per node. NCCL_ALGO/NCCL_PROTO strict enforcement * Extend NCCL_ALGO/NCCL_PROTO syntax to be able to specify ALGO/PROTO filters for each collective operation. * Strictly enforce the ALGO/PROTO filters, no longer fall back on the ring algorithm when the filtering leaves no option and error out instead. Enable CUMEM host allocations * Use cumem functions for host memory allocation by default. Improved profiler plugin API * Avoid dependencies with NCCL includes. * Add information on whether the buffer is registered or not Adjust PAT tuning * Improve transition between PAT and ring at scale. Fix hangs when running with different CPU architectures * Detect when we use a mix of GPU architectures * Ensure Algo/Proto decisions are made based on that unified state. Fix FD leak in UDS * Fix a leak when mapping buffers intra-node with cumem IPCs. Fix crash when mixing buffer registration and graph buffer registration. * Separate local and graph registration to avoid crashes when we free buffers. Fix user buffer registration with dmabuf * Make ncclSend/ncclRecv communication with buffer registration functional on network plugins relying on dmabuf for buffer registration. Fix crash in IB code caused by uninitialized fields. Fix non-blocking ncclSend/ncclRecv * Fix case where ncclSend/ncclRecv would return ncclSuccess in non-blocking mode even though the operation was not enqueued onto the stream. * Issue ROCm#1495 Various compiler tweaks and fixes * PR ROCm#758 Fix typo in ncclTopoPrintGraph * Issue ROCm#1468
corey-derochie-amd
requested review from
a team,
AbandiGa,
AtlantaPepsi,
BertanDogancay,
JhaShweta1,
Nikhil-Nunna,
PJAvinash,
PedramAlizadeh,
gilbertlee-amd,
haripriyaayyalasomayajula,
isaki001,
jee7s,
mberenjk,
mustafabar,
nileshnegi,
nusislam,
rahulvaidya20,
thananon and
wenkaidu
as code owners
April 16, 2025 19:44
1 task
corey-derochie-amd
force-pushed
the
nccl-2.24
branch
from
April 17, 2025 15:22
3f5d864 to
6855d9e
Compare
BertanDogancay
force-pushed
the
nccl-2.24
branch
from
April 20, 2025 20:35
b53643c to
f9682b7
Compare
wenkaidu
approved these changes
Apr 22, 2025
BertanDogancay
force-pushed
the
nccl-2.24
branch
from
April 23, 2025 14:34
5c49668 to
ed725db
Compare
BertanDogancay
force-pushed
the
nccl-2.24
branch
from
April 24, 2025 03:48
ed725db to
a6bf9bf
Compare
1 task done
i-kosarev
added a commit
to ROCm/rocm-systems
that referenced
this pull request
Oct 29, 2026
Motivation ROCM-33020 is a host/device schedule mismatch in registered one-rank-per-node Ring/Simple AllGather. The host proxy expects NCCL_MAX_NET_SIZE steps while the HIP kernel uses the ordinary ring schedule, so the proxy FIFO-size check fails. Technical Details Upstream NCCL 2.24.3 introduced aligned host and CUDA-device net-offload. RCCL merge d045d0c (legacy a6bf9bf, ROCm/rccl#1645) retained the 1 GiB host schedule but disabled HIP device offload, creating the latent mismatch. The path stayed mostly hidden while registration was unavailable or disabled, including ROCm/rccl#1977. ROCm UBR enablement in #2758, followed by Torch 2.15 NCCL2 allocator registration, exposed it. This change keeps the ordinary host schedule for the affected registered one-RPN Ring/Simple AllGather path, matching the existing HIP kernel while preserving registration and zero-copy. Native CUDA, unregistered and multi-RPN paths, other algorithms/protocols, and other collectives are unchanged. The compile guard applies to all HIPCC builds, including HIP-on-NVIDIA; no public working AMD net-offload benchmark was found. Add a host regression for the 2-rank, one-RPN, 11 MiB-per-rank schedule.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
2.24.3-1
Network user buffer support for collectives
inter-node communications for Ring, NVLS and Collnet
Add RAS subsystem
report.
Add fp8 support
stability.
Add NIC fusion
interfaces together.
larger NIC.
Socket connection failure retry
QP connection failure retry
NET API improvements
ordering is not guaranteed.
protocol), allowing plugins to skip generating a completion.
GPU per node.
NCCL_ALGO/NCCL_PROTO strict enforcement
ALGO/PROTO filters for each collective operation.
on the ring algorithm when the filtering leaves no option and
error out instead.
Enable CUMEM host allocations
Improved profiler plugin API
Adjust PAT tuning
Fix hangs when running with different CPU architectures
state.
Fix FD leak in UDS
Fix crash when mixing buffer registration and graph buffer registration.
buffers.
Fix user buffer registration with dmabuf
on network plugins relying on dmabuf for buffer registration.
Fix crash in IB code caused by uninitialized fields.
Fix non-blocking ncclSend/ncclRecv
mode even though the operation was not enqueued onto the stream.
Various compiler tweaks and fixes
Fix typo in ncclTopoPrintGraph
ncclTopoPrintGraphin NCCL 2.23? NVIDIA/nccl#1468