Skip to content
Make in India OEM · INR-transparent · Pan-India onsite SLATalk to sales: +91 720 794 8743Sign in

NCCL Tests and Collective Benchmarks: Validating an AI Fabric Before Production

How-to Updated 18 Aug 2026 · 7 min read

Overview

nccl-tests is the standard open-source suite (from NVIDIA’s nccl-tests repository) for validating the communication fabric of a GPU cluster before production. It runs the collective operations training actually uses – all-reduce, all-gather, reduce-scatter – and reports bus bandwidth (busbw), a normalised figure you can compare directly against hardware limits. Commissioning practice is simple to state: run all_reduce_perf on one node, then 2, 4, 8 … up to full scale; on a healthy non-blocking fabric the large-message bus bandwidth stays near-flat as you scale, and any sag or outlier localises a bad link, optic or mis-wired rail.

NCCL Tests and Collective Benchmarks: Validating an AI Fabric Before Production
What you’ll learn: the difference between algorithm and bus bandwidth, target numbers for NVLink-class nodes and 400G-class RDMA fabrics, the scaling ladder methodology, and a step-by-step playbook for isolating a bad link before you sign acceptance.

Key takeaways

  • Use bus bandwidth (busbw), not algorithm bandwidth, to compare against hardware specs – busbw normalises for the collective’s data-movement pattern, as documented in the nccl-tests performance notes.
  • Single-node numbers validate NVLink/NVSwitch; multi-node numbers validate NICs, switches, optics and topology – always test both, in that order.
  • As a reference point, published single-node H100 (NVLink 4) all-reduce results reach roughly 450-480 GB/s busbw at large message sizes; your platform’s quoted figure, minus 5-10 percent, is your acceptance floor.
  • Scale in powers of two and plot busbw versus node count: a flat line is a healthy fabric, a cliff at a specific count localises the fault to the links or switch tier that entered at that step.
  • Most “NCCL is slow” cases are one bad component: a flapping transceiver, a downtrained PCIe or IB link, a wrong rail mapping, or GPUDirect RDMA silently disabled.

Algorithm bandwidth vs bus bandwidth

all_reduce_perf prints two figures. Algorithm bandwidth (algbw) is message size divided by time – what the job perceives. Bus bandwidth (busbw) rescales algbw by the collective’s traffic factor (for ring all-reduce, 2 x (n-1)/n) so the number is comparable to link speed regardless of GPU count. That is why acceptance thresholds are always written in busbw: it answers “are the wires delivering what they are rated for?” A fabric can show falling algbw with rising GPU count while busbw stays constant – that is normal, not a fault.

What good looks like

Anchor expectations to your platform, not to folklore. Useful published reference points: single-node HGX H100 all-reduce has been reported around 450-480 GB/s busbw at large message sizes (see the discussion in nccl-tests issue threads); across nodes on a healthy 8-rail 400G fabric, large-message busbw should approach a large fraction of aggregate NIC line rate per node and, critically, hold near-flat from 2 nodes to full scale. Cloud operators publish validation procedures with the same shape – for example Crusoe’s InfiniBand validation guide. For acceptance, get the integrator to commit a busbw figure for your exact GPU count and message size, and test against it with an agreed 5-10 percent tolerance, as part of the layered plan in acceptance testing an AI GPU cluster.

The scaling ladder method

Run the same command at 1 node, then 2, 4, 8 and so on to full scale, sweeping message sizes (for example 8 B to 8 GB with -b/-e/-f) and recording large-message busbw at each rung. Three patterns matter:

  • Flat curve: healthy fabric and correct rail wiring. Sign it.
  • Cliff at a specific rung: the fault sits in whatever entered at that step – a specific leaf switch, a spine tier, or the inter-rack links. Bisect within that rung by testing node subsets.
  • Uniformly low from 2 nodes: a systemic setting, not a cable – typically GPUDirect RDMA disabled (check NCCL_NET_GDR_LEVEL and nvidia-peermem), wrong NCCL topology detection, PCIe ACS enabled, or congestion control/PFC misconfigured on Ethernet fabrics.

Small-message latency deserves one pass too: it exposes switch and adaptive-routing problems that large messages hide, and it is what gates small collectives during inference and MoE routing. Rail wiring itself is covered in our guide to rail-optimised topology.

When one rung underperforms:

  • 1. Find the slow pair. Run 2-node all_reduce_perf (or sendrecv/alltoall tests) across node pairs; the pairs containing the bad node or link will stand out.
  • 2. Check physical counters. On the suspect ports, read symbol errors, link downed counts and effective link speed/width (ibstat or equivalent for InfiniBand; ethtool -S and switch telemetry for Ethernet). A link trained below rated speed or width is a defect even if it passes traffic.
  • 3. Swap to isolate. Move the transceiver or cable to a known-good port: if the fault follows the optic, replace it; if it stays with the port, suspect the NIC or switch. Dirty fibre ferrules are a leading cause – clean and re-test before replacing hardware; see cabling and optics for AI fabrics.
  • 4. Verify the software path. Confirm NCCL is using the interfaces you think (NCCL_DEBUG=INFO logs list chosen transports and rings), that GPUDirect RDMA is active, and that node-level PCIe links are at full generation and width.
  • 5. Re-run the full rung and log the fix in the commissioning record – a link you repaired during acceptance is a link to watch during the first 90 days.

Reference numbers and thresholds

Test scope What it validates Healthy signature (large messages) Common failure if low
Single node, 8 GPU NVLink / NVSwitch Busbw near platform NVLink spec (H100-class: ~450-480 GB/s reported) Bad NVLink lane, wrong module seating, ACS on
2 nodes NICs, first switch hop, GDR path Busbw near single-node figure on rail-optimised 8-NIC nodes GDR disabled, one NIC down/downtrained
4-16 nodes Leaf tier, rail wiring Within ~5% of 2-node busbw Rail mis-wire, one bad optic, oversubscription
Full scale Spine tier, routing, congestion Within 5-10% of quoted full-scale busbw Adaptive routing/PFC/ECN misconfig, hot links
Small messages (<64 KB) Latency path, switch config Latency flat across pairs; no outlier pairs Routing detours, buffer/QoS misconfiguration

Frequently asked questions

Which nccl-tests binaries should acceptance actually run?

At minimum all_reduce_perf (dominant in data-parallel training), all_gather_perf and reduce_scatter_perf (dominant in FSDP/ZeRO sharding), and alltoall_perf if you will run MoE models. Sweep message sizes from a few KB to several GB; sign off on the large-message busbw and sanity-check small-message latency.

My algbw drops as I add nodes – is the fabric broken?

Not necessarily. Algorithm bandwidth falls with scale by construction for all-reduce, while bus bandwidth should hold roughly constant. Judge the fabric on busbw. If busbw itself sags with scale on a non-blocking fabric, then investigate.

Do I need MPI to run nccl-tests across nodes?

The usual method is mpirun (OpenMPI) launching one process per GPU across hosts, or running inside Slurm with srun. Containerised clusters commonly run it as a Kubernetes job. Whatever the launcher, keep it identical between the integrator’s demonstration and your witnessed re-run so numbers are comparable.

What NCCL settings matter most for a fair test?

Let NCCL auto-detect first and record NCCL_DEBUG=INFO output. The settings that most often explain bad numbers are GPUDirect RDMA state (nvidia-peermem loaded, NCCL_NET_GDR_LEVEL), interface selection (NCCL_SOCKET_IFNAME/NCCL_IB_HCA), and on Ethernet fabrics the RoCE congestion configuration. Document every variable used in the acceptance record.

How often should I re-run collective benchmarks after go-live?

Re-run a short ladder after any cabling change, firmware update or node swap, and on a monthly or quarterly cadence as drift detection – optics degrade and links retrain. Keep results with your baseline so a slow training job can be compared against known-good fabric numbers; day-2 practice is covered in our Day-2 operations article.

Ready to deploy?

Talk to an RDP architect about power, cooling and lead time.

Request a Quote