One squashed history of three stacked PRs, onto main atb16816671: - #426 (wai/pack-efficiency): a title's whole AV1 ladder in one package over one integer base; several floor rungs (packaging §7.1), a re-pack from a parent (§11.5), a floor that is the ladder's own CMAF (§7.7), a floor-only profile (§7.8), a streaming pack (§11.4), and the independent verifier at scale (§9.4). - #438 (wai/cross-fabric): each pack and verify step on the fabric with the least measured energy (§11.6); the `fabrics` member of measurement claims (jwp-receipts §2.4.8, energy-measurement §6.3); the wai-pack-gpu crate; `wai-pack fabric`; `wai-pack floor-decode`. - #452 (wai/gpu-int-tier), its GPU-tier part only: claiming decode-equivalence on a GPU (determinism-tiers §5), the WGSL integer semantics suite, the rules check on naga's IR, and the kernels' shift masks and min(max()) clamps. Left out, by the review's split (EN-C takes it over): #452's platform decode in dispatch, its commits6ad92e2e8,8695bc75fandfed8694f4and its CHANGELOG entry: extensions/platform-decode.md, platform-decode-conformance/, wai::platform_decode, wai-web's platform_decode bundle and demo, and its two SPEC.md sentences. #438's research note is not carried as written: it is rewritten as wai/research/cross-fabric.md, with hardware named by architecture, PCI id and OS version, and every table marked as one run. floor_decode.rs and a wai_pack.rs comment name the platform's media engine and a full-length film the same way. wai/CHANGELOG.md is the union of both sides' entries, the stack's first. Co-Authored-By: Claude Opus 5.5 <[email protected]>
34 lines
1.4 KiB
HTML
34 lines
1.4 KiB
HTML
<!doctype html>
|
|
<meta charset="utf-8">
|
|
<title>wai-ops-gpu in a browser</title>
|
|
<p id="status">running</p>
|
|
<pre id="report"></pre>
|
|
<script type="module">
|
|
// Loads every graph-vector file of ops-conformance/ (the list run.mjs serves as
|
|
// files.json), runs them through wai-ops-gpu on this browser's WebGPU, then WGSL's
|
|
// integer semantics vectors of wgsl-conformance/, and leaves the report in
|
|
// window.opsGpu for run.mjs to read.
|
|
import init, { run_corpus, run_semantics } from "./pkg/wai_ops_gpu_browser.js";
|
|
window.opsGpu = { done: false, report: "" };
|
|
try {
|
|
await init();
|
|
const files = await (await fetch("files.json")).json();
|
|
let bundle = "";
|
|
for (const f of files) {
|
|
const r = await fetch(`/ops-conformance/${f}`);
|
|
if (!r.ok) throw new Error(`${f}: ${r.status}`);
|
|
bundle += `### ${f}\n` + await r.text();
|
|
}
|
|
window.opsGpu.report = await run_corpus(bundle);
|
|
// WGSL's integer semantics: the committed vectors, held to the reference in this
|
|
// page's wasm32 and to the browser's WebGPU.
|
|
const sv = await fetch("/wgsl-conformance/integer.jsonl");
|
|
if (!sv.ok) throw new Error(`wgsl-conformance/integer.jsonl: ${sv.status}`);
|
|
window.opsGpu.report += "\n" + await run_semantics(await sv.text());
|
|
} catch (e) {
|
|
window.opsGpu.report = `browser webgpu: page error: ${e}`;
|
|
}
|
|
document.getElementById("report").textContent = window.opsGpu.report;
|
|
document.getElementById("status").textContent = "done";
|
|
window.opsGpu.done = true;
|
|
</script>
|