Record RTX Pro 6000 multi-GPU scaling

This commit is contained in:
Daniel Maddern 2026-08-22 16:42:09 +07:00
parent 6d8a1c3c2b
commit bee998d840
7 changed files with 213 additions and 2 deletions

View file

@ -32,6 +32,10 @@ Historical handoffs in `PLAN.md` and `PARITY.md` may describe older states.
- Matched one-GPU RTX PRO 6000 Blackwell Server SDPA sampling averaged `28.50s` - Matched one-GPU RTX PRO 6000 Blackwell Server SDPA sampling averaged `28.50s`
over two runs versus `126.66s` for the same tensor runner on GB10 (`4.44x`). over two runs versus `126.66s` for the same tensor runner on GB10 (`4.44x`).
RTX repeat variance was `0.49%` and checksums were identical between repeats. RTX repeat variance was `0.49%` and checksums were identical between repeats.
- Two-GPU Ulysses SDPA speedup grows with sequence size: `1.21x` at
864x480/141 frames, `1.55x` at 1344x768/124 frames, and `1.72x` at
1344x768/243 frames. The tested cards have no NVLink; P2P read/write is
available and NCCL uses `P2P/CUMEM`.
## Primary Missing Scope ## Primary Missing Scope
@ -51,7 +55,7 @@ Historical handoffs in `PLAN.md` and `PARITY.md` may describe older states.
### Distributed Execution ### Distributed Execution
- Real NCCL transport and output parity above one rank. - Output parity above one rank; real two-rank NCCL transport is validated.
- 2/4/6/8-GPU topology and performance sweeps on one Blackwell machine. - 2/4/6/8-GPU topology and performance sweeps on one Blackwell machine.
- Distributed resident-service orchestration; the current launcher is batch - Distributed resident-service orchestration; the current launcher is batch
generation through `torchrun`. generation through `torchrun`.

View file

@ -141,9 +141,17 @@ runs took `28.43s` and `28.57s` (mean `28.50s`). The same tensor runner took
during RTX sampling was 14,049,528,832 bytes. Both RTX repeats produced identical during RTX sampling was 14,049,528,832 bytes. Both RTX repeats produced identical
checksums; cross-device latent parity was not tested because no latent was saved. checksums; cross-device latent parity was not tested because no latent was saved.
Two-GPU SDPA results show that Ulysses is faster than TP at all measured shapes.
Against one GPU, Ulysses reached `1.21x` at 864x480/141 frames, `1.55x` at
1344x768/124 frames, and `1.72x` at 1344x768/243 frames. The cards expose no
NVLink. `nvidia-smi topo -p2p r` and `-p2p w` report `OK` in both directions,
and NCCL 2.27.7 selected `P2P/CUMEM` with GDR enabled and zero NVLS channels.
RunPod allocations varied between cross-NUMA `SYS` and same-NUMA `NODE`
topologies, so topology must be recorded with every scaling result.
## Remaining GPU Gates ## Remaining GPU Gates
- Real NCCL identity at 2, 4, 6, and 8 GPUs. - Real NCCL identity at 4, 6, and 8 GPUs; two-GPU transport is complete.
- Distributed-versus-single latent parity above one rank. - Distributed-versus-single latent parity above one rank.
- Full 2/4/6/8 timing, transport, and memory reports; the one-GPU SDPA baseline - Full 2/4/6/8 timing, transport, and memory reports; the one-GPU SDPA baseline
is complete. is complete.

View file

@ -141,6 +141,13 @@ GB10, a `4.44x` speedup. The two RTX runs were within `0.49%` and produced
identical checksums. See identical checksums. See
`benchmarks/rtxpro6000-server-vs-gb10-sdpa-864x480-141f-base12-seed440420.json`. `benchmarks/rtxpro6000-server-vs-gb10-sdpa-864x480-141f-base12-seed440420.json`.
Two-GPU Ulysses scaling improves as the packed sequence grows: `1.21x` at
864x480/141 frames, `1.55x` at 1344x768/124 frames, and `1.72x` at
1344x768/243 frames. These RTX PRO 6000 Server cards have no NVLink. CUDA P2P
read/write is available and NCCL selected `P2P/CUMEM`; topology varied between
`SYS` and `NODE` across RunPod allocations. See
`benchmarks/rtxpro6000-server-1v2-sdpa-scaling-seed440420.json`.
Matched GB10 backend results and parity evidence are recorded in [`PLAN.md`](PLAN.md) Matched GB10 backend results and parity evidence are recorded in [`PLAN.md`](PLAN.md)
and [`PARITY.md`](PARITY.md). Standalone `tools/compare_*`, `tools/trace_*`, and [`PARITY.md`](PARITY.md). Standalone `tools/compare_*`, `tools/trace_*`,
`tools/inspect_*`, and `tools/patch_comfy_*` commands are diagnostic utilities, `tools/inspect_*`, and `tools/patch_comfy_*` commands are diagnostic utilities,

View file

@ -0,0 +1,122 @@
{
"device": "NVIDIA RTX PRO 6000 Blackwell Server Edition",
"attention": "sdpa",
"steps": 12,
"seed": 440420,
"hourly_usd": {
"one_gpu": 2.09,
"two_gpu": 4.18
},
"results": [
{
"resolution": [
864,
480
],
"frames": 141,
"video_seconds_at_24fps": 5.875,
"one_gpu": {
"mode": "tensor",
"sampling_seconds": 28.500914809992537,
"sampling_cost_usd": 0.016546364431356778
},
"two_gpu": {
"mode": "ulysses",
"sampling_seconds": 23.494563594460487,
"sampling_cost_usd": 0.027279798840234674,
"speedup": 1.2130855163750494,
"scaling_efficiency": 0.6065427581875247,
"cost_premium": 0.6486883842916646
}
},
{
"resolution": [
1344,
768
],
"frames": 124,
"video_seconds_at_24fps": 5.166666666666667,
"one_gpu": {
"mode": "tensor",
"sampling_seconds": 97.94385590963066,
"sampling_cost_usd": 0.05686184968086891
},
"two_gpu": {
"mode": "ulysses",
"sampling_seconds": 63.132430186495185,
"sampling_cost_usd": 0.07330376616098608,
"speedup": 1.5514032268408078,
"scaling_efficiency": 0.7757016134204039,
"cost_premium": 0.2891554983243718
}
},
{
"resolution": [
1344,
768
],
"frames": 243,
"video_seconds_at_24fps": 10.125,
"one_gpu": {
"mode": "tensor",
"sampling_seconds": 311.01632468774915,
"sampling_cost_usd": 0.18056225516594326
},
"two_gpu": {
"mode": "ulysses",
"sampling_seconds": 180.68109439313412,
"sampling_cost_usd": 0.2097908262675835,
"speedup": 1.7213551076407902,
"scaling_efficiency": 0.8606775538203951,
"cost_premium": 0.16187531040071534
}
}
],
"two_gpu_mode_comparison": [
{
"resolution": [
864,
480
],
"frames": 141,
"ulysses_sampling_seconds": 23.946259677002672,
"tensor_sampling_seconds": 28.037104761999217
},
{
"resolution": [
1344,
768
],
"frames": 124,
"ulysses_sampling_seconds": 66.31268315999478,
"tensor_sampling_seconds": 74.59926067800552
},
{
"resolution": [
1344,
768
],
"frames": 243,
"ulysses_sampling_seconds": 190.96160273600253,
"tensor_sampling_seconds": 203.40585646100226
}
],
"topology": {
"benchmark_host": "SYS between GPUs, separate NUMA nodes, no NVLink",
"diagnostic_host": "NODE between GPUs, same NUMA node, no NVLink",
"p2p_read": "OK in both directions",
"p2p_write": "OK in both directions",
"nccl_version": "2.27.7+cuda13.0",
"nccl_transport": "P2P/CUMEM",
"nccl_gdr": true,
"nccl_nvls_channels": 0,
"nccl_log": "/runpod-volume/h3-benchmarks/rtxpro6000-server-2gpu-nccl-transport.log"
},
"cost_scope": "Sampling wall time only. Model/Qwen loading, text conditioning, VAE decode, media encoding, muxing, and pod startup are excluded.",
"notes": [
"Two-GPU Ulysses timing in the primary results uses the better NODE topology diagnostic host.",
"The separate two-GPU mode comparison was measured on the SYS topology host.",
"Ulysses was faster than tensor parallelism at every tested shape.",
"Cross-mode and cross-device latent parity was not measured because latents were not retained."
]
}

View file

@ -0,0 +1,46 @@
Diagnostic host topology (RunPod EUR-IS-1, CUDA 13.0)
$ nvidia-smi topo -m
GPU0 GPU1 NIC0 NIC1 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X NODE SYS SYS 64-127,192-255 1 N/A
GPU1 NODE X SYS SYS 64-127,192-255 1 N/A
NIC0 SYS SYS X PIX
NIC1 SYS SYS PIX X
$ nvidia-smi topo -p2p r
GPU0 GPU1
GPU0 X OK
GPU1 OK X
$ nvidia-smi topo -p2p w
GPU0 GPU1
GPU0 X OK
GPU1 OK X
$ nvidia-smi nvlink -s
(no output; no NVLink devices or links exposed)
NCCL_DEBUG=INFO NCCL_DEBUG_SUBSYS=INIT,GRAPH,P2P,COLL summary:
- NCCL version 2.27.7+cuda13.0
- GPU path classified as PHB at 48.0 GB/s by NCCL topology
- 4 collective channels, 4 P2P channels, 2 P2P channels per peer
- 0 NVLS channels
- P2P chunksize 131072
- Check P2P Type isAllDirectP2p 1
- GPU 0 -> GPU 1 via P2P/CUMEM
- GPU 1 -> GPU 0 via P2P/CUMEM
- Connected all rings, PXN 0, GDR 1
The first benchmark allocation differed:
$ nvidia-smi topo -m
GPU0 GPU1 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X SYS 0-55,112-167 0 N/A
GPU1 SYS X 56-111,168-223 1 N/A
$ nvidia-smi nvlink -s
GPU 0: NVIDIA RTX PRO 6000 Blackwell Server Edition
Device does not have or support Nvlink
GPU 1: NVIDIA RTX PRO 6000 Blackwell Server Edition
Device does not have or support Nvlink

View file

@ -0,0 +1,12 @@
{
"name": "t2va-dialogue-quoted-1344x768-124f-base12-sdpa-seed440420",
"mode": "t2va",
"prompt": "Medium two-shot inside a quiet late-night cafe during rain. Warm practical lamps, realistic skin texture, shallow depth of field, restrained natural movement, stable faces, accurate lip sync. A tired woman in a dark green coat looks directly at the man across from her and says, \"I kept the porch light on every night.\" He pauses, meets her eyes, and says, \"I know. I just did not know how to come home.\" Soft rain against the windows, low room tone, faint ceramic cup movement, no music.",
"resolution": [
1344,
768
],
"frames": 124,
"steps": 12,
"seed": 440420
}

View file

@ -0,0 +1,12 @@
{
"name": "t2va-dialogue-quoted-1344x768-243f-base12-sdpa-seed440420",
"mode": "t2va",
"prompt": "Medium two-shot inside a quiet late-night cafe during rain. Warm practical lamps, realistic skin texture, shallow depth of field, restrained natural movement, stable faces, accurate lip sync. A tired woman in a dark green coat looks directly at the man across from her and says, \"I kept the porch light on every night.\" He pauses, meets her eyes, and says, \"I know. I just did not know how to come home.\" Soft rain against the windows, low room tone, faint ceramic cup movement, no music.",
"resolution": [
1344,
768
],
"frames": 243,
"steps": 12,
"seed": 440420
}