ci: wai-quantum's byte-pinning tests on nine more instruction sets #248
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/quantum-processors-ci"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
A workflow,
wai-quantum on every processor, that runs wai-quantum's byte-pinning tests on nine instruction sets no runner has:The suites:
bit_identity: 23 digests across every numeric layer, taken natively and confirmed under wasip2.frame_reference: the noisy-Clifford fixtures written by an independent tool.These are emulator results. They prove what each target's binary computes under QEMU, not what that silicon does. The summary line of each leg says which it is.
How it runs
Each leg runs on the container runner, and its job container is that target's cross image: linker, sysroot and QEMU, with the runner preset in its environment. Every image is pinned by digest.
rust-toolchain.toml) into the runner's persistent cache, then runscargo testdirectly with a target directory of its own there. A build script compiled in one image fails in another with an older glibc, hence one directory per target.The first version of this PR ran
crosson the hardware runner. That runner's jobs run as a user without Docker, by design, socrosscould not start its containers. Granting Docker there would give its jobs root on the host, so the legs moved to the container runner instead. s390x, armv7, i686 and loongarch64 passed in this form by hand before the push.armv7: an emulator limit, found and bounded
With all 20 host CPUs,
dense_state_vectorwas killed by the container's memory limit. The kernel's record showsqemu-armat 6.2 GB resident. A 32-bit guest can address at most 4 GiB, so the excess is the emulator's own memory.QEMU 5.1's 32-bit ARM guest grows that memory with the guest's thread count. The test spawns scoped threads per gate, one per CPU. The same QEMU version runs the aarch64 guest with 20 threads without growth.
Pinned to four CPUs, the container peaked under 1 GiB and all 23 digests passed. Four threads still take the threaded paths.
loongarch64
cross 0.2.5 has no LoongArch image. That leg uses cross's development image, pinned by digest, which carries the linker and
qemu-loongarch64.🤖 Generated with Claude Code