Skip to content

Rail-optimized fabrics on Dell hardware

S5·E1The two cards in the labelled slots · Dell customer lab, Round Rock, day one of a five-day PoC

S5·E1Analyze~30 minsources checked todayverified against NCCL 2.12 all2all blog, Dell PowerEdge XE9680 Technical Guide and the NCP-AIN certification page, all re-fetched 2026-09-07

Builds on: GPUDirect RDMA: proving it is actually on, algbw, busbw, and reading a nccl-tests result

Before you read: what do you already know?

3 quick questions. Wrong answers are fine and expected; trying first makes the lesson stick.

After this lesson you can

  • Explain what a rail is and why rail alignment changes all-reduce and all2all behaviour.
  • Analyze a Dell PowerEdge XE9680 slot plan against the published slot-to-socket map and the power and mixed-card rules.
  • Predict the nvidia-smi topo -m matrix a given card placement will produce and mark every NIC-to-GPU pair worse than PXB.
  • Separate the parts of a rail design that are verifiable on a Dell page from the parts that are not.

Episode 1 — The two cards in the labelled slots

The situation · Dell customer lab, Round Rock, day one of a five-day PoC

The night-shift operator has already labelled every card. RAIL 0 through RAIL 7, stuck on the brackets in the order the cards sit - and two of those labels are on cards in slots 31 and 40, because that is where the NIC slots are. The customer’s network lead writes the slot numbers in her notebook without comment. The Dell SE, holding coffee he stopped drinking an hour ago, has promised this medical-imaging customer a rail-aligned two-node result by Friday at nine; it is row 31 in his spreadsheet of promises.

Rails exist because a collective is not one big flow. NVIDIA states the rule in one sentence - “NIC-0 from each DGX system is connected to the same leaf switch (L0), NIC-1s are connected to the same leaf switch (L1), and so on” - and the reason is that it “helps maximize all-reduce performance while minimizing network interference between flows”.[1] Rank k talks to rank k; if rank k’s NIC is on rank k’s leaf, that conversation is one hop and shares a buffer with nobody.

But the rail is not decided by the sticker on the bracket. On an XE9680 it is decided by the slot: each slot is wired to a specific processor, and Dell publishes both the map and the population order.[2] So you ask iDRAC for the current population and run nvidia-smi topo -m, the matrix of connections between every GPU and NIC.[4]

A rail is a slot and a leaf, not a label.

Segment 1 starts with what a rail actually is.

1A rail is a lane, not a link

NVIDIA states the rail rule in one sentence: “NIC-0 from each DGX system is connected to the same leaf switch (L0), NIC-1s are connected to the same leaf switch (L1), and so on”, and the reason is that this “helps maximize all-reduce performance while minimizing network interference between flows”.[1] The DGX SuperPOD B200 reference architecture applies the same rule at scale: “each group of 32 nodes is rail-aligned”, so node-to-node traffic inside a rail is one hop and only cross-rail traffic reaches the spine.[3] The same document adds the design rule that keeps a partial deployment honest: the fabric “should be designed to support the full SU, including leaf switches and leaf-spine cables”, even when only part of it is bought.[3]

Rails create a second problem that PXN solves. PXN expands to “PCI x NVLink”: GPUs reach a NIC “through NVLink and then PCI” instead of through the CPU, which “couldn’t deliver full bandwidth”.[1] Functionally, PXN “leverages NVIDIA NVSwitch connectivity between GPUs within the node to first move data on a GPU on the same rail as the destination, then send it to the destination without crossing rails”, which removes those flows from the spine entirely.[1] It also aggregates: PXN can “wait until all eight sends are ready, then send all eight messages at one time”, which is where NVIDIA’s Figure 3 shows “more than 2X improvement” in all2all latency.[1]

The knob that tells NCCL your fabric is rail-optimized is NCCL_CROSS_NIC. Its default is 2 - “Try to use the same NIC for the same ring/tree, but still allow for the use of different NICs if it would result in a better performance.” Value 0 is “Always use the same NIC for the same ring/tree, to avoid crossing network rails. Suited for networks with per NIC switches (rails)”, and value 1 is for “networks where all NICs from a node are connected to the same switch”.[5] A customer who built rails and left NCCL_CROSS_NIC alone has not told the library what they built.

HGX B300 node (e.g. Dell PowerEdge XE9780)N-S onlyGPU0B300GPU1B300GPU2B300GPU3B300GPU4B300GPU5B300GPU6B300GPU7B300CX-8800GCX-8800GCX-8800GCX-8800GCX-8800GCX-8800GCX-8800GCX-8800GBlueField-3 DPU (B3240)DPU/ECPF mode · N-S · OVS-DOCA/HBN/DTSE-W leaves: SN5600Spectrum-X · RoCE · adaptive routingN-S leafstorage · mgmt · tenant

HGX B300 node in a Spectrum-X AI factory

Reference architecture per node: 8 Blackwell Ultra GPUs, "Eight NVIDIA ConnectX-8 SuperNICs per NVIDIA HGX B300 baseboard" at a "1:1 GPU-to-NIC ratio" for east-west, and "One NVIDIA BlueField-3 DPU per server" in "ECPF or DPU mode" for north-south.

Why it matters. Dell's HGX B300 chassis are PowerEdge XE9780/XE9785; Dell lists its Partner DPU (BlueField-3 dual-port 400GbE) as compatible with XE9780. Spectrum-X validated stack v2.3.1 (Sep 2026): Cumulus 5.18.1, BF-3 FW 32.50.1002, DOCA-Host 3.5.0-082, NCCL 2.30.7.

FAE note. Click a GPU/NIC pair, the DPU, or either fabric. The key question customers ask: why is the DPU not in the GPU traffic path?

Source: docs.nvidia.com

AI-factory view: eight GPUs, eight east-west SuperNICs at a 1:1 ratio into the Spectrum-X leaves, and a separate north-south DPU. Click a GPU-to-NIC edge to see why the pairing is the rail.

2On an XE9680 the rail is decided in the slot

The Dell PowerEdge XE9680 “supports up to eight PCI express (PCIe) Gen 5 expansion cards installed on PCIe Switch Board (PSB), and two PCI express (PCIe) Gen 5 expansion cards installed on PCIe Base Board (PBB)”.[2] Those ten slots are not interchangeable, because each one is wired to a specific socket.[2]

Slot Riser Processor Form
32, 33 Riser 4 Processor 2 FH, HL, x16
34, 35 Riser 3 Processor 2 FH, HL, x16
36, 37 Riser 2 Processor 1 FH, HL, x16
38, 39 Riser 1 Processor 1 FH, HL, x16
31 base board Processor 2 FH, HL, x16
40 base board Processor 1 FH, HL, x16

Three placement rules sit on top of that map. First, power: “SmartNIC/DPUs with high power consumption (greater than 75 W), should be installed in slots 31 and 40. SmartNIC/DPUs with normal power consumption (less than 75 W), can also be installed in slots 32-39.”[2] Second, mixing: “When a system is configured with two different types of high-speed NIC/DPU cards (for example, 2x BF3 and 8x CX-7)… The card type with the smaller quantity (2 cards or fewer) must be installed in Slot 31 and Slot 40 first”, and Dell says the rule “applies to all high-speed NIC/DPU card types, including but not limited to BF3, CX-7, and CX-6”.[2] Third, order: the published slot priority for a Mellanox (SmartNIC/DPU: 400G, 2P) card alongside NVIDIA GPUs is 33, 37, 35, 39, 32, 36, 34, 38, 31, 40, maximum ten cards, and Dell adds the general note “Install the PCIe card in the odd-numbered slots first, followed by the even-numbered slots”.[2] A 200G 2P SmartNIC/DPU is restricted to slots 31 and 40 with a maximum of two.[2]

Two chassis-level exclusions belong in the same conversation: the Gaudi3 variant blocks slots 33 and 38 “to improve airflow and address thermal concerns”, and the MI300X variant “does not support SmartNIC/DPUs” at all.[2]

PowerEdgeBF-3 offeringDPU modeNIC modeAux powervSphere DSENotable KB
R660
16G
R760
16G
R760XA
16G (GPU)
XE9680
16G HGX H100/H200
XE9680L
16G liquid
R7725
17G (AMD)
R770
17G (Intel)
XE9780 / XE9785
17G HGX B300 — Dell AI Factory

✓ yes · ✗ no · ◐ conditional · ? unknown · — n/a. Click a cell for the evidence.

⚠ = not confirmed on a fetched primary source (hover for why). Facts as of DOCA 3.5.0 (Sep 2026). Selections are saved.

Dell tab: which PowerEdge platforms carry BlueField-3, in which mode, and what the aux-power and support caveats are. Use it to check a platform claim before it reaches a slide.

3Proving the pairing on the machine

nvidia-smi topo -m “Displays a matrix of connections between all GPUs and NICs (including their data-direct devices if applicable) in the system along with CPU/memory affinities for the GPUs”.[4] The legend is the whole diagnosis: X is Self, PIX is “Connection traversing a single PCIe switch”, PXB is “Connection traversing multiple PCIe switches (without traversing the PCIe Host Bridge)”, PHB traverses “a PCIe Host Bridge (typically the CPU)”, NODE traverses “the interconnect between PCIe Host Bridges within a NUMA node”, and SYS is “Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)”.[4] Best to worst for GPUDirect RDMA runs PIX, PXB, PHB, NODE, SYS - a reading of that legend, not a published ranking.[4] NCCL_NET_GDR_LEVEL accepts most of the same tokens, LOC, PIX, PXB, PHB and SYS but not NODE, so the matrix and the variable are read together.[5]

Two more reads finish the picture. cat /sys/class/net/<if>/device/numa_node follows the netdev’s link to its PCI device and reads the kernel’s numa_node attribute - “the NUMA node to which the PCI device is attached, or -1 if the node is unknown” - which must match where the ranks run.[13] And NCCL_IB_HCA is what pins the RDMA data path to specific HCAs, in the format <hca>[:<port>[:<rail>[:<plane>]]], comma separated, with ^ to exclude and = to require an exact match, up to a maximum of 32 HCAs.[5] Setting NCCL_SOCKET_IFNAME instead only moves the bootstrap interface, not the RDMA traffic.[5]

Inside containers and VMs the matrix can lie: NVIDIA warns to “Ensure /sys is properly mounted in containers and virtual machines, as it provides PCI topology discovery. Virtual PCI topology exposure can degrade performance significantly.”[7] NVIDIA’s GPUDirect RDMA documentation states the constraint that kills GPUDirect regardless of slot: it “currently relies upon all physical addresses being the same from the different PCI devices’ point of view”, and “This makes it incompatible with IOMMUs performing any form of translation other than 1:1, hence they must be disabled or configured for pass-through translation for GPUDirect RDMA to work.”[12]

4What a rail design does not prove

Three things a Dell-account FAE will be asked about are not sourceable today, and saying so is part of the deliverable.

The first is automated rail validation. ibdiagnet is documented as having a “Rail Optimized Topology” validation that “checks that all HCAs nodes connected to the same Top-of-Rack switch have the same PCIe address (BDF) in the corresponding server”, but the page 404s on both docs.nvidia.com and its networking-docs redirect target, so that wording is a search snippet and nothing more; it is also an InfiniBand tool, so it does not cover a RoCE leaf.[8] Treat it as a lead to check, not a capability to promise.

The second is the Kubernetes-side rail model. The Network Operator v26.7.0 index confirms that CRDs named SpectrumXRailPoolConfig, NicConfigurationTemplate and NicInterfaceNameTemplate exist, but the per-field description of what the rail-pool CRD configures came from a search snippet rather than the fetched page.[9] Name the CRD; do not describe its fields from memory.

The third is Dell BIOS. The 16G “PowerEdge BIOS Performance and Workload Tuning Guide” is behind a reCAPTCHA interstitial for automated fetch, which means every BIOS value in a rail recommendation - System Profile, NUMA Nodes Per Socket, memory interleaving, IOMMU, PCI ASPM - has to be read from iDRAC on the machine before it goes on a page.[11] The XE9680 slot map and the 75 W rule are the NUMA-relevant facts that are on a fetched Dell page, which is exactly why this lesson is built on them.[2]

For the exam, this material sits in Domain 1 (AI Data Center Design and Optimization), weighted at 5%, whose objectives are to “Describe an AI factory networking architecture and its components”, “Describe rail-optimized topologies for high-performance AI workloads” and “Describe GPU-to-GPU communications”.[10] The Spectrum-X platform page supplies the component vocabulary that objective 1.1 expects: BlueField-3 SuperNICs in the Hopper era, ConnectX-8 at 800 Gb/s with Blackwell, and ConnectX-9 at 1,600 Gb/s per GPU with Vera Rubin.[6]

Episode 1, closing — The mail that arrives at 18:40

How it ended

The two cards move to the slots the published priority list actually names, and the two pairs that read SYS on the matrix come back as PXB.[2][4] The operator reprints eight labels without being asked and pockets the old ones, “in case you change your minds again”. The network lead opens a fresh page and writes NCCL_CROSS_NIC=0 on it, because a fabric built as rails has to be declared as rails.[5]

Then, at 18:40, a mail from the customer’s own lab, addressed to nine people: ib_write_bw between two nodes gives 180 on a 400G link, and the NCCL busbw halves when the second node joins. No units. No command lines. The bridge call is at 22:10.

Placing 8x ConnectX-7 and 2x BlueField-3 in one XE9680

The ask: an 8-GPU XE9680, eight ConnectX-7 400G 2P cards for the east-west rails, two BlueField-3 DPUs for north-south. Ten cards, ten slots, so the question is only which card goes where.

Step 1 - apply the mixed-card rule first, because it overrides the priority list. Two different high-speed types are present, so “the card type with the smaller quantity (2 cards or fewer) must be installed in Slot 31 and Slot 40 first”. The BlueField-3s are the smaller quantity. Slots 31 and 40 are the BlueField-3s.

Step 2 - check power against the same slots. A DPU above 75 W belongs in 31 and 40 anyway, so the two rules agree here rather than conflict. If the BlueField-3 SKU chosen is a 75 W SuperNIC the rule still holds, because it is the smaller-quantity type.

Step 3 - fill the remaining eight slots with the ConnectX-7s in the published order for Mellanox (SmartNIC/DPU: 400G, 2P): 33, 37, 35, 39, 32, 36, 34, 38. That is the whole priority list minus the two slots already taken, and it honours the odd-slots-first note.

Step 4 - read the socket column. Cards land in 33 and 32 (Processor 2), 35 and 34 (Processor 2), 37 and 36 (Processor 1), 39 and 38 (Processor 1): four rails per socket, balanced. The two DPUs split one per socket, 31 on Processor 2 and 40 on Processor 1.

Step 5 - predict nvidia-smi topo -m. With the GPUs on the PCIe switch board and each ConnectX-7 in a switch-board slot, each NIC should read PIX or PXB to the GPUs behind the same switch and SYS to the four GPUs on the other socket. Any NIC-to-paired-GPU cell that reads SYS is a placement bug, not a tuning problem.

Step 6 - tell NCCL. NCCL_CROSS_NIC=0 because this is a rail-optimized network, and NCCL_IB_HCA pinned to the eight east-west devices so the north-south BlueField-3s never carry a collective.

Lab

Pre-flight inventory (read-only; nothing in this lab changes hardware state, and no physical card move is a lab step - that is a change-control item):

  1. sudo racadm hwinventory or the iDRAC UI, PCIe slot view. Record the card in every populated slot number. Expected: a slot number and card model per row. If iDRAC shows a slot you cannot map, stop and get the platform’s technical guide.
  2. nvidia-smi topo -m. Expected: an 8-GPU matrix with the NIC columns present. If NIC columns are missing, the RDMA devices are not visible to the driver - check ibv_devinfo before reading anything into the matrix.
  3. For every NIC: cat /sys/class/net/<if>/device/numa_node. Expected: 0 or 1 matching the socket the slot table predicts. A value of -1 means the platform did not export affinity; note it rather than guessing.
  4. ibdev2netdev to map each mlx5_N to its netdev, so the topo matrix, the numa_node file and any later perftest run all refer to the same card. Expected: one line per port in the form mlx5_0 port 1 ===> eth2.
  5. Diff the real matrix against the prediction you wrote in the no-hardware lab. Mark every NIC-to-GPU pair worse than PXB. Expected: the marked set matches the cross-socket pairs your slot table predicted. Any surprise is either a slot you mis-recorded or a card that is not where iDRAC says.
  6. Produce the one-page placement recommendation: current population, the marked pairs, the specific slot moves that would fix them, and the sentence that the moves are a scheduled physical change with a documented rollback (return each card to the slot recorded in step 1).

Retrieval check

10 questions from memory. Answer before looking anything up; misses become flashcards.

Explain it to a Dell SE

Explain to a Dell SE, in four sentences, why the slot a ConnectX-7 goes into is a fabric design decision and not a mechanical one.

14 flashcards for this lesson — 0 in deck. Spaced review lives at /review.

Sources

Facts in this lesson were checked against NCCL 2.12 all2all blog, Dell PowerEdge XE9680 Technical Guide and the NCP-AIN certification page, all re-fetched 2026-09-07. Dates are when each page was fetched.

  1. Doubling all2all Performance with NVIDIA Collective Communication Library 2.12 (NVIDIA Technical Blog) · fetched 2026-09-07
  2. Dell PowerEdge XE9680 Technical Guide (Regulatory Model E90S) · fetched 2026-09-07
  3. Network Fabrics - NVIDIA DGX SuperPOD Reference Architecture (B200) · fetched 2026-09-07
  4. nvidia-smi documentation (topo subcommand) · fetched 2026-09-07
  5. Environment Variables - NCCL 2.31.2 documentation · fetched 2026-09-07
  6. NVIDIA Spectrum-X Ethernet Platform (product page) · fetched 2026-09-07
  7. GPU Troubleshooting - NCCL 2.31.2 documentation · fetched 2026-09-07
  8. Rail Optimized Topology Validation - ibdiagnet User Manual v2.19 (page does not exist; 404 on docs.nvidia.com and networking-docs) · fetched 2026-09-07
  9. NVIDIA Network Operator v26.7.0 · fetched 2026-09-07
  10. NVIDIA-Certified Professional: AI Networking (NCP-AIN) certification page · fetched 2026-09-07
  11. PowerEdge BIOS Performance and Workload Tuning Guide for 16G (Dell InfoHub) · fetched 2026-09-07
  12. GPUDirect RDMA - CUDA Toolkit documentation · fetched 2026-09-07
  13. Linux kernel ABI: sysfs-bus-pci (testing) · fetched 2026-09-07

The same idea elsewhere

Other lessons that cover this ground, sometimes from another course's angle.