open-standards/wai/research/determinism-cost/runs/README.md
Transaction Science 61759c51b5 wai: the int_hyper decode on the narrow kernel sets, measured; determinism-tiers §7 quotes it
research/determinism-cost.md §4.6, in the same record and by the same
procedure: the 192 payloads decoded again on every platform with every
kernel set it runs (15 new runs, 0 decodes differing from the record's),
and the record's time and energy runs repeated in one session per host
beside the record's own build and the float decoder. On x86_64 host A the
integer decode on the narrow kernels took 144.8 ms and 12.43 J of marginal
package energy at quality 6 against 210.7 ms and 14.03 J for the float
decode beside it (the record's build: 728.0 ms, 92.14 J). On the build
host its own CPU energy fell from 11.01 J to 6.43 J at quality 6 and is
still above the float decode's 1.28 J by that count. Host B's integer
decode was measured before and after, without a float decode beside it.
The scripts that took the readings are in runs/; decode-throughput.md
notes the new sets; the changelog records the change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 04:06:15 -04:00

45 lines
3.4 KiB
Markdown

# The scripts that took the record's readings
Each ran on one host, from a checkout of the change that added the record (the build host
through the repository's remote-build wrapper, which sets `RB_ROOT` and runs in the
checkout; the two Linux hosts from a copy of `wai/` in `~/wai-build/det1/src` or
`~/det1/src`). The work directory they read and write is the one
`tools/wai_determinism_cost.py` lays out; its `sets/`, `int/`, `float/`, `src/`,
`pictures.json` and `models.json` were made once, on the build host, and copied to the
other two.
| script | host | what it ran |
|---|---|---|
| `macos-build.sh` | build host | the integer decoder for the CPU, for the GPU (`ops_gpu`) and for wasm32-wasip2 |
| `macos-decodes.sh` | build host | `cpu`, `gpu`, `wasm`: the integer decodes; `float`: the float decodes |
| `macos-energy.sh` | build host | the timed runs, with the per-task count and the GPU rail |
| `linux-a-decodes.sh` | x86_64 host A | `int`, `float`: the decodes on its CPU and its integrated GPU |
| `linux-a-energy.sh` | x86_64 host A | the timed runs, with the package counter |
| `linux-a-wasm.sh` | x86_64 host A | the build host's wasm32-wasip2 decoder under wasmtime on x86_64 |
| `linux-b-decodes.sh` | x86_64 host B | `int`, `float`: the decodes on its CPU and its discrete GPU |
| `macos-narrow-build.sh` | build host | §4.6: the integer decoder of the narrow kernel sets, for the CPU, the GPU and wasm32-wasip2 |
| `macos-narrow-decodes.sh` | build host | §4.6: its decodes with each kernel set (`neon`, `neon1` on one core, `wide`), on the GPU and as wasm32-wasip2 |
| `macos-narrow-energy.sh` | build host | §4.6: the timed runs, `-before`, `-after` and `-again`, with the per-task count |
| `linux-a-narrow-jobs.sh` | x86_64 host A | §4.6: the job lists of that host's work directory |
| `linux-a-narrow-build.sh` | x86_64 host A | §4.6: the integer decoder for the CPU and the GPU |
| `linux-a-narrow-decodes.sh` | x86_64 host A | §4.6: its decodes with each kernel set, on the GPU, and the build host's wasm32-wasip2 file |
| `linux-a-narrow-energy.sh` | x86_64 host A | §4.6: the timed runs, with the package counter |
| `linux-b-narrow-decodes.sh` | x86_64 host B | §4.6: the build, then the decodes with each kernel set |
| `linux-b-narrow-energy.sh` | x86_64 host B | §4.6: the timed runs of the integer decode, with the package counter |
The record names each platform by the tag its script wrote: `macos-arm64-…` for the build
host, `wasm32-wasip2` for the WebAssembly build there (`wasm32-wasip2-x86_64` for the same
`.wasm` on host A), `linux-x86_64-…` for host A and
`linux-x86_64-b-…` for host B.
On the build host the `float` and `wasm` steps ran detached, under the host's memory
guard, beside the other steps: the float decodes from a copy of the checkout's
`tools/wai_determinism_cost.py` and the export tool it imports, the same bytes.
The §4.6 scripts ran from a checkout of the change that added the narrow kernel sets, in the
same way: the build host through the remote-build wrapper, in `$RB_ROOT/idf`, reading the
record's work directory there; the Linux hosts in `~/wai-build/idf` and `~/idf`, from a copy
of `wai/` and of the work directory's `sets/`, `int/`, `float/` and `pictures.json`. Each
host's `bin/base` (on the build host, the record's own `det1/bin/wai_det_cost.native`) is
the record's commit built the same way, which the `-before` runs time. The tags of §4.6 end
in `-isa-<kernel set>`.