NVIDIA Blackwell Joined the Swarm

A GB10 Grace Blackwell computed real 122B expert-FFN slices in CUDA and matched AMD ROCm bit-for-bit (cosine 1.0000000000) and Grace ARM CPU within tolerance. The cross-backend matrix is complete.

A swarm's premise is *whatever hardware shows up*. Numerical equivalence — the proof that CUDA, ROCm, Adreno and CPU workers all emit the same token — was already measured on ROCm, phone ARM and numpy. NVIDIA is the default and best-optimized path in stock ggml/inference engine, yet it was the one backend the matrix hadn't been closed on. Running real Blackwell hardware closes it.

GB10 Blackwell CUDA ↔ MI250 ROCm gfx90a: cosine 1.0000000000 — max abs diff 3.5×10⁻¹⁰. On the same real Qwen3.5-122B layer-0 expert slice, the two GPU backends are effectively bit-identical.

A new GPU docking into an almost-complete matrix of backend-comparison cells, its waveform snapping into overlap with a red GPU's
Measured · real Qwen3.5-122B-A10B, layer-0 expert slice

The cross-backend matrix

ComparisonHardwarecosinemax abs
CUDA ↔ ROCmGB10 Blackwell ↔ MI250 gfx90a1.00000000003.5e-10
CUDA ↔ CPUGB10 Blackwell ↔ Grace ARM0.99975258252.6e-05
CPU ↔ ROCmGrace ARM ↔ MI250 gfx90a0.99975258232.6e-05

The two GPU backends (CUDA, ROCm) share kernel sources, so they land effectively bit-identical (10⁻¹⁰). GPU↔CPU carries ~10⁻³ per-op perturbation from a different accumulation order, but stays equivalent at cosine 0.99975 — the same pattern as the earlier ROCm↔phone-ARM 0.99992. The router-authority principle holds again on NVIDIA: the discrete decisions (argmax, expert selection) are invariant over this continuous perturbation.

Setup

What ran, on what

  • Device — NVIDIA GB10 (Grace Blackwell), aarch64, compute 12.1 / sm_121a, 124.5 GB unified memory.
  • Toolkit — CUDA 13.0.88 · gcc 13.3 · ggml 0.15.3; the pure-ggml/gguf expert-worker built with Blackwell kernels.
  • Model — Qwen3.5-122B-A10B-Q4_K_M, layer-0 all experts (256 experts, n_embd 3072, n_ff 1024, Q4_K/Q6_K).
  • Method — the 1.58 GB L0 slice streamed MI250 → GB10 (lossless compare); the same input (h/ids) run through CUDA, CPU and ROCm; float32 output vectors (36,864) compared by cosine, relative L2 and max-abs.

One real-hardware gotcha: the GB10's integrated GPU classifies as ggml device type ACCEL, not GPU — so init_by_type(GPU) found nothing. Fixed by selecting the first non-CPU device instead of hard-coding the GPU type.

Why it matters

The matrix is closed

For heterogeneous workers to serve one model, a CUDA box and a ROCm box must be interchangeable, and a GPU and a CPU must be numerically equivalent. With Blackwell measured, both hold across the full backend matrix: CUDA↔ROCm workers can stand in for each other, and GPU↔CPU workers agree within a bounded, well-conditioned tolerance. The most common accelerator on earth is now a verified swarm citizen.