abgunaydin/webgpu-compute-benchmarks
WebGPU compute benchmarks across browsers and GPU vendors Every run submitted to gpubench.dev between 2026-03-30 and 2026-08-14, exported from the live table. WebGPU compute-shader throughput measured in real browsers on whatever hardware visitors happened to have. This exists because two preprints cite cross-vendor results from this table and the table is live and mutable, so those claims could not be checked by a reader. This snapshot is the checkable version.… See the full description on the dataset page: https://huggingface.co/datasets/abgunaydin/webgpu-compute-benchmarks.
WebGPU compute benchmarks across browsers and GPU vendors
Every run submitted to gpubench.dev between 2026-03-30 and 2026-08-14, exported from the live table. WebGPU compute-shader throughput measured in real browsers on whatever hardware visitors happened to have.
This exists because two preprints cite cross-vendor results from this table and the table is live and mutable, so those claims could not be checked by a reader. This snapshot is the checkable version.
Files
Coverage
How many devices
There is no device identifier in this table, so "unique devices" depends on how you define it. Three defensible answers:
Pick the one that suits the question and say which. Earlier material from this project published 592 and 92; neither corresponds to any of these, and both should be disregarded.
Caveats that matter
`max_buffer` is not a device capability. It holds 268435456 for all 794 rows, which is WebGPU's default maxBufferSize. The benchmark page never requested raised limits, so the column records what was asked for rather than what the adapter could offer.
`gpu_name` is adapter-reported and coarse. Chrome masks device strings, so values are architecture-level (apple metal-3, nvidia lovelace) and 101 rows report Unknown GPU. One value is a raw vendor id (0x2bb1).
No deduplication. A visitor who ran the benchmark repeatedly contributes several rows. There is nothing here to identify or group them, by design.
Uncontrolled conditions. Thermal state, competing load, browser version, and power mode are unknown per row. Treat cross-vendor comparisons as indicative, not as controlled measurements.
`score` is a composite of the workload throughputs, useful for ranking within this dataset and not comparable to any other benchmark.
Schema
benchmark_runs carries 59 columns: identity (id, created_at), device (gpu_name, gpu_vendor, gpu_arch, backend, os, browser, is_mobile, screen size, device_pixel_ratio), limits (max_buffer, features, max_workgroup_x/y/z, max_invocations), and per-workload throughput in generations per second with mean/min/max/std where the harness recorded repeats. bench_version distinguishes harness revisions; *_batched_gps columns appear only in later runs.
transformer_runs carries 23: the same device fields plus config, layers, d_model, dispatches, timings (unfused_ms, fused_1t_ms, parallel_ms, unfused_batched_ms), derived speedups, tokens_per_sec, and equiv_max_diff — the numerical difference between fused and unfused output, which is the correctness check on the fusion.
Privacy
No identifiers of any kind. id is a random UUIDv4 per submission. No IP addresses, accounts, or user-supplied text are collected. Device strings come from the WebGPU adapter and the user-agent, both already exposed to any page.
Source
Collected by gpubench.dev (source). Related work: zerotvm.com and kernelfusion.dev.
