The HNSW graph from example 18, but searched by a CAGRA-style WGSL kernel: the whole beam search runs inside one compute dispatch — candidate beam, visited set, and reductions all live in workgroup shared memory, so there is no per-hop readback. One workgroup per query means queryBatch() searches every query concurrently. The honest trade: a single query pays fixed dispatch+readback latency (~ms) that the CPU walk doesn't — batches are where the GPU wins. This example measures both, plus recall. GPU-only (falls back to CPU search without WebGPU).
ready.