wai-quantum 0.6.1: the CUDA tensor-core kernel and the Metal member #275
Merged
dcharlot
merged 3 commits from 2026-10-16 09:45:04 -04:00
wai/quantum-tensor-cores into main 2026-10-16
Merge remote-tracking branch 'origin/main' into wai/quantum-metal
All checks were successful
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 30s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 2m49s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 1m35s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m34s
wai-pack / wai-pack · linux (pull_request) Successful in 1m24s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 12m29s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 23s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 3m46s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 4m53s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 19s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 21s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 18s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 24s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 24s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 18s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 7m58s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 26s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 21s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 25s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 10s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 11s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 13m33s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m10s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m5s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m15s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m19s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m54s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m42s
# Conflicts: # wai/CHANGELOG.md
wai-quantum: the Metal member, with a SIMD-group matrix kernel
All checks were successful
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 19s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 7m42s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 20s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 41s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 9m12s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 34s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 1m34s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 17s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 27s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 13s
wai-pack / wai-pack · macos (pull_request) Successful in 1m5s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 10s
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 13s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 14m50s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 12s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 1m8s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 21s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m20s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m27s
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Successful in 20m9s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m20s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 5m40s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 20s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 9s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 12s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m35s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m24s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m38s
quantum_fabric_metal (opt-in, macOS): the gate on the platform's GPU through its own interface, kernels compiled at run time by the operating system's compiler, the state in a buffer the GPU and the host share, one serial dispatch per gate in one command buffer. - lanes64.metal (metal-lanes64/...): the CUDA kernel's exact 64-bit integer arithmetic in the Metal shading language. - matrix_limbs.metal (metal-matrix-limbs8/..., MetalMember::matrix): every product formed by the SIMD-group matrix multiply from 8-bit limbs in bf16 accumulated in f32; one SIMD group takes eight pairs in fourteen 8x8 column blocks, each thread joins four products and forms one row. GPU family 1007 or later, else MetalError::Unsupported. Keyed by GPU family number (gpu-msl-<family>). Off macOS the member builds, finds nothing and says why (uninhabited platform types). Measured on the M3 Ultra runner's GPU (family 1009): metal_member and metal_matrix 9/9 each, 66020 probe pairs, all four pinned certificates, 22 qubits, 6 of 6 and 7 of 7 mutants (nine-bit limbs break 297 of 484 edge pairs). On Linux both suites pass over no device. CI: wai-quantum-metal (macos and linux legs). Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum 0.6.1: the CUDA member's tensor-core kernel
Some checks failed
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / does this change touch it (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum CPU vector units / does this change touch it (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
A second CUDA kernel for the same gate (tensor_limbs.cu), for devices of compute capability 8.0 or later, whose every product is formed on the tensor cores: each 32-bit value as four 8-bit limbs in bf16, one warp multiplying sixteen pairs' limbs by the gate's limb weights in fourteen m16n8k16 steps, accumulated in f32. Every coefficient is an integer below 2^18, so f32 holds every partial sum exactly in any order; the kernel adds the coefficients, shifted into place, in 64-bit integers and does the rest of the gate as lanes64.cu does. CudaMember::tensor gives the same device under the kernel's own implementation id (cuda-tensor-limbs8/...), probed before it is returned; a device below 8.0 is CudaError::Unsupported. Seven mutants, one of them nine-bit limbs, which bf16 does not hold. Measured on the discrete GPU (sm_89): tests/cuda_tensor.rs 9/9, 66020 probe pairs, all four pinned certificates, circuits to 22 qubits, 7 of 7 mutants; cuda_member 9/9 and cuda_sv 3/3 unchanged. With no CUDA, both suites pass over no device. CI: a step of wai-quantum-cuda and the absent leg. Co-Authored-By: Claude Opus 5.5 <[email protected]>