torch.compile on a hardware GPU, natively

Graph protocol versions 3 and 4 add masks, dropout, slicing and gathers bit for bit on five backends, and zipp py runs the same graphs on Vulkan, Direct3D 12 or Metal through wgpu.

84ccf248 added protocol version 3: maximum, minimum, comparisons as masks, where, and a uniform draw computed as a counter hash in 32-bit integers so every backend draws the same bits, which gave torch.compile clamping, masking and dropout. ANGLE on Direct3D 11 lost a tied zero's sign in x < y ? y : x, so the shaders decide ties first. eb81d583 added version 4, slicing, index_select, gather and their gradients, with the protocol fixing the accumulation order so a repeated token's embedding gradient is the same bits everywhere. All five backends agree bit for bit: 276 of 276 cases on WebGPU, WebGL2, WebAssembly and JavaScript, and the references.

7e2434e5 runs those graphs natively. A new crate, zipp-gpu, runs gpu-lab's JavaScript runtime unchanged in a second, trusted Zipp state over a WebGPU shim backed by wgpu, loaded at run time, so no SDK is needed to build and the binary runs anywhere. It is synchronous like the CPU evaluator, so a program's output does not depend on whether a GPU is present. For a 784-2048-2048-10 Adam step at batch 1024 on an RTX 5090, a prepared step took 23.6 ms, against about 25 minutes per call on the CPU evaluator.