Recorded with an earlier version of the QR backends, before input scaling and
the per-device crossover; kept for reference. ./build/benchmark_qr
regenerates it for the current code (see ../qr.md).
GPU (Metal shader) vs CPU (MLX) on Apple Silicon.
Timing is the average of 5 runs with 2 warmup runs discarded.
Skipped cells (—) exceeded the per-config batch limit.
| Shape | batch=10 | batch=50 | batch=100 | batch=500 | batch=1000 | batch=5000 | batch=10000 | batch=15000 | |
|---|---|---|---|---|---|---|---|---|---|
| 8 × 8 | GPU | 0.49 ms | 0.59 ms | 0.64 ms | 1.63 ms | 3.17 ms | 8.40 ms | 16.54 ms | 24.64 ms |
| CPU | 1.10 ms | 1.81 ms | 4.21 ms | 29.51 ms | 47.43 ms | 194.28 ms | 392.69 ms | 592.42 ms | |
| Speedup | 2.27x | 3.10x | 6.58x | 18.09x | 14.94x | 23.13x | 23.74x | 24.04x | |
| 16 × 16 | GPU | 0.54 ms | 0.45 ms | 0.85 ms | 2.40 ms | 3.59 ms | 12.48 ms | 25.01 ms | 39.91 ms |
| CPU | 0.33 ms | 2.05 ms | 4.05 ms | 20.89 ms | 41.17 ms | 204.96 ms | 411.91 ms | 619.39 ms | |
| Speedup | 0.61x | 4.53x | 4.77x | 8.70x | 11.47x | 16.42x | 16.47x | 15.52x | |
| 32 × 32 | GPU | 0.74 ms | 0.90 ms | 1.47 ms | 4.45 ms | 7.39 ms | 33.84 ms | 71.03 ms | 107.61 ms |
| CPU | 0.47 ms | 2.32 ms | 4.72 ms | 23.73 ms | 46.94 ms | 233.64 ms | 468.85 ms | 727.55 ms | |
| Speedup | 0.64x | 2.57x | 3.22x | 5.34x | 6.36x | 6.90x | 6.60x | 6.76x | |
| 64 × 64 | GPU | 1.01 ms | 2.21 ms | 3.56 ms | 14.19 ms | 27.47 ms | 135.44 ms | 284.26 ms | 411.40 ms |
| CPU | 1.00 ms | 4.81 ms | 9.52 ms | 47.38 ms | 93.89 ms | 469.27 ms | 940.34 ms | 1413.26 ms | |
| Speedup | 0.99x | 2.18x | 2.68x | 3.34x | 3.42x | 3.46x | 3.31x | 3.44x | |
| 128 × 64 | GPU | 1.85 ms | 2.39 ms | 6.04 ms | 20.12 ms | 41.24 ms | 207.19 ms | 409.29 ms | 579.60 ms |
| CPU | 1.60 ms | 6.70 ms | 13.21 ms | 66.34 ms | 132.21 ms | 665.30 ms | 1326.68 ms | 2035.80 ms | |
| Speedup | 0.87x | 2.81x | 2.19x | 3.30x | 3.21x | 3.21x | 3.24x | 3.51x | |
| 256 × 128 | GPU | 4.46 ms | 11.27 ms | 22.12 ms | 97.19 ms | 209.31 ms | — | — | — |
| CPU | 6.12 ms | 30.15 ms | 65.47 ms | 325.97 ms | 596.31 ms | — | — | — | |
| Speedup | 1.37x | 2.68x | 2.96x | 3.35x | 2.85x | — | — | — | |
| 512 × 256 | GPU | 13.53 ms | 59.71 ms | 112.91 ms | 519.76 ms | — | — | — | — |
| CPU | 24.12 ms | 119.07 ms | 237.59 ms | 1196.59 ms | — | — | — | — | |
| Speedup | 1.78x | 1.99x | 2.10x | 2.30x | — | — | — | — |
| Shape | batch=1 | batch=8 | batch=16 | batch=32 | |
|---|---|---|---|---|---|
| 512 × 512 | GPU | 12.07 ms | 24.07 ms | 35.50 ms | 69.65 ms |
| CPU | 7.00 ms | 43.75 ms | 85.92 ms | 174.61 ms | |
| Speedup | 0.58x | 1.82x | 2.42x | 2.51x | |
| 1024 × 512 | GPU | 17.93 ms | 53.30 ms | 92.24 ms | — |
| CPU | 12.95 ms | 98.48 ms | 196.12 ms | — | |
| Speedup | 0.72x | 1.85x | 2.13x | — | |
| 5000 × 5000 | GPU | 1213.09 ms | 7494.11 ms | — | — |
| CPU | 1970.29 ms | 15769.81 ms | — | — | |
| Speedup | 1.62x | 2.10x | — | — |