Skip to content

Benchmarks

SDXL benchmarks. Images per dollar.

SDXL base at 1024 x 1024 on four rented GPUs, eager and compiled, batch 1 and 4: seconds per image and what 1,000 images cost.

Measured

$0.91per 1,000 images

RTX A6000, compiled, batch 1, at the run-day price.

Run 2026-10-27, single runSee the table

Run 2026-10-27

SDXL images per dollar on four GPUs. Eager vs torch.compile, batch 1 and 4.

At run-day prices an RTX A6000 made 1,000 images for $0.91, an RTX 5090 for $0.93, an L40S for $1.01 and an H100 for $1.80. The H100 took 1.67 s per image against 4.94 s on the RTX A6000.

Single run: one run per GPU, 8 to 16 timed images per configuration. First published 2026-10-27.

The full write-up, with every command

Hardware

GPUs
RTX A6000 48 GB, L40S 48 GB, RTX 5090 32 GB and H100 PCIe 80 GB, one per machine

Software

Model
stabilityai/stable-diffusion-xl-base-1.0, fp16 weights, with the madebyollin/sdxl-vae-fp16-fix VAE; base model only, no refiner
Libraries
diffusers 0.42.1, Python 3.12, PyTorch's built-in SDPA attention

Method

Image
1024 x 1024, 30 steps, the default scheduler and guidance, one fixed prompt
Configurations
Batch 1 and batch 4, eager and torch.compile(pipe.unet, fullgraph=True) with channels-last; one warm-up generation, then 8 images timed at batch 1 and 16 at batch 4

Price per hour

  • RTX A6000$0.66 on 2026-10-27, from $0.57/hr per GPU today
  • L40S$1.14 on 2026-10-27, from $0.54/hr per GPU on a 2-GPU machine today
  • RTX 5090$1.33 on 2026-10-27, from $0.84/hr per GPU today
  • H100$3.88 on 2026-10-27, from $3.87/hr per GPU on a 4-GPU machine today
Seconds per image at batch 1, eager and compiledEagerCompiled
Measured on 2026-10-27, from the table below.
Seconds per image, images per hour and cost per 1,000 images, GPU kept busy
GPUConfigSeconds per imageImages per hour$ per 1,000, run dayPeak VRAM$ per 1,000, today
RTX A6000eager, batch 15.796221.069.0 GB0.92
RTX A6000eager, batch 45.656371.0414.6 GB0.90
RTX A6000compiled, batch 14.947280.919.0 GB0.79
RTX A6000compiled, batch 45.137010.9414.6 GB0.81
L40Seager, batch 13.481,0341.109.0 GB0.52
L40Seager, batch 43.391,0641.0714.6 GB0.51
L40Scompiled, batch 13.211,1211.029.0 GB0.48
L40Scompiled, batch 43.191,1301.0114.6 GB0.48
RTX 5090eager, batch 12.771,3011.029.0 GB0.64
RTX 5090eager, batch 42.661,3550.9814.6 GB0.62
RTX 5090compiled, batch 12.531,4240.939.0 GB0.59
RTX 5090compiled, batch 42.531,4210.9414.6 GB0.59
H100eager, batch 12.251,6032.429.0 GB2.41
H100eager, batch 41.941,8532.0914.6 GB2.08
H100compiled, batch 11.802,0031.949.0 GB1.94
H100compiled, batch 41.672,1561.8014.6 GB1.80

Run day: the price on 2026-10-27, as the run paid it.

Today: the run-day figure times today's price per GPU-hour over the run-day price per GPU-hour. Today's price is the "from" price per GPU-hour shown on /pricing, which can be on a machine with more GPUs than the run used (the list of GPUs below names it). Prices read 2026-11-04 04:00 UTC.

What torch.compile costs up front (the first compiled call) and when it pays back at batch 1
GPUCompile, batch 1Compile, batch 4Saved per image (batch 1)Break-even
RTX A6000188 s255 s0.85 sabout 220 images
L40S82 s121 s0.27 sabout 300 images
RTX 509096 s133 s0.24 sabout 400 images
H10094 s130 s0.45 sabout 210 images

Batch 4 recompiles (new input shape), so a server that mixes batch sizes pays both.

Setup on each machine, before the first image
GPULaunch to SSHdiffusers installModel download (about 7 GB)Pipeline load
RTX A6000288 s29 s73 s3.9 s
L40S190 sunder 1 s24 s2.0 s
RTX 5090122 s15 s25 s2.8 s
H100307 s7 s27 s2.5 s

What stood out

  • Batch 4 changed throughput by -4% to +4% on the RTX A6000, L40S and RTX 5090. Only the H100 gained (16% eager, 8% compiled).
  • Peak memory was 9.0 GB at batch 1 and 14.6 GB at batch 4, so SDXL base fits on any of these cards with room to spare.
  • The model download varied 3x between machines (24 s to 73 s for the same 7 GB). For short jobs, keep the weights on a volume.

Keep in mind

  • One prompt, one resolution, one scheduler, 30 steps. Fewer steps, a distilled model or another scheduler change the absolute numbers.
  • No refiner, no ControlNet, no LoRA, no attention kernels beyond PyTorch's built-in SDPA, no TensorRT.
  • Treat differences under about 5% as noise.

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.

  • RTX A6000from $0.57/hr per GPU
  • L40Sfrom $0.54/hr per GPU on a 2-GPU machine
  • RTX 5090from $0.84/hr per GPU
  • H100from $3.87/hr per GPU on a 4-GPU machine

Benchmarks

More benchmarks.