Benchmarks
A100 vs H100 vs H200. One script, six GPUs.
The same benchmark script on six rented GPUs in one night: dense matmul, memory copy, nanoGPT, a LoRA fine-tune and SDXL, with what each run cost.
Measured
718.46bf16 TFLOPS
H200, dense bf16 matmul at 8192.
Run 2026-10-25
One script on six GPUs. Six GPUs, one night.
Dense bf16 matmul at 8192 ran at 718.46 TFLOPS on the H200, 537.94 on the H100 and 251.44 on the A100 80GB. The same 120-step LoRA run trained in 40.2 s on the H200, 55.55 s on the H100 and 78.11 s on the A100 80GB.
Hardware
- One Runcrate job per GPU type, template ubuntu-train, max runtime 30 min (40 min on the RTX A4000), four benchmarks in order, each in its own subprocess
Software
- torch 2.8.0+cu128, CUDA 12.8 on all six machines
- Python 3.10
Method
- Square matmuls of 4096 and 8192 per data type, 3 warm-up calls, then 20 (4096) or 10 (8192) timed with CUDA events
- A 512 MB device-to-device copy, read plus write
- karpathy/nanoGPT train_shakespeare_char, --max_iters=2000 --eval_interval=250 --eval_iters=100, torch.compile off
- Qwen/Qwen2.5-1.5B-Instruct in bf16, LoRA r=16 on all linear layers, gradient checkpointing, micro-batch 4 x 512 tokens, 2 accumulation steps (4,096 tokens per step), 120 steps
- SDXL base 1.0, fp16, 1024x1024, 30 steps, fixed seeds; one warm-up image, 8 single images, then 2 batches of 4 on cards with at least 24 GB
| GPU | bf16, 4096 | bf16, 8192 | fp16, 8192 | tf32, 8192 | fp32, 8192 | Memory copy (GB/s) |
|---|---|---|---|---|---|---|
| H200 | 722.67 | 718.46 | 680.89 | 371.62 | 46.43 | 4060.5 |
| H100 | 501.41 | 537.94 | 498.23 | 257.38 | 38.76 | 1822.9 |
| A100 80GB | 259.56 | 251.44 | 274.75 | 106.53 | 18.96 | 1717.6 |
| L40S | 271.37 | 215.08 | 227.48 | 96.85 | 41.73 | 651.6 |
| RTX A6000 | 128.41 | 112.82 | 108.02 | 59.45 | 24.13 | 682.6 |
| RTX A4000 | 72.58 | 59.6 | 61.32 | 31.37 | 12.24 | 391.0 |
| GPU | ms per iteration (median) | 2,000 iterations (s) | Final val loss | $ compute cost, run day | $ compute cost, today |
|---|---|---|---|---|---|
| H200 | 5.62 | 16.2 | 1.4572 | 0.02083 | 0.02083 |
| H100 | 8.23 | 23.8 | 1.4584 | 0.02347 | 0.02559 |
| A100 80GB | 11.97 | 34.4 | 1.4604 | 0.01653 | 0.01653 |
| L40S | 14.46 | 38.5 | 1.4562 | 0.01219 | 0.00577 |
| RTX A6000 | 23.96 | 67.3 | 1.4571 | 0.01383 | 0.01065 |
| RTX A4000 | 43.79 | 114.3 | 1.4648 | 0.03302 | 0.03302 |
| GPU | Tokens/s | Train (s) | Peak memory (GiB) | Eval loss before | Eval loss after | $ compute cost, run day | $ compute cost, today |
|---|---|---|---|---|---|---|---|
| H200 | 12950 | 40.2 | 6.87 | 1.9746 | 1.3259 | 0.0517 | 0.0517 |
| H100 | 9215 | 55.55 | 6.87 | 1.9746 | 1.3175 | 0.05478 | 0.05972 |
| A100 80GB | 6552 | 78.11 | 6.82 | 1.9744 | 1.3351 | 0.03754 | 0.03754 |
| L40S | 5977 | 85.26 | 6.82 | 1.9741 | 1.3181 | 0.027 | 0.013 |
| RTX A6000 | 3340 | 151.5 | 6.82 | 1.9746 | 1.3384 | 0.03114 | 0.02399 |
| RTX A4000 | 2050 | 240.82 | 6.82 | 1.9749 | 1.3256 | 0.06957 | 0.06957 |
What stood out
- Device memory copy reached 4060.5 GB/s on the H200, against 1822.9 on the H100 and 1717.6 on the A100 80GB.
- SDXL took 1.697 s per image, one image at a time, on the H200, 2.344 s on the H100 and 3.628 s on the A100 80GB.
- Every card reached a nanoGPT validation loss between 1.4562 and 1.4648 after 2,000 iterations: the same training, at different speeds.
Keep in mind
- One job per GPU type, on one night. Treat it as a sample.
- The cards are not all the same form factor: the H100 and A100 80GB were PCIe cards and the H200 an NVL card, each machine with its own driver (first table).
- Compute cost is measured seconds times the job's hourly rate, not the billed total of the job.
Costs
How the costs are worked out. Run day and today, side by side.
Run day
The cost the write-up printed: the hourly price the machine was launched at that day, against what it measured. Prices move daily, so each run-day figure carries its date. Every run was a single run.
Today
The run-day figure moved by today's price: the "from" price per GPU-hour shown on /pricing, over the run-day rate per GPU-hour. A GPU that is not in stock right now reads "Not in stock" rather than a stale price. Prices read 2026-11-04 04:00 UTC.
GPUs
The GPUs on this page. From price per GPU-hour, today.
Benchmarks