igneum/bench
igneum-labs a88cee9241 Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed
bench/: repro.sh (Linux, macOS) and repro.ps1 (Windows) print the machine, check the genesis pack's lottery hash vectors on
the CPU and every GPU, hash for 120 s per card at 1 GiB, probe random reads at 4, 64, 256 and 1024 MiB, sweep the same
sizes, prove and verify one fixture shard when a 12 GB NVIDIA card and a prover host exist, and write one JSON result (the
bench table's row shape, every command, every binary's sha256, the tolerances) plus a table. make-package.sh builds
igneum-repro-<tag>.tar.gz and .zip from the existing cross-build scripts; ingest.mjs checks a result against
bench/reference.json and adds "reproduced externally" rows to site/miner-bench.json only when every number agrees;
publish-public.sh --repro publishes next to the downloads (not deployed). The workers gained --list, --bench --pack
--seconds --dataset-mib and --memprobe (CUDA from the readwidth branch, OpenCL memprobe from opencl-rdna4, Metal new) with
RESULT and DEVICE lines; igneum-pow gained check-pack; the pack reader accepts a string-seed pack.

Runs (docs/benchmarks/repro.md, the bench-log entry, evidence rows 4, 5, 15): the Mac under the measure lock (Metal
27.674 MH/s, Apple OpenCL 26.875, 96/96 on CPU, Metal and OpenCL, 2^24 fingerprint 25f96e7dce90bd4e, 3.40 G random
reads/s, CPU verify 0.611 ms per warp); PC 2 (96/96 through NVRTC, NVIDIA OpenCL and AMD OpenCL with the same
fingerprint; gfx1036 3.312 MH/s; the 5090 rows beside the app's live miner, 62.4 MH/s, not the card's; the live host
proved and verified the shard through step 6, compressed 33.9 s). PC 1 went down before its slot; owed.

Classes closed: the PC job parses the package script before touching a card and bench/ is in the Windows 5.1 parse job;
the card-off is confirmed by nvidia-smi's compute-apps list and the prover's state read from settings.json, never
api/state; PowerShell case-only variable pairs fail CI (bench/jobs/ps-case-check.sh); the package builder keeps the Mac
workers outside the stage and checks every binary with file -b.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 01:16:24 +00:00
..
jobs Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00
ingest.mjs Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00
make-package.sh Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00
README.md Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00
reference.json Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00
repro.ps1 Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00
repro.sh Reproducible benchmark package: one command per platform (bench/repro.sh, repro.ps1), run on the Mac and PC 2; PC 1 owed 2026-10-06 01:16:24 +00:00

Igneum reproducible benchmark

One command reproduces the numbers on the Igneum bench table on your own machine, on day one, with no secrets, no node, no wallet and no network connection. The result is one JSON file you can send back, signed by nothing, that names every command run and the sha256 of every binary used.

Run it

Platform Command
Linux (x86_64, NVIDIA driver or any OpenCL driver) tar xzf igneum-repro-<tag>.tar.gz && cd igneum-repro-<tag> && ./repro.sh
macOS (Apple silicon) the same tar.gz; ./repro.sh
Windows 10 or 11 (x64) unzip igneum-repro-<tag>.zip, then in PowerShell: powershell -ExecutionPolicy Bypass -File repro.ps1

Options: --seconds 120 (per card, the default), --only cuda:0,opencl:1 (one card; the indexes are the ones --list prints at the start), --no-probe, --no-sweep, --no-prove, --out <dir>. On Windows the same as -Seconds, -Only, -NoProbe, -NoSweep, -NoProve, -Out.

Stop mining on the card first. A number taken while a miner, a game or another benchmark holds the card is not a number; the result file does not know, so you do.

Time: about 4 minutes per card (120 s hash benchmark, three short sweep sizes, the probe table), plus the CPU check (one second). The optional proving step takes about a minute on an RTX 5090 class card and needs a prover host you built (below).

What runs, in order

Step What What it needs What it reports
1 The machine nothing OS, CPU, memory, every GPU each worker sees (name, driver, memory)
2 The lottery hash vectors of the published genesis pack (packs/igneum-genesis-mh: seed igneum-genesis, day 2026-10-03, generator 2, memory-hard 1 GiB dataset, program id bcc1248b10cc90f2) a CPU; every GPU present bit-exact or not: 3 warps, 96 lanes, the cache FNV, on the CPU through the Rust interpreter and on every GPU through its own compiler (NVRTC, the OpenCL driver, Metal)
3 The hash benchmark, 120 s per card at 1 GiB a GPU with 1.3 GB free MH/s, the hashes done, and the fingerprint of the first 2^24 outputs (equal fingerprints on two machines mean every one of those 16.7 million hashes agreed)
4 The random-read probe at 4, 64, 256 and 1024 MiB a GPU dependent random 4-byte reads per second (the hash's access pattern) and their latency, eight independent chains, 64-byte lines, the coalesced stream bandwidth, an integer chain
5 The chip-resistance sweep: the same program at 4, 64, 256 and 1024 MiB a GPU MH/s per size; the ratio in-cache to 1 GiB; the hash's share of the card's random-read ceiling (MH/s x 128 loads against step 4's chase at 1 GiB)
6 One fixture shard proven with the pinned guest and verified (optional) an NVIDIA card with 12 GB or more, Linux or WSL2, a built igneum-prove-host (IGNEUM_PROVE_HOST) execute, core and compressed proof times, the verify time, VERIFIED or not; otherwise the line says why it was skipped
7 The result nothing results/igneum-repro-<os>-<time>.json and .md, plus the full log

The CUDA worker needs only the NVIDIA driver on Windows (the runtime compiler ships in the package) and the driver plus libnvrtc.so.12 on Linux (from the CUDA toolkit or NVIDIA's nvrtc redistributable). The OpenCL worker needs the GPU driver's OpenCL (AMD Adrenalin or ROCm, Intel, NVIDIA, Apple). An NVIDIA card is run through CUDA for the full time and through OpenCL for a quarter of it as a cross-check; an Apple card through Metal and through Apple's OpenCL the same way.

The pass marks and the tolerances

Number Pass mark
Vectors exact: every lane of every warp, on the CPU and on every GPU
Fingerprint exact across machines at the same --batch-log2
Hash MH/s at 1 GiB within 3% of the published figure for the same card model
Sweep MH/s within 10%
Random reads at 1 GiB (G loads/s), stream GB/s within 10%
CPU verify per warp under 10 ms on any core (the chain's verification gate); the published cores are under 1 ms
Proof times within 25%

A row on the bench table (/miners) becomes "reproduced externally" when an unrelated operator's result agrees with the team's reference within these tolerances. Disagreeing results are published too, as "submitted", with the deltas.

Send it back

Attach results/igneum-repro-<os>-<time>.json (and the .md if you like) to an issue on the Igneum repository once it is public, or email it to the address on igneum.network. Say which card was idle (no miner, no game) during the run. The file carries no hostname, no user name and no address; it carries your GPU and CPU models, your OS version and the driver version.

The reproduction reward

The reward terms are the ones of docs/benchmarks/proving-e2e.md section 8.1, unchanged: a published fixed reproduction reward, equal for everyone and announced before the run, is allowed and disclosed; three operators are unrelated when they are different persons not paid by the project beyond that reward, on hardware bought separately with no shared host, card, rack or power meter, on different autonomous systems and at different sites, running the same published release by hash, with no payment, loan or equipment between them or from the project beyond the disclosed reward. The amount and who pays it are in docs/plans/funding.md (challenge reward row); nothing is funded as of 6 October 2026, and reproduction is asked for without a reward, which the standard allows.

Build the package yourself

From the Igneum repository at the tagged commit: bench/make-package.sh (macOS with swiftc, cargo, zig and mingw-w64; every binary comes from the repository's own cross-build scripts). The sha256 of every file is in SHA256SUMS, and the VERSION file names the tag and commit. bin/windows-x86_64/THIRD-PARTY.md lists the one third-party component (NVIDIA's NVRTC runtime compiler) with its licence.