Blog
Notes from building LeonSim
Engineering write-ups: what we measured, what broke, and what the numbers can and cannot tell you.

From 321 s to 37 s: a whole F1 CFD job on the GPU
The solver was already on the GPU. Most of the job's time was not. We profiled an F1 run on six NVIDIA GPUs, moved post-processing, geometry and rendering onto the device, and got 8.7× on an H100.

Tracing NumPy into WGSL: CAD geometry on the GPU
LeonSim’s car geometry is plain NumPy. Instead of porting it to a shader language, we run it once on tracer objects that record every operation and emit a WGSL kernel. Grid set-up went from 53 s to 2 s.

A race only the Radeon could see
Identical CFD runs on an AMD integrated GPU gave slightly different forces. The cause was a Gauss-Seidel loop inside one workgroup, and a barrier that did not mean what we thought on this hardware.

How certain is one CFD run?
We reran the 2026 concept car for 2000 iterations instead of 1000. Drag held still; downforce kept falling. What that means for the numbers we publish, and how to read a single steady RANS run of an F1 car.