Same source, two machines
The same .cl program runs twice here: on your CPU in double precision and your GPU in single precision, both built from one source. They do not agree to the last bit, and you can measure exactly how far single precision drifts, live, below. That drift is the "it worked on my machine" problem, and it is why reproducible results cannot trust floating point. The fix is exact integer arithmetic, which really is bit-identical across machines. See a model that re-runs bit-for-bit →
measuring...
Both from field.cl: the CPU kernel tau_cell_step() compiled to WASM
sha256 de8da74182e0…, and the GPU shader compiled to WGSL by the Coherence compiler
sha256 322f6213fbf2… (only the stencil-gather @compute wrapper is hand-written).
WebGPU is f32-only, so the GPU is the single-precision twin of the f64 CPU kernel; the report measures the gap.