Skip to main content
This page is the canonical reference for NCCL and UCX environment variables on CoreWeave high-performance backend fabrics. It covers the variables you set for InfiniBand clusters, the variables that differ on RoCE (Spectrum-X) clusters such as GB300, and the log lines that look alarming but are normal. Use it as the lookup target when a training or inference job needs fabric-specific tuning. For the Pod scheduling and Multus configuration that exposes RDMA devices to your containers, see Use GPUDirect RDMA with InfiniBand and Use GPUDirect RDMA with RoCE. For node placement using fabric labels, see Read IB and RoCE node labels for placement.

What this reference is and is not

This page covers fabric-level NCCL and UCX settings: which interfaces NCCL uses, how to select host channel adapters, and how the transport differs between InfiniBand and RoCE on CoreWeave. This page isn’t a guide to collective algorithms, topology-aware ranks, or debugging distributed training hangs. Those belong to training documentation. This page also doesn’t tune performance baselines or publish expected bandwidth numbers.

InfiniBand cluster recipe

On InfiniBand clusters, NCCL uses its built-in InfiniBand verbs transport. Set the following environment variables in your Pod spec or Slurm job. These values match the examples in Use GPUDirect RDMA with InfiniBand.
VariablePurpose
NCCL_SOCKET_IFNAMESelects the front-end interface for NCCL’s TCP control and bootstrap traffic. Set to the primary Pod interface, usually eth0.
NCCL_IB_HCASelects the RDMA host channel adapters for collectives. Use ibp on CoreWeave InfiniBand clusters.
UCX_NET_DEVICESDevices UCX uses, for stacks that run UCX alongside NCCL.
UCX_TLSUCX transports to enable.

RoCE (Spectrum-X) cluster recipe

RoCE clusters such as GB300 use Ethernet-based RDMA. Several NCCL variables differ from InfiniBand because the address family is IPv6 and the traffic class is set explicitly. The interface attachment (Multus NADs) and the full Pod spec live in Use GPUDirect RDMA with RoCE.

Variables that differ from InfiniBand

VariableInfiniBandRoCE (Spectrum-X)
NCCL_IB_ADDR_FAMILYNot requiredAF_INET6 (RoCE addressing on CoreWeave is IPv6)
NCCL_IB_TCNot requiredSet the RoCE traffic class, for example 96 on GB300
NCCL_NET_PLUGINNot requirednone for typical jobs
Interface attachmentDevices exposed directlyAttached through Multus NADs (see RoCE guide)

NCCL network plugin guidance

On CoreWeave RoCE fabrics, NCCL defaults to NCCL_NET_PLUGIN=none, which uses the built-in InfiniBand verbs path. This is correct for most jobs. The NVIDIA Spectrum-X NCCL plugin provides NIC-level hardware-accelerated collectives, but it’s only relevant for large jobs at the scale of roughly 10,000 or more GPUs. For typical multi-Node training and inference jobs, leave the plugin at none. If you believe your workload qualifies for the Spectrum-X plugin, contact your CoreWeave representative.

NCCL_IB_RETRY_CNT has a hard maximum of 7

NCCL_IB_RETRY_CNT is stored in a 3-bit register, so its maximum valid value is 7. Setting it to 8 or higher doesn’t increase retries: the value wraps and is effectively treated as a small or zero count, which makes the fabric appear far less reliable than it is. If you want more retry tolerance, 7 is the ceiling. Don’t set it above 7.

Segment-size and channel knobs

Most workloads don’t need to tune these. Change them only when you have a measured reason to, and change one at a time so you can attribute the effect.
VariableWhat it controlsWhen to consider changing it
NCCL_BUFFSIZESize of the per-connection staging bufferLarge-message collectives where the default underfills the link
NCCL_MIN_NCHANNELS / NCCL_MAX_NCHANNELSLower and upper bounds on the number of parallel channels (CUDA blocks) NCCL usesRaise the minimum when throughput plateaus below the link rate on large messages; lower the maximum when NCCL consumes too many SMs
NCCL_P2P_NET_CHUNKSIZEChunk size for point-to-point network transfers, which back collectives like all_to_allLower it for small-message latency; raise it for large-message point-to-point bandwidth (CoreWeave GB300 RoCE baselines use 524288)
Tuning these without a baseline measurement usually makes performance worse, not better. Capture a baseline first, change one knob, re-measure, and keep the change only if it helps.

UCX coexistence and GPUDirect RDMA

NCCL and UCX use different RDMA data paths, so a Node where NCCL tests pass doesn’t guarantee that UCX-based workloads (NIXL, MPI) work. The UCX transport settings, the rdma-core version requirement for GB300 RoCE, and the UCX diagnostics live in Use GPUDirect RDMA with RoCE. For MPI workloads (for example, Intel MPI or Ansys), the relevant variables differ from NCCL. A common configuration is:

Log lines that look alarming but are normal

When you enable NCCL_DEBUG=INFO, you see verbose output. The following messages don’t indicate a failure:
  • No Aggregation Manager sharp_am detected. This means SHARP isn’t available, so NCCL falls back to point-to-point collectives. SHARP is an InfiniBand-only switch-side reduction technology and isn’t available on RoCE (Spectrum-X) fabrics. On a RoCE cluster, this fallback is expected and not an error.
  • Transport fallback notices during initialization. NCCL probes available transports and reports the ones it selects. These are informational.

Enable debug logging

To diagnose RDMA or transport issues, increase NCCL verbosity. Debug logging increases log volume, so disable it after you finish.
For the full list of NCCL variables, see NCCL_DEBUG in the NVIDIA NCCL documentation.

When NCCL reports a vendor error

NCCL sometimes reports a vendor error code from the underlying RDMA stack. Use the onset pattern to distinguish a fabric fault from a configuration problem. A sudden, multi-Node onset points to a fabric-level event. A consistent failure on a single Pod points to a container or configuration problem such as a UCX or rdma-core mismatch. For the RoCE diagnostics and the link-health check, see Use GPUDirect RDMA with RoCE and Read IB and RoCE node labels for placement.
Last modified on July 14, 2026