Benchmark

How the benchmark works

Phases

Verify3 s
Peak matmul8 s
Read3 s
Write3 s
Copy3 s
Sustain40 s

Before the run, the server issues a challenge: a nonce, the time, and an HMAC over both and your address. Everything after depends on it.

Kernels

Matmul. A tiled fp32 matrix multiply in WGSL. Each 16 × 16 workgroup computes a 64 × 64 block of C; A and B tiles of 64 × 16 go through workgroup memory and every thread keeps a 4 × 4 accumulator in registers with fma. The peak phase runs 2048 × 2048 for 8 seconds and keeps the best one-second window. TFLOPS = 2 × N³ × dispatches ÷ seconds. Batches are sized to about 120 ms so the page stays responsive.

Memory. Three kernels stream 64 MiB storage buffers as vec4<f32>: read (a running sum), write, and copy (counted as read plus write). Three seconds each, GB/s over the whole phase.

Sustain. The same matmul for 40 seconds, sampled once a second. The sustained value is the mean of the last ten samples, so a GPU that throttles under heat scores what it holds, and the result shows it as a percent of peak.

Score

score = round(100 x sustained_tflops + copy_GBs / 2)

A GPU that sustains 8 TFLOPS with 400 GB/s of copy bandwidth scores 1,000, which is Bin 2.

Server checks

Accepted runs are signed by the HyperWafer ed25519 key over sha256(canon({runId, address, score, bin, runSig, acceptedAt})).

Fallback

Without WebGPU the test page says so and leaves the start button off. The leaderboard and the terminal work in any browser, and an address without a run trades at 0.05%.