WebGPU FSS — the neighborhood score on the GPU

Fractions Skill Score computed by a WebGPU compute shader · checked against the CPU reference · MET-AL

The Fractions Skill Score is the one MET operator with no cheap closed form over partial sums — it needs a sliding window over the whole grid. That makes it the natural GPU target. This page runs FSS three ways — the trusted integral-image CPU reference and two WebGPU compute shaders (a naive per-cell kernel and an O(cells) separable one) — proves all three agree, then races them across grid size and neighborhood radius.

1 · Compute device

WebGPU adapter in this browser (the shader runs here; if there's none, everything falls back to CPU).

checking…

2 · Parity — GPU vs the integral-image reference

Real AIGFS-vs-URMA case (8,051 cells). Same threshold and neighborhood fed to both paths; the scored-center count n must match exactly, the scores to floating-point tolerance.

side 5×5

3 · Benchmark — CPU integral image vs GPU shader

Warm median wall-clock across grid sizes, from the real case (8k cells) to 2048² (4.2 M cells), at the neighborhood set above. GPU time includes input upload + dispatch + readback (an honest end-to-end).

4 · The r-sweep — where algorithm beats brute force

Fixed 1024² grid, growing the neighborhood r. The naive kernel is O(cells·(2r+1)²) so it climbs steeply; the CPU integral image and the GPU separable kernel are O(cells) and stay flat. Watch the naive kernel fall behind even the CPU at large r while the separable kernel holds its lead.

5 · The neighborhood, made visible

Real case, at the threshold and r set in section 2 (move the slider to resmooth). Left of each pair: the raw binary exceedance (does this cell cross the threshold?). Right: the neighborhood fraction the FSS actually compares — each cell replaced by the share of exceedances within r cells. FSS rewards forecasts whose fraction fields agree even when the binary fields don't line up point-for-point; the last panel is the per-cell |Pf − Po| that the score integrates.

MET-AL · WebGPU FSS prototype — two GPU kernels (naive + separable), checked against the integral-image CPU reference. Data is a de-identified real case. Verified live on this machine's GPU.