Merge master bd06d4339 into verdict-cache-fix under the master-landing lock
This commit is contained in:
commit
ccc7970c00
60 changed files with 2580 additions and 156 deletions
132
docs/analysis/class-v6/rows/live-dataset-census-1a938abe4.md
Normal file
132
docs/analysis/class-v6/rows/live-dataset-census-1a938abe4.md
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
# The live-dataset census on the frozen object (Igneum 2.0 Phase 1 item (j)), 8 October 2026, 21:4x to 22:10 UK
|
||||
|
||||
The frozen tree: class-v6 1a938abe4 (the draw and the acceptance of b24dfc162; nothing on it moves). The object: hl-v6-all, program 4de7b836cc40a4ea, generator 6, class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw (the fold, the rw1 table, the 64-register full-chain window), the Devnet 3 genesis epoch hex edc4fa84... as the epoch and era seed, day 20730, the node1 state (block 159357, 93 leaves, root 1c583d35...). The harness: branch class-v6-census-all4 at b819c23a4 (the census commands on the 1a938abe4 crate; the binary all4-b819c23a, sha256 6448ade354bc665a... on build-5 and build-6, byte-identical). Boxes: build-5 (igneum-build-5, 32 cores) and build-6 (igneum-build-6, 32 cores), the lease pool at class v5, nice 19, every run under a pid file through the night driver (`tools/attack/v6-census/night-run.sh`: a job without its end marker is restarted up to three times and every restart is logged; the logs are beside the rows). Nothing ran on the Mac; nothing here touches a served page or the spec.
|
||||
|
||||
**What "live" means here.** The acceptance's dynamic test, the attempts census and the earlier trace reads run on the closed-form stand-in. These rows run the kernel path's own interpreter (`verify::interpret_warp_core` under a tracing probe) on the chain's dataset: the memory-hard dataset the epoch derives from the day key with the mixer and the state leaves of the node1 stream (`Epoch::chain_dataset_day` with `--state`), so every address after the first load depends on live dataset bytes; and on the header-bound init words (`bind::block_init_words` over a prehash per header with the header's index as the high nonce word), four headers per box, the object split four headers per box (eight in all), 2^18 nonces per header on the object and 2^16 on each of sixteen chain-shaped seeds p18 to p33 under the frozen class.
|
||||
|
||||
## 1. The census rows (the same statistics as the closed-form census, over the live dataset)
|
||||
|
||||
Per run: per (iteration, site) cell and per site the address histogram over every read (A03's form: the most read address and its share), the distinct word indices against the window model `N - N^2 / 2W` at the site's window (the (c'') form), the one-count of every address bit inside the site's window above the alignment (the value-level read, 6 sigma), and over the program the top 0.1 percent of items' share of all reads against a flat control and a windowed control (each site's reads drawn uniformly over its own window, the same counts) at the same N (the F8 form's two nulls; the gate 1.2x over the window model).
|
||||
|
||||
| Run (box) | Program | Headers; nonces per header | Reads | Worst address at any site, worst cell (count, share) | Min site distinct ratio (floors 0.98, 0.995) | Worst index bit inside its window (sigma; band 6) | Top 0.1 percent item share; against the controls (gate 1.2x) | Ideal cache 1 GiB / 256 MiB / 64 MiB (top K by count; sampling-inflated above the window model) |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| object-h0 (build-5) | 4de7b836cc40a4ea | 4 from 0; 262,144 nonces each | 268,435,456 | site 8: 0x07579830 x6 (1.0e-06); cell: 0x0ab39b50 x4 (4.0e-06) | 1.00007 | -3.51 (site 7, bit 1) | 0.002138; 1.0998x flat; **0.9989x** window model | 1.0000 / 0.3540 / 0.1035 |
|
||||
| seed-p18 (build-5) | 0b686c80e25cb4d3 | 4 from 0; 65,536 nonces each | 67,108,864 | site 0: 0x04b26299 x4 (2.0e-06); cell: 0x000e4f1d x3 (1.1e-05) | 0.99991 | 3.09 (site 24, bit 16) | 0.003391; 1.1032x flat; **1.0006x** window model | 1.0000 / 0.4404 / 0.1414 |
|
||||
| seed-p19 (build-5) | bf8510cd00c0c70f | 4 from 0; 65,536 nonces each | 67,108,864 | site 0: 0x0813e726 x4 (2.0e-06); cell: 0x06f0d11f x3 (1.1e-05) | 0.99986 | -3.81 (site 29, bit 7) | 0.003433; 1.1159x flat; **0.9996x** window model | 1.0000 / 0.4418 / 0.1426 |
|
||||
| seed-p20 (build-5) | 24133bd7265e958f | 4 from 0; 65,536 nonces each | 67,108,864 | site 2: 0x09d4fb1a x4 (2.0e-06); cell: 0x0ae65aa6 x3 (1.1e-05) | 0.99994 | -3.55 (site 30, bit 0) | 0.003434; 1.1175x flat; **1.0003x** window model | 1.0000 / 0.4443 / 0.1429 |
|
||||
| seed-p21 (build-5) | ed647abf60a5bd32 | 4 from 0; 65,536 nonces each | 67,108,864 | site 0: 0x04e14ec7 x4 (2.0e-06); cell: 0x03973640 x3 (1.1e-05) | 0.99990 | 3.90 (site 11, bit 9) | 0.003920; 1.2759x flat; **1.0008x** window model | 1.0000 / 0.4774 / 0.1605 |
|
||||
| seed-p22 (build-5) | f8e8969443448ecb | 4 from 0; 65,536 nonces each | 67,108,864 | site 6: 0x06a054ca x5 (2.0e-06); cell: 0x0342068e x3 (1.1e-05) | 0.99994 | 3.31 (site 13, bit 19) | 0.003237; 1.0540x flat; **0.9997x** window model | 1.0000 / 0.4271 / 0.1370 |
|
||||
| seed-p23 (build-5) | 160649503341aaab | 4 from 0; 65,536 nonces each | 67,108,864 | site 1: 0x0e3c2793 x4 (2.0e-06); cell: 0x051243d9 x3 (1.1e-05) | 0.99994 | -3.44 (site 25, bit 1) | 0.003338; 1.0854x flat; **0.9990x** window model | 1.0000 / 0.4315 / 0.1391 |
|
||||
| seed-p24 (build-5) | 62aa0bfc93f13028 | 4 from 0; 65,536 nonces each | 67,108,864 | site 2: 0x08bdfbf3 x4 (2.0e-06); cell: 0x0bd48627 x3 (1.1e-05) | 0.99991 | 3.46 (site 4, bit 15) | 0.003156; 1.0264x flat; **0.9988x** window model | 1.0000 / 0.4212 / 0.1338 |
|
||||
| seed-p25 (build-5) | 3f1af0bbaaef74fa | 4 from 0; 65,536 nonces each | 67,108,864 | site 2: 0x0fb1f63d x4 (2.0e-06); cell: 0x0f8343d0 x3 (1.1e-05) | 0.99993 | 3.27 (site 2, bit 5) | 0.003436; 1.1192x flat; **1.0014x** window model | 1.0000 / 0.4418 / 0.1426 |
|
||||
| object-h4 (build-6) | 4de7b836cc40a4ea | 4 from 0; 262,144 nonces each | 268,435,456 | site 21: 0x0436441b x6 (1.0e-06); cell: 0x0f45e0db x4 (4.0e-06) | 1.00010 | -3.06 (site 9, bit 1) | 0.002140; 1.1005x flat; **0.9995x** window model | 1.0000 / 0.3540 / 0.1035 |
|
||||
| seed-p26 (build-6) | 2b406490ba8d3c91 | 4 from 0; 65,536 nonces each | 67,108,864 | site 3: 0x03f3960e x4 (2.0e-06); cell: 0x0f26b8e6 x3 (1.1e-05) | 0.99992 | 3.61 (site 28, bit 20) | 0.003129; 1.0183x flat; **1.0003x** window model | 1.0000 / 0.4196 / 0.1328 |
|
||||
| seed-p27 (build-6) | c38b57d654ad08d4 | 4 from 0; 65,536 nonces each | 67,108,864 | site 2: 0x031a0ba8 x4 (2.0e-06); cell: 0x01c78316 x3 (1.1e-05) | 0.99995 | -2.90 (site 8, bit 16) | 0.003348; 1.0873x flat; **1.0010x** window model | 1.0000 / 0.4343 / 0.1396 |
|
||||
| seed-p28 (build-6) | 96e4f7fdccef6fd1 | 4 from 0; 65,536 nonces each | 67,108,864 | site 2: 0x030525f1 x4 (2.0e-06); cell: 0x03149070 x3 (1.1e-05) | 0.99993 | -3.99 (site 25, bit 11) | 0.003499; 1.1396x flat; **1.0005x** window model | 1.0000 / 0.4400 / 0.1434 |
|
||||
| seed-p29 (build-6) | 3f922ac24b46d2c2 | 4 from 0; 65,536 nonces each | 67,108,864 | site 7: 0x0e92f974 x4 (2.0e-06); cell: 0x0ef15836 x3 (1.1e-05) | 0.99997 | 3.00 (site 25, bit 18) | 0.003169; 1.0326x flat; **1.0004x** window model | 1.0000 / 0.4241 / 0.1350 |
|
||||
| seed-p30 (build-6) | edd13a08477407cf | 4 from 0; 65,536 nonces each | 67,108,864 | site 0: 0x0e3a012d x4 (2.0e-06); cell: 0x0e92237a x3 (1.1e-05) | 0.99991 | 2.59 (site 4, bit 26) | 0.003348; 1.0910x flat; **0.9981x** window model | 1.0000 / 0.4343 / 0.1395 |
|
||||
| seed-p31 (build-6) | e1409749e795c382 | 4 from 0; 65,536 nonces each | 67,108,864 | site 0: 0x0d3d1622 x4 (2.0e-06); cell: 0x0f8c1753 x3 (1.1e-05) | 0.99988 | -3.23 (site 7, bit 21) | 0.003432; 1.1164x flat; **0.9992x** window model | 1.0000 / 0.4417 / 0.1425 |
|
||||
| seed-p32 (build-6) | 0717ad9158d5937f | 4 from 0; 65,536 nonces each | 67,108,864 | site 4: 0x0cd645f0 x4 (2.0e-06); cell: 0x08695fc3 x3 (1.1e-05) | 0.99993 | 3.40 (site 6, bit 2) | 0.003378; 1.1000x flat; **1.0004x** window model | 1.0000 / 0.4390 / 0.1410 |
|
||||
| seed-p33 (build-6) | 9857a41ce42f4677 | 4 from 0; 65,536 nonces each | 67,108,864 | site 2: 0x0f425fde x4 (2.0e-06); cell: 0x03846806 x3 (1.1e-05) | 0.99994 | -3.95 (site 5, bit 5) | 0.003416; 1.1112x flat; **0.9996x** window model | 1.0000 / 0.4358 / 0.1410 |
|
||||
|
||||
Reading: on the frozen object over 2^21 hashes and eight headers (two boxes), the top 0.1 percent of items hold 0.2138 and 0.2140 percent of reads against the windowed control's 0.2141 (0.9989x and 0.9995x; the flat control 1.10x, the era windows' layer 8 by design); every site's distinct ratio 1.0001 (uniform inside its window); the worst index bit inside any window under 4 sigma; the worst address at any site 6 to 7 reads of 134 million (5e-8) and the worst cell 4 of 4 million, the Poisson maxima of a uniform stream; every one of the 16,777,216 items touched. The sixteen chain-shaped seeds under the frozen class read the same: window-model ratios 0.998 to 1.001x, flat 1.03 to 1.28x (p21's 1.28x is its window draw), min site ratio 0.99986 to 0.99997, worst bit 2.6 to 4.0 sigma, worst address 4 to 5 reads of 2 million. Nothing a cache can key on beyond the era windows, which the GPU's L2 sees as well; the cache columns (top K items by sample count) sit above the window model by the sampling noise of ranking items by count, as in the A03 census (census-packs.md section 6), and the honest cache figures are the window model's (the object's 256 MiB share 0.354 measured at 2^20 hashes per box against 0.359 from its window draw).
|
||||
|
||||
## 2. F06's live half: the window's liveness on live data
|
||||
|
||||
The rule (`accept::check_window_liveness`, the chain's) flips each of the 64 registers by two probe words at the start of iteration 0 on the closed form at one base nonce and requires the first load's address and the hash to change in every lane. Here the same flips run on the live dataset under the header-bound init words, over four headers and 16 warps per box on the object (4,096 probes per register per box) and two headers and 8 warps on a chain seed, with every load of every iteration traced, so the least-changed load of the first iteration is read as well as the first.
|
||||
|
||||
| Run (box) | Program | Headers; warps | Registers x probes | First-load address changed (fraction of lanes, least live register) | Hash changed | Least-changed first-iteration load | Verdict |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| liveness-object-h0 (build-5) | 4de7b836cc40a4ea | 4 from 0; 16 warps | 64 x 4096 | 1.000000 | 1.000000 | 1.000000 at (register 0, load 0) | **LIVE** |
|
||||
| liveness-p18 (build-5) | 0b686c80e25cb4d3 | 2 from 0; 8 warps | 64 x 1024 | 1.000000 | 1.000000 | 1.000000 at (register 0, load 0) | **LIVE** |
|
||||
| liveness-object-h4 (build-6) | 4de7b836cc40a4ea | 4 from 0; 16 warps | 64 x 4096 | 1.000000 | 1.000000 | 1.000000 at (register 0, load 0) | **LIVE** |
|
||||
| liveness-p26 (build-6) | 2b406490ba8d3c91 | 2 from 0; 8 warps | 64 x 1024 | 1.000000 | 1.000000 | 1.000000 at (register 0, load 0) | **LIVE** |
|
||||
|
||||
Reading: every one of the 64 registers moves every lane's first address and every lane's hash under every probe on live data (1.000000 at the least live register over 4,096 probes on each box), and every first-iteration load's address moves in every lane under every flip (the least-changed cell 1.000000). The construction's claim ("every one of the 64 registers is read by the address of each of the 32 loads") holds as measured on the live dataset, not only by construction.
|
||||
|
||||
## 3. The runs, the faults, the commands
|
||||
|
||||
Every job and every restart, with the UK clock, from the drivers' logs (the one fault of the night: my job-list writer ran in a shell that does not split an unquoted list, so the eight seed jobs per box collapsed into one line that the harness refused with exit 2 three times on each box; the lists were rewritten with explicit splitting and the sixteen seed rows ran through the same driver at 22:01; nothing in the harness or the crate moved):
|
||||
|
||||
```
|
||||
# night driver start 21:56 UK host igneum-build-5 jobs 5
|
||||
start 1 canary-p18 21:56 UK
|
||||
end 1 canary-p18 rc 0 21:56 UK
|
||||
start 1 object-h0 21:56 UK
|
||||
end 1 object-h0 rc 0 21:59 UK
|
||||
start 1 liveness-object-h0 21:59 UK
|
||||
end 1 liveness-object-h0 rc 0 21:59 UK
|
||||
start 1 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
end 1 seed-p18 19 20 21 22 23 24 25 rc 2 21:59 UK
|
||||
restart 2 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
start 2 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
end 2 seed-p18 19 20 21 22 23 24 25 rc 2 21:59 UK
|
||||
restart 3 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
start 3 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
end 3 seed-p18 19 20 21 22 23 24 25 rc 2 21:59 UK
|
||||
start 1 liveness-p18 21:59 UK
|
||||
end 1 liveness-p18 rc 0 21:59 UK
|
||||
# night driver end 21:59 UK
|
||||
# night driver start 22:01 UK host igneum-build-5 jobs 8
|
||||
start 1 seed-p18 22:01 UK
|
||||
end 1 seed-p18 rc 0 22:01 UK
|
||||
start 1 seed-p19 22:01 UK
|
||||
end 1 seed-p19 rc 0 22:02 UK
|
||||
start 1 seed-p20 22:02 UK
|
||||
end 1 seed-p20 rc 0 22:03 UK
|
||||
start 1 seed-p21 22:03 UK
|
||||
end 1 seed-p21 rc 0 22:03 UK
|
||||
start 1 seed-p22 22:03 UK
|
||||
end 1 seed-p22 rc 0 22:04 UK
|
||||
start 1 seed-p23 22:04 UK
|
||||
end 1 seed-p23 rc 0 22:05 UK
|
||||
start 1 seed-p24 22:05 UK
|
||||
end 1 seed-p24 rc 0 22:05 UK
|
||||
start 1 seed-p25 22:05 UK
|
||||
end 1 seed-p25 rc 0 22:06 UK
|
||||
# night driver end 22:06 UK
|
||||
# night driver start 21:56 UK host igneum-build-6 jobs 1
|
||||
start 1 canary-p18 21:56 UK
|
||||
end 1 canary-p18 rc 0 21:56 UK
|
||||
# night driver end 21:56 UK
|
||||
# night driver start 21:56 UK host igneum-build-6 jobs 5
|
||||
start 1 object-h4 21:56 UK
|
||||
end 1 object-h4 rc 0 22:00 UK
|
||||
start 1 liveness-object-h4 22:00 UK
|
||||
end 1 liveness-object-h4 rc 0 22:00 UK
|
||||
start 1 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
end 1 seed-p26 27 28 29 30 31 32 33 rc 2 22:00 UK
|
||||
restart 2 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
start 2 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
end 2 seed-p26 27 28 29 30 31 32 33 rc 2 22:00 UK
|
||||
restart 3 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
start 3 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
end 3 seed-p26 27 28 29 30 31 32 33 rc 2 22:00 UK
|
||||
start 1 liveness-p26 22:00 UK
|
||||
end 1 liveness-p26 rc 0 22:00 UK
|
||||
# night driver end 22:00 UK
|
||||
# night driver start 22:01 UK host igneum-build-6 jobs 8
|
||||
start 1 seed-p26 22:01 UK
|
||||
end 1 seed-p26 rc 0 22:02 UK
|
||||
start 1 seed-p27 22:02 UK
|
||||
end 1 seed-p27 rc 0 22:02 UK
|
||||
start 1 seed-p28 22:02 UK
|
||||
end 1 seed-p28 rc 0 22:03 UK
|
||||
start 1 seed-p29 22:03 UK
|
||||
end 1 seed-p29 rc 0 22:04 UK
|
||||
start 1 seed-p30 22:04 UK
|
||||
end 1 seed-p30 rc 0 22:05 UK
|
||||
start 1 seed-p31 22:05 UK
|
||||
end 1 seed-p31 rc 0 22:06 UK
|
||||
start 1 seed-p32 22:06 UK
|
||||
end 1 seed-p32 rc 0 22:07 UK
|
||||
start 1 seed-p33 22:07 UK
|
||||
end 1 seed-p33 rc 0 22:08 UK
|
||||
# night driver end 22:08 UK
|
||||
```
|
||||
|
||||
The commands (the lists `night-jobs-<box>.tsv` and `night-seeds-<box>.tsv` beside the rows carry every one verbatim): the object, `addrsite --count 4 --header-from <0|4> --warps 8192 --threads 32 --epoch-hex <genesis> --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:<genesis> --state node1-state.igsd1`; a seed, the same with `--seed igneum-attack-f8/program/<n> --warps 2048`; the liveness, `liveness --count 4 --header-from <0|4> --warps 16 --threads 32` with the same object arguments. Every run under `lease pool 32 --min 4 --nice 19 --class v5 --owner class-v6-census` through `night-run.sh`, pid files under `/srv/builds/v6-census/pids/` on each box.
|
||||
|
||||
## 4. Against the one acceptance rule, and what is owed
|
||||
|
||||
On the live dataset the frozen object reads as the closed-form census read it: uniform inside every era window to the Poisson floor, no address bit biased inside its window, the window live on every register and every load. Nothing here moves the adversary's edge: the hot half of the dataset is the era windows' (layer 8), seen by a GPU's L2 and a chip's SRAM alike. Owed: the same rows at 2^24 nonces per header (the 64 x 2^24 live point every class owes; 50 to 100 core-hours per object); a per-site LRU trace for a cache figure free of the top-K ranking's sampling inflation.
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
# liveness: program 4de7b836cc40a4ea class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw registers 64 day bytes:69676e65756d2d6461792ffa50000000000000 dataset 2^28 words (memory-hard) headers 4 warps 16 threads 32 probe words 2
|
||||
reg probes first_load_changed hash_changed least_changed_load least_changed_frac
|
||||
0 4096 1.000000 1.000000 0 1.000000
|
||||
1 4096 1.000000 1.000000 0 1.000000
|
||||
2 4096 1.000000 1.000000 0 1.000000
|
||||
3 4096 1.000000 1.000000 0 1.000000
|
||||
4 4096 1.000000 1.000000 0 1.000000
|
||||
5 4096 1.000000 1.000000 0 1.000000
|
||||
6 4096 1.000000 1.000000 0 1.000000
|
||||
7 4096 1.000000 1.000000 0 1.000000
|
||||
8 4096 1.000000 1.000000 0 1.000000
|
||||
9 4096 1.000000 1.000000 0 1.000000
|
||||
10 4096 1.000000 1.000000 0 1.000000
|
||||
11 4096 1.000000 1.000000 0 1.000000
|
||||
12 4096 1.000000 1.000000 0 1.000000
|
||||
13 4096 1.000000 1.000000 0 1.000000
|
||||
14 4096 1.000000 1.000000 0 1.000000
|
||||
15 4096 1.000000 1.000000 0 1.000000
|
||||
16 4096 1.000000 1.000000 0 1.000000
|
||||
17 4096 1.000000 1.000000 0 1.000000
|
||||
18 4096 1.000000 1.000000 0 1.000000
|
||||
19 4096 1.000000 1.000000 0 1.000000
|
||||
20 4096 1.000000 1.000000 0 1.000000
|
||||
21 4096 1.000000 1.000000 0 1.000000
|
||||
22 4096 1.000000 1.000000 0 1.000000
|
||||
23 4096 1.000000 1.000000 0 1.000000
|
||||
24 4096 1.000000 1.000000 0 1.000000
|
||||
25 4096 1.000000 1.000000 0 1.000000
|
||||
26 4096 1.000000 1.000000 0 1.000000
|
||||
27 4096 1.000000 1.000000 0 1.000000
|
||||
28 4096 1.000000 1.000000 0 1.000000
|
||||
29 4096 1.000000 1.000000 0 1.000000
|
||||
30 4096 1.000000 1.000000 0 1.000000
|
||||
31 4096 1.000000 1.000000 0 1.000000
|
||||
32 4096 1.000000 1.000000 0 1.000000
|
||||
33 4096 1.000000 1.000000 0 1.000000
|
||||
34 4096 1.000000 1.000000 0 1.000000
|
||||
35 4096 1.000000 1.000000 0 1.000000
|
||||
36 4096 1.000000 1.000000 0 1.000000
|
||||
37 4096 1.000000 1.000000 0 1.000000
|
||||
38 4096 1.000000 1.000000 0 1.000000
|
||||
39 4096 1.000000 1.000000 0 1.000000
|
||||
40 4096 1.000000 1.000000 0 1.000000
|
||||
41 4096 1.000000 1.000000 0 1.000000
|
||||
42 4096 1.000000 1.000000 0 1.000000
|
||||
43 4096 1.000000 1.000000 0 1.000000
|
||||
44 4096 1.000000 1.000000 0 1.000000
|
||||
45 4096 1.000000 1.000000 0 1.000000
|
||||
46 4096 1.000000 1.000000 0 1.000000
|
||||
47 4096 1.000000 1.000000 0 1.000000
|
||||
48 4096 1.000000 1.000000 0 1.000000
|
||||
49 4096 1.000000 1.000000 0 1.000000
|
||||
50 4096 1.000000 1.000000 0 1.000000
|
||||
51 4096 1.000000 1.000000 0 1.000000
|
||||
52 4096 1.000000 1.000000 0 1.000000
|
||||
53 4096 1.000000 1.000000 0 1.000000
|
||||
54 4096 1.000000 1.000000 0 1.000000
|
||||
55 4096 1.000000 1.000000 0 1.000000
|
||||
56 4096 1.000000 1.000000 0 1.000000
|
||||
57 4096 1.000000 1.000000 0 1.000000
|
||||
58 4096 1.000000 1.000000 0 1.000000
|
||||
59 4096 1.000000 1.000000 0 1.000000
|
||||
60 4096 1.000000 1.000000 0 1.000000
|
||||
61 4096 1.000000 1.000000 0 1.000000
|
||||
62 4096 1.000000 1.000000 0 1.000000
|
||||
63 4096 1.000000 1.000000 0 1.000000
|
||||
# verdict: 64 registers over 4096 probes each; first-load address changed in 1.000000 of lanes at the least live register, the hash in 1.000000; the least changed (register, first-iteration load) is (0, 0) at 1.000000; LIVE on live data (every register moves every lane's first address and hash); 6.6 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -0,0 +1,67 @@
|
|||
# liveness: program 0b686c80e25cb4d3 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw registers 64 day 2026-10-03 dataset 2^28 words (memory-hard) headers 2 warps 8 threads 32 probe words 2
|
||||
reg probes first_load_changed hash_changed least_changed_load least_changed_frac
|
||||
0 1024 1.000000 1.000000 0 1.000000
|
||||
1 1024 1.000000 1.000000 0 1.000000
|
||||
2 1024 1.000000 1.000000 0 1.000000
|
||||
3 1024 1.000000 1.000000 0 1.000000
|
||||
4 1024 1.000000 1.000000 0 1.000000
|
||||
5 1024 1.000000 1.000000 0 1.000000
|
||||
6 1024 1.000000 1.000000 0 1.000000
|
||||
7 1024 1.000000 1.000000 0 1.000000
|
||||
8 1024 1.000000 1.000000 0 1.000000
|
||||
9 1024 1.000000 1.000000 0 1.000000
|
||||
10 1024 1.000000 1.000000 0 1.000000
|
||||
11 1024 1.000000 1.000000 0 1.000000
|
||||
12 1024 1.000000 1.000000 0 1.000000
|
||||
13 1024 1.000000 1.000000 0 1.000000
|
||||
14 1024 1.000000 1.000000 0 1.000000
|
||||
15 1024 1.000000 1.000000 0 1.000000
|
||||
16 1024 1.000000 1.000000 0 1.000000
|
||||
17 1024 1.000000 1.000000 0 1.000000
|
||||
18 1024 1.000000 1.000000 0 1.000000
|
||||
19 1024 1.000000 1.000000 0 1.000000
|
||||
20 1024 1.000000 1.000000 0 1.000000
|
||||
21 1024 1.000000 1.000000 0 1.000000
|
||||
22 1024 1.000000 1.000000 0 1.000000
|
||||
23 1024 1.000000 1.000000 0 1.000000
|
||||
24 1024 1.000000 1.000000 0 1.000000
|
||||
25 1024 1.000000 1.000000 0 1.000000
|
||||
26 1024 1.000000 1.000000 0 1.000000
|
||||
27 1024 1.000000 1.000000 0 1.000000
|
||||
28 1024 1.000000 1.000000 0 1.000000
|
||||
29 1024 1.000000 1.000000 0 1.000000
|
||||
30 1024 1.000000 1.000000 0 1.000000
|
||||
31 1024 1.000000 1.000000 0 1.000000
|
||||
32 1024 1.000000 1.000000 0 1.000000
|
||||
33 1024 1.000000 1.000000 0 1.000000
|
||||
34 1024 1.000000 1.000000 0 1.000000
|
||||
35 1024 1.000000 1.000000 0 1.000000
|
||||
36 1024 1.000000 1.000000 0 1.000000
|
||||
37 1024 1.000000 1.000000 0 1.000000
|
||||
38 1024 1.000000 1.000000 0 1.000000
|
||||
39 1024 1.000000 1.000000 0 1.000000
|
||||
40 1024 1.000000 1.000000 0 1.000000
|
||||
41 1024 1.000000 1.000000 0 1.000000
|
||||
42 1024 1.000000 1.000000 0 1.000000
|
||||
43 1024 1.000000 1.000000 0 1.000000
|
||||
44 1024 1.000000 1.000000 0 1.000000
|
||||
45 1024 1.000000 1.000000 0 1.000000
|
||||
46 1024 1.000000 1.000000 0 1.000000
|
||||
47 1024 1.000000 1.000000 0 1.000000
|
||||
48 1024 1.000000 1.000000 0 1.000000
|
||||
49 1024 1.000000 1.000000 0 1.000000
|
||||
50 1024 1.000000 1.000000 0 1.000000
|
||||
51 1024 1.000000 1.000000 0 1.000000
|
||||
52 1024 1.000000 1.000000 0 1.000000
|
||||
53 1024 1.000000 1.000000 0 1.000000
|
||||
54 1024 1.000000 1.000000 0 1.000000
|
||||
55 1024 1.000000 1.000000 0 1.000000
|
||||
56 1024 1.000000 1.000000 0 1.000000
|
||||
57 1024 1.000000 1.000000 0 1.000000
|
||||
58 1024 1.000000 1.000000 0 1.000000
|
||||
59 1024 1.000000 1.000000 0 1.000000
|
||||
60 1024 1.000000 1.000000 0 1.000000
|
||||
61 1024 1.000000 1.000000 0 1.000000
|
||||
62 1024 1.000000 1.000000 0 1.000000
|
||||
63 1024 1.000000 1.000000 0 1.000000
|
||||
# verdict: 64 registers over 1024 probes each; first-load address changed in 1.000000 of lanes at the least live register, the hash in 1.000000; the least changed (register, first-iteration load) is (0, 0) at 1.000000; LIVE on live data (every register moves every lane's first address and hash); 2.0 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -0,0 +1,5 @@
|
|||
canary-p18 # F8 form 16 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 1 --warps 256 --threads 16 --seed igneum-attack-f8/program/18 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
object-h0 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --header-from 0 --warps 8192 --threads 32 --epoch-hex edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
liveness-object-h0 # verdict 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow liveness --count 4 --header-from 0 --warps 16 --threads 32 --epoch-hex edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p18 19 20 21 22 23 24 25 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/18 19 20 21 22 23 24 25 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
liveness-p18 # verdict 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow liveness --count 2 --warps 8 --threads 32 --seed igneum-attack-f8/program/18 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
seed-p18 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/18 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p19 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/19 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p20 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/20 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p21 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/21 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p22 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/22 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p23 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/23 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p24 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/24 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p25 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/25 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 4de7b836cc40a4ea class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day bytes:69676e65756d2d6461792ffa50000000000000 dataset 2^28 words (memory-hard) headers 4 warps 8192 nonces/header 262144 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 7 1048576 1044572 0x0f281e20 3 0.000003
|
||||
0 1 7 1048576 1044538 0x0e8e8ead 3 0.000003
|
||||
# worst cell: iteration 0 site 28 address 0x0ab39b50 in 4 reads, share 0.000004
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 7 1 8388608 8388608 8132047 0x0cdad1e9 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00069 2.67 23
|
||||
1 7 1 8388608 8388608 8131951 0x0de9a70a 5 0.000001 1.0000 0.8677 0.3536 1.0000 0.5000 0.1250 1.00068 2.09 24
|
||||
2 8 1 8388608 8388608 8131945 0x09d3dc61 5 0.000001 1.0000 0.8680 0.3538 1.0000 0.5000 0.1250 1.00067 -2.55 23
|
||||
3 8 1 8388608 8388608 8132094 0x0fcde01e 4 0.000000 1.0000 0.8679 0.3538 1.0000 0.5000 0.1250 1.00069 2.49 25
|
||||
4 9 0 16777216 8388608 8258704 0x0ec34d5e 4 0.000000 1.0000 0.7130 0.2827 1.0000 0.2500 0.0625 1.00014 2.10 23
|
||||
5 9 0 16777216 8388608 8258085 0x0d7c7231 4 0.000000 1.0000 0.7131 0.2827 1.0000 0.2500 0.0625 1.00007 2.35 27
|
||||
6 10 1 8388608 8388608 8131678 0x09d64ddc 5 0.000001 1.0000 0.8678 0.3536 1.0000 0.5000 0.1250 1.00064 -1.97 11
|
||||
7 10 1 8388608 8388608 8131492 0x0fc03997 5 0.000001 1.0000 0.8680 0.3537 1.0000 0.5000 0.1250 1.00062 -3.51 1
|
||||
8 11 2 4194304 8388608 7886321 0x07579830 6 0.000001 1.0000 1.0000 0.4840 1.0000 1.0000 0.2500 1.00280 -2.78 24
|
||||
9 11 2 4194304 8388608 7884408 0x07f9a1d2 6 0.000001 1.0000 1.0000 0.4842 1.0000 1.0000 0.2500 1.00255 -2.38 21
|
||||
10 13 1 8388608 8388608 8131831 0x028ad7af 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00066 -2.29 2
|
||||
11 13 1 8388608 8388608 8131126 0x01eca4cf 5 0.000001 1.0000 0.8680 0.3537 1.0000 0.5000 0.1250 1.00057 -2.14 17
|
||||
12 29 0 16777216 8388608 8258636 0x020fff43 4 0.000000 1.0000 0.7133 0.2827 1.0000 0.2500 0.0625 1.00013 2.45 13
|
||||
13 29 0 16777216 8388608 8258639 0x0684affd 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00013 -2.24 20
|
||||
14 30 1 8388608 8388608 8131030 0x0156b5af 4 0.000000 1.0000 0.8678 0.3535 1.0000 0.5000 0.1250 1.00056 2.47 24
|
||||
15 30 1 8388608 8388608 8132231 0x05d7450b 4 0.000000 1.0000 0.8679 0.3536 1.0000 0.5000 0.1250 1.00071 2.75 26
|
||||
16 31 1 8388608 8388608 8131162 0x016f2f20 5 0.000001 1.0000 0.8680 0.3538 1.0000 0.5000 0.1250 1.00058 -1.51 12
|
||||
17 31 1 8388608 8388608 8131757 0x054cc4b7 5 0.000001 1.0000 0.8681 0.3538 1.0000 0.5000 0.1250 1.00065 2.20 18
|
||||
18 44 1 8388608 8388608 8131834 0x05606f45 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00066 -1.64 7
|
||||
19 44 1 8388608 8388608 8131163 0x02332e6c 5 0.000001 1.0000 0.8676 0.3535 1.0000 0.5000 0.1250 1.00058 2.39 8
|
||||
20 46 1 8388608 8388608 8132339 0x0282d27f 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00072 -2.20 12
|
||||
21 46 1 8388608 8388608 8131591 0x04dd4e3a 4 0.000000 1.0000 0.8678 0.3535 1.0000 0.5000 0.1250 1.00063 1.57 9
|
||||
22 47 2 4194304 8388608 7885706 0x0322c452 6 0.000001 1.0000 1.0000 0.4839 1.0000 1.0000 0.2500 1.00272 2.18 17
|
||||
23 47 2 4194304 8388608 7885403 0x025ac4be 6 0.000001 1.0000 1.0000 0.4841 1.0000 1.0000 0.2500 1.00268 2.00 21
|
||||
24 52 0 16777216 8388608 8258667 0x019ac84e 4 0.000000 1.0000 0.7132 0.2827 1.0000 0.2500 0.0625 1.00014 -2.28 14
|
||||
25 52 0 16777216 8388608 8259291 0x00a62c92 4 0.000000 1.0000 0.7130 0.2827 1.0000 0.2500 0.0625 1.00021 1.64 16
|
||||
26 56 0 16777216 8388608 8258968 0x09e1fab5 4 0.000000 1.0000 0.7132 0.2827 1.0000 0.2500 0.0625 1.00017 2.02 5
|
||||
27 56 0 16777216 8388608 8258927 0x0a3d57dc 4 0.000000 1.0000 0.7131 0.2827 1.0000 0.2500 0.0625 1.00017 -2.36 11
|
||||
28 58 1 8388608 8388608 8132535 0x0fac6ffa 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00075 2.80 0
|
||||
29 58 1 8388608 8388608 8131321 0x08555300 4 0.000000 1.0000 0.8680 0.3537 1.0000 0.5000 0.1250 1.00060 1.61 16
|
||||
30 63 0 16777216 8388608 8259105 0x0892bf3d 4 0.000000 1.0000 0.7132 0.2827 1.0000 0.2500 0.0625 1.00019 2.28 26
|
||||
31 63 0 16777216 8388608 8258645 0x03d6fb84 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00013 1.74 27
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.002138 of reads; flat control 0.001944 (ratio 1.0998x), windowed control 0.002141 (ratio 0.9989x; the gate 1.2x); min site distinct ratio 1.00007 (floors 0.98 and 0.995); worst index bit inside its window -3.51 sigma at site 7 bit 1 (the band 6)
|
||||
# program: reads 268435456, distinct items 16777198, worst site 8 address 0x07579830 in 6 reads (share 0.000001); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.3540, 64 MiB 0.1035; the per-site ideal caches summed: 1.0000, 0.8360, 0.3478; 159.5 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,36 @@
|
|||
# night driver start 21:56 UK host igneum-build-5 jobs 5
|
||||
start 1 canary-p18 21:56 UK
|
||||
end 1 canary-p18 rc 0 21:56 UK
|
||||
start 1 object-h0 21:56 UK
|
||||
end 1 object-h0 rc 0 21:59 UK
|
||||
start 1 liveness-object-h0 21:59 UK
|
||||
end 1 liveness-object-h0 rc 0 21:59 UK
|
||||
start 1 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
end 1 seed-p18 19 20 21 22 23 24 25 rc 2 21:59 UK
|
||||
restart 2 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
start 2 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
end 2 seed-p18 19 20 21 22 23 24 25 rc 2 21:59 UK
|
||||
restart 3 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
start 3 seed-p18 19 20 21 22 23 24 25 21:59 UK
|
||||
end 3 seed-p18 19 20 21 22 23 24 25 rc 2 21:59 UK
|
||||
start 1 liveness-p18 21:59 UK
|
||||
end 1 liveness-p18 rc 0 21:59 UK
|
||||
# night driver end 21:59 UK
|
||||
# night driver start 22:01 UK host igneum-build-5 jobs 8
|
||||
start 1 seed-p18 22:01 UK
|
||||
end 1 seed-p18 rc 0 22:01 UK
|
||||
start 1 seed-p19 22:01 UK
|
||||
end 1 seed-p19 rc 0 22:02 UK
|
||||
start 1 seed-p20 22:02 UK
|
||||
end 1 seed-p20 rc 0 22:03 UK
|
||||
start 1 seed-p21 22:03 UK
|
||||
end 1 seed-p21 rc 0 22:03 UK
|
||||
start 1 seed-p22 22:03 UK
|
||||
end 1 seed-p22 rc 0 22:04 UK
|
||||
start 1 seed-p23 22:04 UK
|
||||
end 1 seed-p23 rc 0 22:05 UK
|
||||
start 1 seed-p24 22:05 UK
|
||||
end 1 seed-p24 rc 0 22:05 UK
|
||||
start 1 seed-p25 22:05 UK
|
||||
end 1 seed-p25 rc 0 22:06 UK
|
||||
# night driver end 22:06 UK
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 0b686c80e25cb4d3 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 3 262144 261876 0x000e4f1d 3 0.000011
|
||||
0 1 3 262144 261871 0x029461b8 2 0.000008
|
||||
# worst cell: iteration 0 site 0 address 0x000e4f1d in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 3 1 8388608 2097152 2080929 0x04b26299 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00008 -2.60 22
|
||||
1 3 1 8388608 2097152 2080879 0x05b4d045 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00005 -2.51 18
|
||||
2 6 0 16777216 2097152 2089195 0x0e4e082d 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00011 -1.82 22
|
||||
3 6 0 16777216 2097152 2089046 0x01dc5cc3 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00004 -1.95 9
|
||||
4 11 1 8388608 2097152 2080698 0x0b201331 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99997 -1.88 21
|
||||
5 11 1 8388608 2097152 2080934 0x0fde6798 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00008 -2.87 7
|
||||
6 18 2 4194304 2097152 2064883 0x00482c0a 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00024 1.85 17
|
||||
7 18 2 4194304 2097152 2064474 0x02002d3b 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00004 2.09 17
|
||||
8 27 2 4194304 2097152 2064914 0x066b8f5f 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00026 -2.61 3
|
||||
9 27 2 4194304 2097152 2064236 0x04666edb 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 0.99993 3.08 19
|
||||
10 34 2 4194304 2097152 2064642 0x000d13e3 3 0.000001 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00012 2.44 14
|
||||
11 34 2 4194304 2097152 2064513 0x0214c14a 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00006 -1.94 17
|
||||
12 37 1 8388608 2097152 2080803 0x060b2662 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00002 -2.47 19
|
||||
13 37 1 8388608 2097152 2080758 0x0331a9a9 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00000 -2.26 13
|
||||
14 40 2 4194304 2097152 2064723 0x0d1e0fd4 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00016 -2.98 6
|
||||
15 40 2 4194304 2097152 2064774 0x0ec5a875 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00019 -1.61 22
|
||||
16 41 2 4194304 2097152 2064682 0x03ec6eec 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00014 -2.38 9
|
||||
17 41 2 4194304 2097152 2064788 0x01da8b47 3 0.000001 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00020 2.55 20
|
||||
18 42 2 4194304 2097152 2064547 0x08cfd70a 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00008 1.76 9
|
||||
19 42 2 4194304 2097152 2064774 0x0b615202 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00019 1.98 6
|
||||
20 48 2 4194304 2097152 2064698 0x0cf47975 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00015 -2.57 10
|
||||
21 48 2 4194304 2097152 2064685 0x0cf6fe62 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00015 2.09 2
|
||||
22 50 0 16777216 2097152 2088969 0x00d21e2c 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00000 -2.30 23
|
||||
23 50 0 16777216 2097152 2088913 0x0ee7ed6f 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99998 -1.63 21
|
||||
24 55 2 4194304 2097152 2064704 0x0cc94d09 3 0.000001 1.0000 1.0000 0.7135 1.0000 1.0000 0.2500 1.00016 3.09 16
|
||||
25 55 2 4194304 2097152 2064810 0x0e04588b 3 0.000001 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00021 1.79 23
|
||||
26 57 1 8388608 2097152 2080683 0x071707d2 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 0.99996 2.26 18
|
||||
27 57 1 8388608 2097152 2080580 0x04f60cb6 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 0.99991 -2.78 16
|
||||
28 60 1 8388608 2097152 2081125 0x0a64769a 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00017 -2.33 11
|
||||
29 60 1 8388608 2097152 2080624 0x0eada28b 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 0.99993 -1.99 14
|
||||
30 62 0 16777216 2097152 2088835 0x0d3cb88c 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99994 1.61 15
|
||||
31 62 0 16777216 2097152 2088964 0x01baa343 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00000 -1.98 12
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003391 of reads; flat control 0.003074 (ratio 1.1032x), windowed control 0.003389 (ratio 1.0006x; the gate 1.2x); min site distinct ratio 0.99991 (floors 0.98 and 0.995); worst index bit inside its window 3.09 sigma at site 24 bit 16 (the band 6)
|
||||
# program: reads 67108864, distinct items 16288897, worst site 0 address 0x04b26299 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4404, 64 MiB 0.1414; the per-site ideal caches summed: 1.0000, 1.0000, 0.6538; 37.2 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program bf8510cd00c0c70f class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 3 262144 261655 0x0b1aa513 2 0.000008
|
||||
0 1 3 262144 261636 0x0a0aa4c2 2 0.000008
|
||||
# worst cell: iteration 0 site 2 address 0x06f0d11f in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 3 2 4194304 2097152 2064567 0x0813e726 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00009 1.97 3
|
||||
1 3 2 4194304 2097152 2064660 0x0bdd3cc7 4 0.000002 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00013 -2.26 1
|
||||
2 5 2 4194304 2097152 2064744 0x06f31d4f 4 0.000002 1.0000 1.0000 0.7137 1.0000 1.0000 0.2500 1.00017 1.90 4
|
||||
3 5 2 4194304 2097152 2064476 0x04f74c73 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00004 -2.49 18
|
||||
4 8 0 16777216 2097152 2089084 0x0da80068 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00006 -2.56 15
|
||||
5 8 0 16777216 2097152 2088888 0x03c298f6 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99997 -1.86 27
|
||||
6 15 1 8388608 2097152 2080922 0x0cef3dd9 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00007 3.41 7
|
||||
7 15 1 8388608 2097152 2080961 0x0e2d839d 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00009 -1.93 17
|
||||
8 16 2 4194304 2097152 2064720 0x0ed37606 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00016 -2.29 3
|
||||
9 16 2 4194304 2097152 2064829 0x0ce21642 3 0.000001 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00022 -2.40 25
|
||||
10 18 0 16777216 2097152 2088870 0x05d987d8 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99996 2.03 11
|
||||
11 18 0 16777216 2097152 2088983 0x029a3121 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00001 2.05 10
|
||||
12 20 0 16777216 2097152 2088932 0x0dadfb46 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99999 2.63 14
|
||||
13 20 0 16777216 2097152 2089010 0x04a10d8d 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00002 2.62 17
|
||||
14 24 0 16777216 2097152 2088971 0x0b3f9d83 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00001 -2.54 21
|
||||
15 24 0 16777216 2097152 2088658 0x0a5d1395 3 0.000001 1.0000 1.0000 0.5604 1.0000 0.2500 0.0625 0.99986 2.46 20
|
||||
16 28 1 8388608 2097152 2080835 0x0da33a05 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00003 2.25 17
|
||||
17 28 1 8388608 2097152 2080764 0x0cab0080 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00000 2.18 20
|
||||
18 29 1 8388608 2097152 2080979 0x056d2902 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00010 -1.88 9
|
||||
19 29 1 8388608 2097152 2080906 0x02f221f1 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00007 2.67 3
|
||||
20 35 1 8388608 2097152 2080716 0x0a2c3876 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 0.99998 -2.34 22
|
||||
21 35 1 8388608 2097152 2080861 0x0ab58865 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00004 3.51 1
|
||||
22 41 1 8388608 2097152 2081104 0x0d4373fb 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00016 -2.57 5
|
||||
23 41 1 8388608 2097152 2080795 0x0e0c41fb 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00001 -1.83 6
|
||||
24 52 2 4194304 2097152 2064791 0x0b08686d 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00020 2.41 17
|
||||
25 52 2 4194304 2097152 2064688 0x0a04c3d9 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00015 -2.02 0
|
||||
26 54 2 4194304 2097152 2064789 0x03fcf023 4 0.000002 1.0000 1.0000 0.7126 1.0000 1.0000 0.2500 1.00020 -3.04 17
|
||||
27 54 2 4194304 2097152 2064622 0x03abef8c 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00012 -2.57 4
|
||||
28 55 0 16777216 2097152 2088972 0x017e612a 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00001 1.96 10
|
||||
29 55 0 16777216 2097152 2089045 0x02c2382b 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00004 -3.81 7
|
||||
30 62 0 16777216 2097152 2088837 0x07a76cac 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99994 1.85 7
|
||||
31 62 0 16777216 2097152 2089047 0x0b01583f 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00004 -1.68 20
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003433 of reads; flat control 0.003076 (ratio 1.1159x), windowed control 0.003434 (ratio 0.9996x; the gate 1.2x); min site distinct ratio 0.99986 (floors 0.98 and 0.995); worst index bit inside its window -3.81 sigma at site 29 bit 7 (the band 6)
|
||||
# program: reads 67108864, distinct items 16295371, worst site 0 address 0x0813e726 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4418, 64 MiB 0.1426; the per-site ideal caches summed: 1.0000, 1.0000, 0.6251; 37.5 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 24133bd7265e958f class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 7 262144 261885 0x0343ee61 2 0.000008
|
||||
0 1 7 262144 261881 0x00f22a5f 2 0.000008
|
||||
# worst cell: iteration 0 site 2 address 0x0ae65aa6 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 7 1 8388608 2097152 2080652 0x07d93627 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 0.99994 2.09 15
|
||||
1 7 1 8388608 2097152 2080868 0x0686b399 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00005 1.62 1
|
||||
2 12 2 4194304 2097152 2064729 0x09d4fb1a 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00017 2.72 22
|
||||
3 12 2 4194304 2097152 2064685 0x091bcddd 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00015 -2.57 4
|
||||
4 16 0 16777216 2097152 2088927 0x091db95c 3 0.000001 1.0000 1.0000 0.5596 1.0000 0.2500 0.0625 0.99998 2.37 24
|
||||
5 16 0 16777216 2097152 2089036 0x089bc5e3 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00004 -2.18 3
|
||||
6 21 2 4194304 2097152 2064914 0x09526974 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00026 -1.99 5
|
||||
7 21 2 4194304 2097152 2065025 0x08d25517 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00031 2.32 15
|
||||
8 23 1 8388608 2097152 2080988 0x0e5dde91 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00011 -1.78 23
|
||||
9 23 1 8388608 2097152 2081037 0x0bdf5845 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00013 2.36 3
|
||||
10 26 1 8388608 2097152 2080754 0x003b1a48 4 0.000002 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 0.99999 2.56 8
|
||||
11 26 1 8388608 2097152 2080983 0x06b45091 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00010 -1.90 25
|
||||
12 31 0 16777216 2097152 2088910 0x0aa4ae37 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99998 -2.29 24
|
||||
13 31 0 16777216 2097152 2088934 0x081c8307 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99999 2.01 16
|
||||
14 37 0 16777216 2097152 2089016 0x0d26ec54 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00003 -2.15 12
|
||||
15 37 0 16777216 2097152 2088952 0x06846339 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00000 -2.47 7
|
||||
16 42 2 4194304 2097152 2064723 0x0fdf72bf 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00016 2.56 19
|
||||
17 42 2 4194304 2097152 2064835 0x0eac09aa 3 0.000001 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00022 -2.12 10
|
||||
18 50 2 4194304 2097152 2065072 0x01c5480c 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00033 2.89 21
|
||||
19 50 2 4194304 2097152 2064560 0x02d4382d 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00009 2.32 7
|
||||
20 52 1 8388608 2097152 2080693 0x0465e729 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 0.99996 2.31 17
|
||||
21 52 1 8388608 2097152 2080994 0x0326cf51 4 0.000002 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 1.00011 2.95 6
|
||||
22 55 1 8388608 2097152 2080816 0x00faef0c 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00002 3.53 8
|
||||
23 55 1 8388608 2097152 2080759 0x02721691 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00000 -2.40 26
|
||||
24 56 1 8388608 2097152 2080758 0x035ae275 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00000 2.13 5
|
||||
25 56 1 8388608 2097152 2080689 0x05953052 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99996 2.28 21
|
||||
26 57 2 4194304 2097152 2064382 0x09a2e80e 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00000 1.70 20
|
||||
27 57 2 4194304 2097152 2064898 0x086ecbc9 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00025 1.86 9
|
||||
28 59 2 4194304 2097152 2064762 0x02cf86d2 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00018 -1.49 22
|
||||
29 59 2 4194304 2097152 2064911 0x008d0c7b 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00026 2.31 20
|
||||
30 61 0 16777216 2097152 2088933 0x0e8cac4a 4 0.000002 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99999 -3.55 0
|
||||
31 61 0 16777216 2097152 2089107 0x0278742c 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00007 1.93 26
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003434 of reads; flat control 0.003073 (ratio 1.1175x), windowed control 0.003433 (ratio 1.0003x; the gate 1.2x); min site distinct ratio 0.99994 (floors 0.98 and 0.995); worst index bit inside its window -3.55 sigma at site 30 bit 0 (the band 6)
|
||||
# program: reads 67108864, distinct items 16241632, worst site 2 address 0x09d4fb1a in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4443, 64 MiB 0.1429; the per-site ideal caches summed: 1.0000, 1.0000, 0.6381; 37.2 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program ed647abf60a5bd32 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 2 262144 261872 0x05f8d1aa 2 0.000008
|
||||
0 1 2 262144 261875 0x03973640 3 0.000011
|
||||
# worst cell: iteration 0 site 1 address 0x03973640 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 2 1 8388608 2097152 2080802 0x04e14ec7 4 0.000002 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00002 -2.58 25
|
||||
1 2 1 8388608 2097152 2080971 0x04211450 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00010 -2.65 21
|
||||
2 3 1 8388608 2097152 2080923 0x023d7abf 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00007 2.18 5
|
||||
3 3 1 8388608 2097152 2080683 0x04a06101 4 0.000002 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 0.99996 3.13 20
|
||||
4 7 0 16777216 2097152 2089101 0x052b5c58 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00007 2.28 12
|
||||
5 7 0 16777216 2097152 2088894 0x0ea8f6e0 4 0.000002 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99997 -1.63 2
|
||||
6 9 2 4194304 2097152 2064761 0x01cfdee9 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00018 -1.55 24
|
||||
7 9 2 4194304 2097152 2064803 0x032825af 3 0.000001 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00020 -1.84 8
|
||||
8 10 0 16777216 2097152 2088925 0x08f54043 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99998 2.69 21
|
||||
9 10 0 16777216 2097152 2088838 0x0ee50520 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99994 3.05 2
|
||||
10 27 0 16777216 2097152 2088759 0x0bd61849 3 0.000001 1.0000 1.0000 0.5596 1.0000 0.2500 0.0625 0.99990 -2.66 22
|
||||
11 27 0 16777216 2097152 2088929 0x0e72d133 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99999 3.90 9
|
||||
12 31 2 4194304 2097152 2064623 0x01d8e0aa 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00012 -2.24 12
|
||||
13 31 2 4194304 2097152 2064847 0x0027fdfb 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00022 -2.39 22
|
||||
14 33 0 16777216 2097152 2088973 0x04d07c60 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00001 -2.74 13
|
||||
15 33 0 16777216 2097152 2088959 0x002b5d5d 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00000 2.46 19
|
||||
16 36 1 8388608 2097152 2080712 0x05de5e64 4 0.000002 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 0.99997 1.81 3
|
||||
17 36 1 8388608 2097152 2080944 0x06b26a12 4 0.000002 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00008 2.26 21
|
||||
18 38 2 4194304 2097152 2064895 0x0a4b211d 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00025 -2.38 6
|
||||
19 38 2 4194304 2097152 2064767 0x0b1e9590 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00019 -2.15 25
|
||||
20 43 2 4194304 2097152 2064538 0x00002183 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00007 2.47 15
|
||||
21 43 2 4194304 2097152 2064785 0x00f2fa9c 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00019 1.40 24
|
||||
22 45 0 16777216 2097152 2088974 0x0232deed 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00001 -2.78 10
|
||||
23 45 0 16777216 2097152 2088823 0x082dfbc8 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99993 -2.57 12
|
||||
24 46 1 8388608 2097152 2080831 0x05307add 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00003 2.35 26
|
||||
25 46 1 8388608 2097152 2080972 0x02c7003f 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00010 -2.73 13
|
||||
26 49 2 4194304 2097152 2064869 0x0ce514d8 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00023 3.14 1
|
||||
27 49 2 4194304 2097152 2064825 0x0d1a398d 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00021 -1.92 18
|
||||
28 51 1 8388608 2097152 2081035 0x036f523c 4 0.000002 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00013 -2.44 22
|
||||
29 51 1 8388608 2097152 2080904 0x007d72c3 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00007 -2.38 17
|
||||
30 58 2 4194304 2097152 2064698 0x0fb2a665 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00015 -2.02 18
|
||||
31 58 2 4194304 2097152 2064756 0x0d9fb4df 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00018 2.81 4
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003920 of reads; flat control 0.003072 (ratio 1.2759x), windowed control 0.003916 (ratio 1.0008x; the gate 1.2x); min site distinct ratio 0.99990 (floors 0.98 and 0.995); worst index bit inside its window 3.90 sigma at site 11 bit 9 (the band 6)
|
||||
# program: reads 67108864, distinct items 16068557, worst site 0 address 0x04e14ec7 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4774, 64 MiB 0.1605; the per-site ideal caches summed: 1.0000, 1.0000, 0.6346; 38.1 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program f8e8969443448ecb class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 10 262144 261667 0x0342068e 3 0.000011
|
||||
0 1 10 262144 261665 0x037fe51f 2 0.000008
|
||||
# worst cell: iteration 0 site 0 address 0x0342068e in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 10 2 4194304 2097152 2064542 0x015c50c8 4 0.000002 1.0000 1.0000 0.7135 1.0000 1.0000 0.2500 1.00008 1.73 11
|
||||
1 10 2 4194304 2097152 2064770 0x020b2e49 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00019 1.63 7
|
||||
2 16 0 16777216 2097152 2089059 0x06fd1db0 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00005 2.34 17
|
||||
3 16 0 16777216 2097152 2088990 0x07e58ba5 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00001 -2.10 10
|
||||
4 17 0 16777216 2097152 2088994 0x0fd5d743 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00002 -1.94 25
|
||||
5 17 0 16777216 2097152 2089076 0x00f95406 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00006 -1.74 10
|
||||
6 21 2 4194304 2097152 2064659 0x06a054ca 5 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00013 -1.93 6
|
||||
7 21 2 4194304 2097152 2064885 0x05a7e0c2 3 0.000001 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00024 2.54 1
|
||||
8 23 1 8388608 2097152 2080870 0x0b827be5 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00005 2.19 17
|
||||
9 23 1 8388608 2097152 2080956 0x0c78df5f 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00009 -2.98 8
|
||||
10 28 0 16777216 2097152 2088984 0x0cb359c8 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00001 -2.26 18
|
||||
11 28 0 16777216 2097152 2088903 0x0638beab 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99997 1.54 2
|
||||
12 29 0 16777216 2097152 2088841 0x01838b36 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99994 -2.28 4
|
||||
13 29 0 16777216 2097152 2088956 0x0e442134 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00000 3.31 19
|
||||
14 33 1 8388608 2097152 2080793 0x001b8dc0 4 0.000002 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00001 -2.16 11
|
||||
15 33 1 8388608 2097152 2081029 0x04edfa10 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00013 2.26 24
|
||||
16 34 0 16777216 2097152 2089107 0x0dd04c77 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00007 2.56 13
|
||||
17 34 0 16777216 2097152 2088893 0x0ae5097a 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99997 -2.69 19
|
||||
18 35 0 16777216 2097152 2089009 0x0bb3b40d 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00002 -2.43 23
|
||||
19 35 0 16777216 2097152 2088933 0x070a0621 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99999 -2.19 24
|
||||
20 37 0 16777216 2097152 2089027 0x03099106 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00003 2.22 7
|
||||
21 37 0 16777216 2097152 2088999 0x08d383ff 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00002 -1.53 13
|
||||
22 40 1 8388608 2097152 2081031 0x0e4fb3b6 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00013 2.33 15
|
||||
23 40 1 8388608 2097152 2080995 0x0d096fc6 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00011 -1.96 24
|
||||
24 41 1 8388608 2097152 2080943 0x02b4d894 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00008 -2.94 22
|
||||
25 41 1 8388608 2097152 2080678 0x054cd53d 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99996 -2.78 8
|
||||
26 54 2 4194304 2097152 2064942 0x07779f4e 4 0.000002 1.0000 1.0000 0.7125 1.0000 1.0000 0.2500 1.00027 1.74 11
|
||||
27 54 2 4194304 2097152 2064927 0x076d6cc7 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00026 -1.95 22
|
||||
28 61 0 16777216 2097152 2089030 0x0bed0704 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00003 -1.96 8
|
||||
29 61 0 16777216 2097152 2088963 0x0192583c 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00000 2.10 26
|
||||
30 62 2 4194304 2097152 2064643 0x0cad5999 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00013 2.80 22
|
||||
31 62 2 4194304 2097152 2064563 0x0c00d56f 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00009 2.03 6
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003237 of reads; flat control 0.003071 (ratio 1.0540x), windowed control 0.003238 (ratio 0.9997x; the gate 1.2x); min site distinct ratio 0.99994 (floors 0.98 and 0.995); worst index bit inside its window 3.31 sigma at site 13 bit 19 (the band 6)
|
||||
# program: reads 67108864, distinct items 16386023, worst site 6 address 0x06a054ca in 5 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4271, 64 MiB 0.1370; the per-site ideal caches summed: 1.0000, 1.0000, 0.6120; 37.5 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 160649503341aaab class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 1 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 1 262144 261626 0x0c36e229 2 0.000008
|
||||
0 1 1 262144 261575 0x0c4df63a 2 0.000008
|
||||
# worst cell: iteration 0 site 5 address 0x051243d9 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 1 2 4194304 2097152 2064620 0x0f20f08a 3 0.000001 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00011 -1.75 0
|
||||
1 1 2 4194304 2097152 2064664 0x0e3c2793 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00014 -2.22 24
|
||||
2 8 1 8388608 2097152 2080742 0x05aa1636 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99999 2.43 4
|
||||
3 8 1 8388608 2097152 2080803 0x0174c4bf 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00002 2.23 5
|
||||
4 9 0 16777216 2097152 2089015 0x07bfc86f 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00003 2.56 3
|
||||
5 9 0 16777216 2097152 2089059 0x027b30bc 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00005 2.13 11
|
||||
6 13 1 8388608 2097152 2080752 0x08a9e70c 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99999 -1.82 22
|
||||
7 13 1 8388608 2097152 2080802 0x0d6c89d5 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00002 2.45 0
|
||||
8 22 0 16777216 2097152 2089102 0x07323aba 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00007 -2.58 8
|
||||
9 22 0 16777216 2097152 2089143 0x0a707102 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00009 -2.02 24
|
||||
10 26 2 4194304 2097152 2064711 0x0f35989a 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00016 -2.87 25
|
||||
11 26 2 4194304 2097152 2064898 0x0e10140d 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00025 -2.79 1
|
||||
12 33 0 16777216 2097152 2088937 0x0cc52d13 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99999 -1.77 0
|
||||
13 33 0 16777216 2097152 2089065 0x0451d2fd 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00005 -2.38 13
|
||||
14 34 1 8388608 2097152 2080864 0x0a1af540 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00005 -2.69 2
|
||||
15 34 1 8388608 2097152 2080867 0x0a3d0ae9 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00005 2.95 21
|
||||
16 35 0 16777216 2097152 2088945 0x025f3be0 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99999 -1.83 23
|
||||
17 35 0 16777216 2097152 2089147 0x0c8f9740 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00009 -2.67 14
|
||||
18 44 1 8388608 2097152 2080826 0x02e56123 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00003 1.72 22
|
||||
19 44 1 8388608 2097152 2080916 0x01310f61 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00007 -2.93 11
|
||||
20 46 0 16777216 2097152 2089144 0x03bd5597 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00009 2.14 12
|
||||
21 46 0 16777216 2097152 2088957 0x09024473 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00000 2.32 5
|
||||
22 50 0 16777216 2097152 2088845 0x0445d9d5 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99994 2.80 23
|
||||
23 50 0 16777216 2097152 2089093 0x04df6ce7 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00006 2.74 17
|
||||
24 54 0 16777216 2097152 2088933 0x0a07a102 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99999 -2.02 2
|
||||
25 54 0 16777216 2097152 2089030 0x0c1379f3 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00003 -3.44 1
|
||||
26 55 0 16777216 2097152 2088878 0x085501a8 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99996 -3.12 25
|
||||
27 55 0 16777216 2097152 2088948 0x0bbd318e 4 0.000002 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99999 -2.15 15
|
||||
28 60 2 4194304 2097152 2064493 0x08396e6d 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00005 -2.12 20
|
||||
29 60 2 4194304 2097152 2064724 0x0868b1b5 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00016 -2.12 0
|
||||
30 63 0 16777216 2097152 2089012 0x0678c249 3 0.000001 1.0000 1.0000 0.5597 1.0000 0.2500 0.0625 1.00002 -1.83 13
|
||||
31 63 0 16777216 2097152 2089134 0x02233538 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00008 2.22 15
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003338 of reads; flat control 0.003075 (ratio 1.0854x), windowed control 0.003341 (ratio 0.9990x; the gate 1.2x); min site distinct ratio 0.99994 (floors 0.98 and 0.995); worst index bit inside its window -3.44 sigma at site 25 bit 1 (the band 6)
|
||||
# program: reads 67108864, distinct items 16370394, worst site 1 address 0x0e3c2793 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4315, 64 MiB 0.1391; the per-site ideal caches summed: 1.0000, 1.0000, 0.6025; 37.7 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 62aa0bfc93f13028 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 2 262144 262018 0x0e42540a 2 0.000008
|
||||
0 1 2 262144 262009 0x0e87042e 2 0.000008
|
||||
# worst cell: iteration 0 site 3 address 0x0bd48627 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 2 0 16777216 2097152 2089004 0x0cd23206 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00002 -3.31 11
|
||||
1 2 0 16777216 2097152 2089074 0x01eacf3c 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00005 -3.36 10
|
||||
2 14 2 4194304 2097152 2064697 0x08bdfbf3 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00015 -2.16 3
|
||||
3 14 2 4194304 2097152 2064991 0x0adf7230 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00029 -2.24 2
|
||||
4 15 1 8388608 2097152 2080753 0x0b5b8ced 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 0.99999 3.46 15
|
||||
5 15 1 8388608 2097152 2080866 0x0eb45afa 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00005 -3.01 9
|
||||
6 16 0 16777216 2097152 2088985 0x09e312bd 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00001 -2.32 21
|
||||
7 16 0 16777216 2097152 2089013 0x0e41d3af 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00003 -3.46 23
|
||||
8 21 0 16777216 2097152 2089074 0x0233b8e7 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00005 3.40 15
|
||||
9 21 0 16777216 2097152 2088934 0x04dda3e6 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 0.99999 -2.18 24
|
||||
10 26 2 4194304 2097152 2064727 0x00d5209f 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00017 2.10 15
|
||||
11 26 2 4194304 2097152 2064833 0x0282a4be 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00022 -1.77 15
|
||||
12 30 0 16777216 2097152 2088776 0x0486d4e0 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 0.99991 -3.05 1
|
||||
13 30 0 16777216 2097152 2089051 0x05d602a3 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00004 2.14 17
|
||||
14 32 2 4194304 2097152 2064617 0x06a3fec8 4 0.000002 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00011 -2.67 2
|
||||
15 32 2 4194304 2097152 2064708 0x05c925e7 4 0.000002 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00016 3.15 21
|
||||
16 36 1 8388608 2097152 2080776 0x08c73031 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00000 1.81 2
|
||||
17 36 1 8388608 2097152 2080754 0x0de40a50 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99999 1.74 26
|
||||
18 39 2 4194304 2097152 2064597 0x000af8f5 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00010 2.75 18
|
||||
19 39 2 4194304 2097152 2064470 0x005eaed8 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00004 -2.00 19
|
||||
20 44 1 8388608 2097152 2080775 0x007f50dc 3 0.000001 1.0000 1.0000 0.6157 1.0000 0.5000 0.1250 1.00000 -1.98 0
|
||||
21 44 1 8388608 2097152 2080944 0x070ee707 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00008 2.92 4
|
||||
22 45 1 8388608 2097152 2080867 0x062f7ddd 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00005 -2.07 18
|
||||
23 45 1 8388608 2097152 2081022 0x075a2ba5 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00012 1.94 18
|
||||
24 50 0 16777216 2097152 2089068 0x0fee120f 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00005 2.18 17
|
||||
25 50 0 16777216 2097152 2088928 0x0a8c8847 4 0.000002 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99998 1.97 2
|
||||
26 60 1 8388608 2097152 2080743 0x0e047ef5 4 0.000002 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 0.99999 -2.67 15
|
||||
27 60 1 8388608 2097152 2080946 0x08edd8b2 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00009 2.95 9
|
||||
28 61 0 16777216 2097152 2088889 0x0a37d852 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99997 -1.90 17
|
||||
29 61 0 16777216 2097152 2088952 0x0961c7e8 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00000 1.94 11
|
||||
30 63 1 8388608 2097152 2081084 0x0e81d734 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00015 -2.27 16
|
||||
31 63 1 8388608 2097152 2080785 0x0e871b55 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00001 2.09 7
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003156 of reads; flat control 0.003075 (ratio 1.0264x), windowed control 0.003160 (ratio 0.9988x; the gate 1.2x); min site distinct ratio 0.99991 (floors 0.98 and 0.995); worst index bit inside its window 3.46 sigma at site 4 bit 15 (the band 6)
|
||||
# program: reads 67108864, distinct items 16429212, worst site 2 address 0x08bdfbf3 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4212, 64 MiB 0.1338; the per-site ideal caches summed: 1.0000, 1.0000, 0.6190; 37.5 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 3f1af0bbaaef74fa class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 3 262144 262002 0x07f134b1 2 0.000008
|
||||
0 1 3 262144 262012 0x0a8848bb 2 0.000008
|
||||
# worst cell: iteration 0 site 2 address 0x0f8343d0 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 3 0 16777216 2097152 2088996 0x0cbb59da 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00002 2.18 1
|
||||
1 3 0 16777216 2097152 2089183 0x0a718089 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00011 2.08 11
|
||||
2 5 1 8388608 2097152 2080847 0x0fb1f63d 4 0.000002 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00004 3.27 5
|
||||
3 5 1 8388608 2097152 2080897 0x0d06ab75 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00006 -2.05 24
|
||||
4 13 2 4194304 2097152 2064814 0x05e5885b 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00021 -2.58 4
|
||||
5 13 2 4194304 2097152 2064602 0x047ac946 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00011 -1.81 5
|
||||
6 15 2 4194304 2097152 2064413 0x0b1385e8 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00001 -2.35 15
|
||||
7 15 2 4194304 2097152 2064991 0x0a8c2bdc 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00029 1.95 5
|
||||
8 16 2 4194304 2097152 2064808 0x0e3d532a 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00021 -2.07 6
|
||||
9 16 2 4194304 2097152 2064803 0x0f1eb20a 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00020 -2.16 20
|
||||
10 24 0 16777216 2097152 2088991 0x0550bb50 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00001 -3.16 1
|
||||
11 24 0 16777216 2097152 2088858 0x0d44845f 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99995 -2.00 20
|
||||
12 33 2 4194304 2097152 2064743 0x0fcb1fc5 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00017 2.21 4
|
||||
13 33 2 4194304 2097152 2064971 0x0d9a081b 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00028 -2.21 19
|
||||
14 37 1 8388608 2097152 2080823 0x08014036 4 0.000002 1.0000 1.0000 0.6158 1.0000 0.5000 0.1250 1.00003 2.52 4
|
||||
15 37 1 8388608 2097152 2080830 0x0c1b3d35 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00003 1.48 5
|
||||
16 44 2 4194304 2097152 2064369 0x0f89e882 4 0.000002 1.0000 1.0000 0.7135 1.0000 1.0000 0.2500 0.99999 -2.00 7
|
||||
17 44 2 4194304 2097152 2064584 0x0d4704d5 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00010 2.59 18
|
||||
18 45 2 4194304 2097152 2064707 0x0a38b699 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00016 2.00 7
|
||||
19 45 2 4194304 2097152 2064395 0x088409e8 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00001 2.25 3
|
||||
20 51 2 4194304 2097152 2064454 0x00cb2b66 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00003 2.08 23
|
||||
21 51 2 4194304 2097152 2064670 0x0034b787 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00014 2.21 2
|
||||
22 53 1 8388608 2097152 2080753 0x0696b0ab 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 0.99999 -2.50 9
|
||||
23 53 1 8388608 2097152 2080886 0x005b4fa2 4 0.000002 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00006 1.75 7
|
||||
24 57 0 16777216 2097152 2088898 0x0bb45708 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99997 2.93 25
|
||||
25 57 0 16777216 2097152 2089068 0x0e8a9b07 3 0.000001 1.0000 1.0000 0.5597 1.0000 0.2500 0.0625 1.00005 1.83 2
|
||||
26 59 0 16777216 2097152 2088887 0x022c48f7 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99997 3.26 1
|
||||
27 59 0 16777216 2097152 2088972 0x07d98200 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00001 2.05 16
|
||||
28 61 0 16777216 2097152 2088836 0x053563a9 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99994 -2.43 12
|
||||
29 61 0 16777216 2097152 2088824 0x0e2d271f 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99993 -2.10 19
|
||||
30 62 0 16777216 2097152 2088923 0x033cc4ac 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99998 -2.29 15
|
||||
31 62 0 16777216 2097152 2088953 0x04cd2576 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00000 -1.60 6
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003436 of reads; flat control 0.003070 (ratio 1.1192x), windowed control 0.003432 (ratio 1.0014x; the gate 1.2x); min site distinct ratio 0.99993 (floors 0.98 and 0.995); worst index bit inside its window 3.27 sigma at site 2 bit 5 (the band 6)
|
||||
# program: reads 67108864, distinct items 16295799, worst site 2 address 0x0fb1f63d in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4418, 64 MiB 0.1426; the per-site ideal caches summed: 1.0000, 1.0000, 0.6373; 37.1 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,67 @@
|
|||
# liveness: program 4de7b836cc40a4ea class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw registers 64 day bytes:69676e65756d2d6461792ffa50000000000000 dataset 2^28 words (memory-hard) headers 4 warps 16 threads 32 probe words 2
|
||||
reg probes first_load_changed hash_changed least_changed_load least_changed_frac
|
||||
0 4096 1.000000 1.000000 0 1.000000
|
||||
1 4096 1.000000 1.000000 0 1.000000
|
||||
2 4096 1.000000 1.000000 0 1.000000
|
||||
3 4096 1.000000 1.000000 0 1.000000
|
||||
4 4096 1.000000 1.000000 0 1.000000
|
||||
5 4096 1.000000 1.000000 0 1.000000
|
||||
6 4096 1.000000 1.000000 0 1.000000
|
||||
7 4096 1.000000 1.000000 0 1.000000
|
||||
8 4096 1.000000 1.000000 0 1.000000
|
||||
9 4096 1.000000 1.000000 0 1.000000
|
||||
10 4096 1.000000 1.000000 0 1.000000
|
||||
11 4096 1.000000 1.000000 0 1.000000
|
||||
12 4096 1.000000 1.000000 0 1.000000
|
||||
13 4096 1.000000 1.000000 0 1.000000
|
||||
14 4096 1.000000 1.000000 0 1.000000
|
||||
15 4096 1.000000 1.000000 0 1.000000
|
||||
16 4096 1.000000 1.000000 0 1.000000
|
||||
17 4096 1.000000 1.000000 0 1.000000
|
||||
18 4096 1.000000 1.000000 0 1.000000
|
||||
19 4096 1.000000 1.000000 0 1.000000
|
||||
20 4096 1.000000 1.000000 0 1.000000
|
||||
21 4096 1.000000 1.000000 0 1.000000
|
||||
22 4096 1.000000 1.000000 0 1.000000
|
||||
23 4096 1.000000 1.000000 0 1.000000
|
||||
24 4096 1.000000 1.000000 0 1.000000
|
||||
25 4096 1.000000 1.000000 0 1.000000
|
||||
26 4096 1.000000 1.000000 0 1.000000
|
||||
27 4096 1.000000 1.000000 0 1.000000
|
||||
28 4096 1.000000 1.000000 0 1.000000
|
||||
29 4096 1.000000 1.000000 0 1.000000
|
||||
30 4096 1.000000 1.000000 0 1.000000
|
||||
31 4096 1.000000 1.000000 0 1.000000
|
||||
32 4096 1.000000 1.000000 0 1.000000
|
||||
33 4096 1.000000 1.000000 0 1.000000
|
||||
34 4096 1.000000 1.000000 0 1.000000
|
||||
35 4096 1.000000 1.000000 0 1.000000
|
||||
36 4096 1.000000 1.000000 0 1.000000
|
||||
37 4096 1.000000 1.000000 0 1.000000
|
||||
38 4096 1.000000 1.000000 0 1.000000
|
||||
39 4096 1.000000 1.000000 0 1.000000
|
||||
40 4096 1.000000 1.000000 0 1.000000
|
||||
41 4096 1.000000 1.000000 0 1.000000
|
||||
42 4096 1.000000 1.000000 0 1.000000
|
||||
43 4096 1.000000 1.000000 0 1.000000
|
||||
44 4096 1.000000 1.000000 0 1.000000
|
||||
45 4096 1.000000 1.000000 0 1.000000
|
||||
46 4096 1.000000 1.000000 0 1.000000
|
||||
47 4096 1.000000 1.000000 0 1.000000
|
||||
48 4096 1.000000 1.000000 0 1.000000
|
||||
49 4096 1.000000 1.000000 0 1.000000
|
||||
50 4096 1.000000 1.000000 0 1.000000
|
||||
51 4096 1.000000 1.000000 0 1.000000
|
||||
52 4096 1.000000 1.000000 0 1.000000
|
||||
53 4096 1.000000 1.000000 0 1.000000
|
||||
54 4096 1.000000 1.000000 0 1.000000
|
||||
55 4096 1.000000 1.000000 0 1.000000
|
||||
56 4096 1.000000 1.000000 0 1.000000
|
||||
57 4096 1.000000 1.000000 0 1.000000
|
||||
58 4096 1.000000 1.000000 0 1.000000
|
||||
59 4096 1.000000 1.000000 0 1.000000
|
||||
60 4096 1.000000 1.000000 0 1.000000
|
||||
61 4096 1.000000 1.000000 0 1.000000
|
||||
62 4096 1.000000 1.000000 0 1.000000
|
||||
63 4096 1.000000 1.000000 0 1.000000
|
||||
# verdict: 64 registers over 4096 probes each; first-load address changed in 1.000000 of lanes at the least live register, the hash in 1.000000; the least changed (register, first-iteration load) is (0, 0) at 1.000000; LIVE on live data (every register moves every lane's first address and hash); 18.3 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -0,0 +1,67 @@
|
|||
# liveness: program 2b406490ba8d3c91 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw registers 64 day 2026-10-03 dataset 2^28 words (memory-hard) headers 2 warps 8 threads 32 probe words 2
|
||||
reg probes first_load_changed hash_changed least_changed_load least_changed_frac
|
||||
0 1024 1.000000 1.000000 0 1.000000
|
||||
1 1024 1.000000 1.000000 0 1.000000
|
||||
2 1024 1.000000 1.000000 0 1.000000
|
||||
3 1024 1.000000 1.000000 0 1.000000
|
||||
4 1024 1.000000 1.000000 0 1.000000
|
||||
5 1024 1.000000 1.000000 0 1.000000
|
||||
6 1024 1.000000 1.000000 0 1.000000
|
||||
7 1024 1.000000 1.000000 0 1.000000
|
||||
8 1024 1.000000 1.000000 0 1.000000
|
||||
9 1024 1.000000 1.000000 0 1.000000
|
||||
10 1024 1.000000 1.000000 0 1.000000
|
||||
11 1024 1.000000 1.000000 0 1.000000
|
||||
12 1024 1.000000 1.000000 0 1.000000
|
||||
13 1024 1.000000 1.000000 0 1.000000
|
||||
14 1024 1.000000 1.000000 0 1.000000
|
||||
15 1024 1.000000 1.000000 0 1.000000
|
||||
16 1024 1.000000 1.000000 0 1.000000
|
||||
17 1024 1.000000 1.000000 0 1.000000
|
||||
18 1024 1.000000 1.000000 0 1.000000
|
||||
19 1024 1.000000 1.000000 0 1.000000
|
||||
20 1024 1.000000 1.000000 0 1.000000
|
||||
21 1024 1.000000 1.000000 0 1.000000
|
||||
22 1024 1.000000 1.000000 0 1.000000
|
||||
23 1024 1.000000 1.000000 0 1.000000
|
||||
24 1024 1.000000 1.000000 0 1.000000
|
||||
25 1024 1.000000 1.000000 0 1.000000
|
||||
26 1024 1.000000 1.000000 0 1.000000
|
||||
27 1024 1.000000 1.000000 0 1.000000
|
||||
28 1024 1.000000 1.000000 0 1.000000
|
||||
29 1024 1.000000 1.000000 0 1.000000
|
||||
30 1024 1.000000 1.000000 0 1.000000
|
||||
31 1024 1.000000 1.000000 0 1.000000
|
||||
32 1024 1.000000 1.000000 0 1.000000
|
||||
33 1024 1.000000 1.000000 0 1.000000
|
||||
34 1024 1.000000 1.000000 0 1.000000
|
||||
35 1024 1.000000 1.000000 0 1.000000
|
||||
36 1024 1.000000 1.000000 0 1.000000
|
||||
37 1024 1.000000 1.000000 0 1.000000
|
||||
38 1024 1.000000 1.000000 0 1.000000
|
||||
39 1024 1.000000 1.000000 0 1.000000
|
||||
40 1024 1.000000 1.000000 0 1.000000
|
||||
41 1024 1.000000 1.000000 0 1.000000
|
||||
42 1024 1.000000 1.000000 0 1.000000
|
||||
43 1024 1.000000 1.000000 0 1.000000
|
||||
44 1024 1.000000 1.000000 0 1.000000
|
||||
45 1024 1.000000 1.000000 0 1.000000
|
||||
46 1024 1.000000 1.000000 0 1.000000
|
||||
47 1024 1.000000 1.000000 0 1.000000
|
||||
48 1024 1.000000 1.000000 0 1.000000
|
||||
49 1024 1.000000 1.000000 0 1.000000
|
||||
50 1024 1.000000 1.000000 0 1.000000
|
||||
51 1024 1.000000 1.000000 0 1.000000
|
||||
52 1024 1.000000 1.000000 0 1.000000
|
||||
53 1024 1.000000 1.000000 0 1.000000
|
||||
54 1024 1.000000 1.000000 0 1.000000
|
||||
55 1024 1.000000 1.000000 0 1.000000
|
||||
56 1024 1.000000 1.000000 0 1.000000
|
||||
57 1024 1.000000 1.000000 0 1.000000
|
||||
58 1024 1.000000 1.000000 0 1.000000
|
||||
59 1024 1.000000 1.000000 0 1.000000
|
||||
60 1024 1.000000 1.000000 0 1.000000
|
||||
61 1024 1.000000 1.000000 0 1.000000
|
||||
62 1024 1.000000 1.000000 0 1.000000
|
||||
63 1024 1.000000 1.000000 0 1.000000
|
||||
# verdict: 64 registers over 1024 probes each; first-load address changed in 1.000000 of lanes at the least live register, the hash in 1.000000; the least changed (register, first-iteration load) is (0, 0) at 1.000000; LIVE on live data (every register moves every lane's first address and hash); 4.7 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -0,0 +1,5 @@
|
|||
canary-p18 # F8 form 16 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 1 --warps 256 --threads 16 --seed igneum-attack-f8/program/18 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
object-h4 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --header-from 4 --warps 8192 --threads 32 --epoch-hex edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
liveness-object-h4 # verdict 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow liveness --count 4 --header-from 4 --warps 16 --threads 32 --epoch-hex edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p26 27 28 29 30 31 32 33 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/26 27 28 29 30 31 32 33 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
liveness-p26 # verdict 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow liveness --count 2 --warps 8 --threads 32 --seed igneum-attack-f8/program/26 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
seed-p26 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/26 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p27 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/27 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p28 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/28 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p29 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/29 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p30 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/30 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p31 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/31 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p32 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/32 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
seed-p33 # F8 form 32 env IGNEUM_FAMILY_GATE=1 /srv/builds/v6-census/bin/all4-b819c23a/igneum-pow addrsite --count 4 --warps 2048 --threads 32 --seed igneum-attack-f8/program/33 --day-hex 69676e65756d2d6461792ffa50000000000000 --class mx8+sh256x27+state+reg64c+fold+rw --era 0:edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07 --state /srv/builds/v6-census/packs/node1-state.igsd1
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 4de7b836cc40a4ea class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day bytes:69676e65756d2d6461792ffa50000000000000 dataset 2^28 words (memory-hard) headers 4 warps 8192 nonces/header 262144 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 7 1048576 1044536 0x0e05c4a9 3 0.000003
|
||||
0 1 7 1048576 1044607 0x08697f24 3 0.000003
|
||||
# worst cell: iteration 0 site 28 address 0x0f45e0db in 4 reads, share 0.000004
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 7 1 8388608 8388608 8131224 0x08f95f48 4 0.000000 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00059 -2.28 12
|
||||
1 7 1 8388608 8388608 8132204 0x0a60bde7 4 0.000000 1.0000 0.8678 0.3536 1.0000 0.5000 0.1250 1.00071 -2.24 21
|
||||
2 8 1 8388608 8388608 8132174 0x0d9d2d01 5 0.000001 1.0000 0.8680 0.3536 1.0000 0.5000 0.1250 1.00070 -2.48 13
|
||||
3 8 1 8388608 8388608 8131438 0x0899c671 5 0.000001 1.0000 0.8678 0.3536 1.0000 0.5000 0.1250 1.00061 -2.83 6
|
||||
4 9 0 16777216 8388608 8258753 0x08a8b28d 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00015 1.88 14
|
||||
5 9 0 16777216 8388608 8259388 0x03d1dc2b 4 0.000000 1.0000 0.7131 0.2827 1.0000 0.2500 0.0625 1.00022 2.64 25
|
||||
6 10 1 8388608 8388608 8132147 0x0ee46b12 5 0.000001 1.0000 0.8679 0.3536 1.0000 0.5000 0.1250 1.00070 1.88 15
|
||||
7 10 1 8388608 8388608 8132252 0x087b47fa 4 0.000000 1.0000 0.8679 0.3536 1.0000 0.5000 0.1250 1.00071 2.82 7
|
||||
8 11 2 4194304 8388608 7885782 0x07578642 5 0.000001 1.0000 1.0000 0.4839 1.0000 1.0000 0.2500 1.00273 -2.39 1
|
||||
9 11 2 4194304 8388608 7884591 0x048afc00 5 0.000001 1.0000 1.0000 0.4841 1.0000 1.0000 0.2500 1.00258 -3.06 1
|
||||
10 13 1 8388608 8388608 8131079 0x02be2d07 4 0.000000 1.0000 0.8681 0.3537 1.0000 0.5000 0.1250 1.00057 -2.24 7
|
||||
11 13 1 8388608 8388608 8131565 0x04d6955b 4 0.000000 1.0000 0.8680 0.3538 1.0000 0.5000 0.1250 1.00063 -1.87 17
|
||||
12 29 0 16777216 8388608 8259329 0x08f9a4bf 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00022 1.99 25
|
||||
13 29 0 16777216 8388608 8258841 0x0a5492cf 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00016 -2.54 14
|
||||
14 30 1 8388608 8388608 8131950 0x02134f18 5 0.000001 1.0000 0.8677 0.3535 1.0000 0.5000 0.1250 1.00068 -2.31 16
|
||||
15 30 1 8388608 8388608 8132719 0x04eec855 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00077 -2.37 24
|
||||
16 31 1 8388608 8388608 8131259 0x055f81c2 4 0.000000 1.0000 0.8680 0.3537 1.0000 0.5000 0.1250 1.00059 2.65 23
|
||||
17 31 1 8388608 8388608 8132146 0x00887025 5 0.000001 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00070 -2.40 24
|
||||
18 44 1 8388608 8388608 8132643 0x06da0c02 4 0.000000 1.0000 0.8679 0.3537 1.0000 0.5000 0.1250 1.00076 -2.11 11
|
||||
19 44 1 8388608 8388608 8131442 0x033fda08 4 0.000000 1.0000 0.8678 0.3537 1.0000 0.5000 0.1250 1.00061 -2.04 20
|
||||
20 46 1 8388608 8388608 8132391 0x00647e1d 5 0.000001 1.0000 0.8680 0.3538 1.0000 0.5000 0.1250 1.00073 2.73 24
|
||||
21 46 1 8388608 8388608 8131479 0x0436441b 6 0.000001 1.0000 0.8678 0.3536 1.0000 0.5000 0.1250 1.00062 2.56 17
|
||||
22 47 2 4194304 8388608 7885914 0x0173a911 5 0.000001 1.0000 1.0000 0.4842 1.0000 1.0000 0.2500 1.00275 -1.67 11
|
||||
23 47 2 4194304 8388608 7885359 0x01fa7113 5 0.000001 1.0000 1.0000 0.4839 1.0000 1.0000 0.2500 1.00268 -1.60 2
|
||||
24 52 0 16777216 8388608 8258931 0x08292ca1 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00017 2.73 11
|
||||
25 52 0 16777216 8388608 8258747 0x064542dc 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00015 -2.33 0
|
||||
26 56 0 16777216 8388608 8259124 0x084f5e4c 4 0.000000 1.0000 0.7131 0.2827 1.0000 0.2500 0.0625 1.00019 -1.40 5
|
||||
27 56 0 16777216 8388608 8259571 0x0eefc792 4 0.000000 1.0000 0.7130 0.2826 1.0000 0.2500 0.0625 1.00025 2.08 6
|
||||
28 58 1 8388608 8388608 8131558 0x0d472d62 4 0.000000 1.0000 0.8676 0.3535 1.0000 0.5000 0.1250 1.00063 -1.62 17
|
||||
29 58 1 8388608 8388608 8132744 0x0ac6b454 5 0.000001 1.0000 0.8680 0.3536 1.0000 0.5000 0.1250 1.00077 -1.80 23
|
||||
30 63 0 16777216 8388608 8258365 0x077876fc 4 0.000000 1.0000 0.7130 0.2827 1.0000 0.2500 0.0625 1.00010 2.87 25
|
||||
31 63 0 16777216 8388608 8258808 0x011e117e 4 0.000000 1.0000 0.7130 0.2827 1.0000 0.2500 0.0625 1.00015 2.46 27
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.002140 of reads; flat control 0.001944 (ratio 1.1005x), windowed control 0.002141 (ratio 0.9995x; the gate 1.2x); min site distinct ratio 1.00010 (floors 0.98 and 0.995); worst index bit inside its window -3.06 sigma at site 9 bit 1 (the band 6)
|
||||
# program: reads 268435456, distinct items 16777198, worst site 21 address 0x0436441b in 6 reads (share 0.000001); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.3540, 64 MiB 0.1035; the per-site ideal caches summed: 1.0000, 0.8360, 0.3478; 213.8 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,38 @@
|
|||
# night driver start 21:56 UK host igneum-build-6 jobs 1
|
||||
start 1 canary-p18 21:56 UK
|
||||
end 1 canary-p18 rc 0 21:56 UK
|
||||
# night driver end 21:56 UK
|
||||
# night driver start 21:56 UK host igneum-build-6 jobs 5
|
||||
start 1 object-h4 21:56 UK
|
||||
end 1 object-h4 rc 0 22:00 UK
|
||||
start 1 liveness-object-h4 22:00 UK
|
||||
end 1 liveness-object-h4 rc 0 22:00 UK
|
||||
start 1 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
end 1 seed-p26 27 28 29 30 31 32 33 rc 2 22:00 UK
|
||||
restart 2 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
start 2 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
end 2 seed-p26 27 28 29 30 31 32 33 rc 2 22:00 UK
|
||||
restart 3 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
start 3 seed-p26 27 28 29 30 31 32 33 22:00 UK
|
||||
end 3 seed-p26 27 28 29 30 31 32 33 rc 2 22:00 UK
|
||||
start 1 liveness-p26 22:00 UK
|
||||
end 1 liveness-p26 rc 0 22:00 UK
|
||||
# night driver end 22:00 UK
|
||||
# night driver start 22:01 UK host igneum-build-6 jobs 8
|
||||
start 1 seed-p26 22:01 UK
|
||||
end 1 seed-p26 rc 0 22:02 UK
|
||||
start 1 seed-p27 22:02 UK
|
||||
end 1 seed-p27 rc 0 22:02 UK
|
||||
start 1 seed-p28 22:02 UK
|
||||
end 1 seed-p28 rc 0 22:03 UK
|
||||
start 1 seed-p29 22:03 UK
|
||||
end 1 seed-p29 rc 0 22:04 UK
|
||||
start 1 seed-p30 22:04 UK
|
||||
end 1 seed-p30 rc 0 22:05 UK
|
||||
start 1 seed-p31 22:05 UK
|
||||
end 1 seed-p31 rc 0 22:06 UK
|
||||
start 1 seed-p32 22:06 UK
|
||||
end 1 seed-p32 rc 0 22:07 UK
|
||||
start 1 seed-p33 22:07 UK
|
||||
end 1 seed-p33 rc 0 22:08 UK
|
||||
# night driver end 22:08 UK
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 2b406490ba8d3c91 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 3 262144 261881 0x0796afa2 2 0.000008
|
||||
0 1 3 262144 261869 0x01cee15a 2 0.000008
|
||||
# worst cell: iteration 0 site 6 address 0x0f26b8e6 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 3 1 8388608 2097152 2080650 0x0741db04 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 0.99994 2.85 24
|
||||
1 3 1 8388608 2097152 2080597 0x029d5b9c 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 0.99992 1.78 12
|
||||
2 7 2 4194304 2097152 2064742 0x0121006a 3 0.000001 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00017 -2.28 24
|
||||
3 7 2 4194304 2097152 2064903 0x03f3960e 4 0.000002 1.0000 1.0000 0.7125 1.0000 1.0000 0.2500 1.00025 -1.90 12
|
||||
4 10 0 16777216 2097152 2089002 0x002c876d 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00002 -2.20 5
|
||||
5 10 0 16777216 2097152 2088876 0x07df131c 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99996 1.78 11
|
||||
6 17 1 8388608 2097152 2080848 0x0884b4b7 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00004 -2.05 7
|
||||
7 17 1 8388608 2097152 2081059 0x0d8689c5 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00014 -2.04 4
|
||||
8 18 1 8388608 2097152 2080725 0x0977d37e 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 0.99998 2.78 23
|
||||
9 18 1 8388608 2097152 2080924 0x0b418382 4 0.000002 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00007 2.18 12
|
||||
10 19 1 8388608 2097152 2080842 0x08d357f6 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00004 -1.92 4
|
||||
11 19 1 8388608 2097152 2080982 0x0df9e9cd 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00010 1.58 0
|
||||
12 20 1 8388608 2097152 2081066 0x025615ff 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00014 -2.18 12
|
||||
13 20 1 8388608 2097152 2080599 0x01ff4b28 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99992 -1.92 1
|
||||
14 23 2 4194304 2097152 2064627 0x0a245421 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00012 3.51 14
|
||||
15 23 2 4194304 2097152 2064463 0x0a5c53c6 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00004 -2.44 2
|
||||
16 26 1 8388608 2097152 2080876 0x058fa156 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00005 2.43 7
|
||||
17 26 1 8388608 2097152 2080706 0x04338f74 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99997 2.00 12
|
||||
18 27 0 16777216 2097152 2089001 0x095e38fe 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00002 2.48 12
|
||||
19 27 0 16777216 2097152 2088914 0x06fa25cf 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99998 -2.19 27
|
||||
20 28 1 8388608 2097152 2080721 0x029a3077 3 0.000001 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 0.99998 -2.11 26
|
||||
21 28 1 8388608 2097152 2081033 0x001ea1b6 4 0.000002 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00013 2.67 15
|
||||
22 36 2 4194304 2097152 2064724 0x0cfd1910 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00016 -1.69 7
|
||||
23 36 2 4194304 2097152 2064729 0x0e8d39a5 4 0.000002 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00017 2.12 18
|
||||
24 39 1 8388608 2097152 2080666 0x07f5b296 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99995 -1.47 3
|
||||
25 39 1 8388608 2097152 2080855 0x03721473 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00004 2.67 18
|
||||
26 40 2 4194304 2097152 2064757 0x0d652b7d 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00018 2.01 5
|
||||
27 40 2 4194304 2097152 2064796 0x0e2a2c8c 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00020 1.88 7
|
||||
28 52 0 16777216 2097152 2089053 0x02e3b79a 4 0.000002 1.0000 1.0000 0.5597 1.0000 0.2500 0.0625 1.00004 3.61 20
|
||||
29 52 0 16777216 2097152 2089018 0x00cf2ad8 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00003 1.53 23
|
||||
30 56 2 4194304 2097152 2064646 0x06d6a083 4 0.000002 1.0000 1.0000 0.7125 1.0000 1.0000 0.2500 1.00013 1.94 8
|
||||
31 56 2 4194304 2097152 2064990 0x05536f11 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00029 2.82 23
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003129 of reads; flat control 0.003073 (ratio 1.0183x), windowed control 0.003129 (ratio 1.0003x; the gate 1.2x); min site distinct ratio 0.99992 (floors 0.98 and 0.995); worst index bit inside its window 3.61 sigma at site 28 bit 20 (the band 6)
|
||||
# program: reads 67108864, distinct items 16434319, worst site 3 address 0x03f3960e in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4196, 64 MiB 0.1328; the per-site ideal caches summed: 1.0000, 1.0000, 0.6354; 50.6 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program c38b57d654ad08d4 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 3 262144 261997 0x07d1eebf 2 0.000008
|
||||
0 1 3 262144 262019 0x0e939f6a 2 0.000008
|
||||
# worst cell: iteration 0 site 2 address 0x01c78316 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 3 0 16777216 2097152 2089066 0x038a399f 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00005 2.10 6
|
||||
1 3 0 16777216 2097152 2089052 0x00223010 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00004 -2.32 1
|
||||
2 5 1 8388608 2097152 2080951 0x031a0ba8 4 0.000002 1.0000 1.0000 0.6148 1.0000 0.5000 0.1250 1.00009 -2.01 1
|
||||
3 5 1 8388608 2097152 2080827 0x01cef2a6 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00003 1.85 25
|
||||
4 6 0 16777216 2097152 2088908 0x06f84932 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99998 -1.71 12
|
||||
5 6 0 16777216 2097152 2089038 0x0a9f3c2e 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00004 1.74 16
|
||||
6 8 2 4194304 2097152 2064774 0x06a7b797 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00019 2.13 23
|
||||
7 8 2 4194304 2097152 2065283 0x0540406b 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00044 -2.06 24
|
||||
8 18 0 16777216 2097152 2088890 0x0bf8b2ea 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99997 -2.90 16
|
||||
9 18 0 16777216 2097152 2088889 0x0ef39ae7 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99997 -1.77 20
|
||||
10 20 0 16777216 2097152 2088949 0x092b13a6 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99999 2.27 3
|
||||
11 20 0 16777216 2097152 2089093 0x062cbd71 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00006 -1.74 26
|
||||
12 39 1 8388608 2097152 2080772 0x045ba978 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00000 -2.34 14
|
||||
13 39 1 8388608 2097152 2080878 0x00133859 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00005 2.22 9
|
||||
14 45 1 8388608 2097152 2081020 0x0f39bd80 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00012 -2.29 2
|
||||
15 45 1 8388608 2097152 2080852 0x09dc13e3 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00004 2.11 0
|
||||
16 47 1 8388608 2097152 2080863 0x09e38573 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00005 -1.93 13
|
||||
17 47 1 8388608 2097152 2080695 0x0ccd34c5 3 0.000001 1.0000 1.0000 0.6157 1.0000 0.5000 0.1250 0.99996 2.01 20
|
||||
18 48 0 16777216 2097152 2088968 0x0ec9cce7 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00000 2.79 23
|
||||
19 48 0 16777216 2097152 2089007 0x07a0a4f2 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00002 1.83 7
|
||||
20 50 1 8388608 2097152 2080975 0x05fd559e 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00010 -2.56 19
|
||||
21 50 1 8388608 2097152 2080734 0x0286bedb 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 0.99998 2.80 1
|
||||
22 51 0 16777216 2097152 2089049 0x0121e88c 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00004 -2.09 9
|
||||
23 51 0 16777216 2097152 2088846 0x0732038a 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99995 2.45 19
|
||||
24 53 0 16777216 2097152 2088905 0x0b3dfd67 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99997 -1.75 9
|
||||
25 53 0 16777216 2097152 2088998 0x0872ca75 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00002 -2.30 5
|
||||
26 54 1 8388608 2097152 2080735 0x00baa42d 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 0.99998 -2.13 6
|
||||
27 54 1 8388608 2097152 2080896 0x0566331d 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00006 2.38 25
|
||||
28 59 2 4194304 2097152 2064408 0x0e2a3d91 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00001 2.85 13
|
||||
29 59 2 4194304 2097152 2064617 0x0f88d3d4 3 0.000001 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00011 2.61 7
|
||||
30 63 1 8388608 2097152 2080907 0x03195a58 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00007 2.18 5
|
||||
31 63 1 8388608 2097152 2080916 0x030e7e56 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00007 -2.03 6
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003348 of reads; flat control 0.003079 (ratio 1.0873x), windowed control 0.003344 (ratio 1.0010x; the gate 1.2x); min site distinct ratio 0.99995 (floors 0.98 and 0.995); worst index bit inside its window -2.90 sigma at site 8 bit 16 (the band 6)
|
||||
# program: reads 67108864, distinct items 16328481, worst site 2 address 0x031a0ba8 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4343, 64 MiB 0.1396; the per-site ideal caches summed: 1.0000, 1.0000, 0.6033; 50.8 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 96e4f7fdccef6fd1 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 4 262144 262014 0x0fef6e9b 2 0.000008
|
||||
0 1 4 262144 262012 0x0c0fc40d 2 0.000008
|
||||
# worst cell: iteration 0 site 7 address 0x03149070 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 4 0 16777216 2097152 2088962 0x0f297121 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00000 -2.85 15
|
||||
1 4 0 16777216 2097152 2088985 0x0ed393d0 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00001 -3.21 1
|
||||
2 8 1 8388608 2097152 2080764 0x030525f1 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00000 3.54 3
|
||||
3 8 1 8388608 2097152 2080858 0x067bb746 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00004 -2.62 18
|
||||
4 9 2 4194304 2097152 2064518 0x0dd0a987 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00006 -2.41 18
|
||||
5 9 2 4194304 2097152 2064686 0x0ec38ef5 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00015 -2.48 7
|
||||
6 11 2 4194304 2097152 2064652 0x003f4555 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00013 -2.27 0
|
||||
7 11 2 4194304 2097152 2064759 0x03c88d86 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00018 2.18 5
|
||||
8 12 0 16777216 2097152 2088812 0x0b0da342 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 0.99993 1.96 10
|
||||
9 12 0 16777216 2097152 2089058 0x068f7410 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00005 -2.50 13
|
||||
10 23 0 16777216 2097152 2088888 0x0089f2ab 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99997 1.50 15
|
||||
11 23 0 16777216 2097152 2088888 0x06daaad0 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99997 -1.89 0
|
||||
12 24 1 8388608 2097152 2080872 0x043fe3db 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00005 -1.85 15
|
||||
13 24 1 8388608 2097152 2080950 0x01ffb71c 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00009 -3.46 6
|
||||
14 26 1 8388608 2097152 2080924 0x0ceac1e0 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00007 1.83 4
|
||||
15 26 1 8388608 2097152 2080753 0x0f54ef61 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 0.99999 -1.66 23
|
||||
16 27 2 4194304 2097152 2064761 0x06ea3773 4 0.000002 1.0000 1.0000 0.7126 1.0000 1.0000 0.2500 1.00018 -1.84 3
|
||||
17 27 2 4194304 2097152 2064907 0x04b668aa 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00025 -1.92 5
|
||||
18 30 1 8388608 2097152 2080959 0x02a62f63 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00009 -2.76 20
|
||||
19 30 1 8388608 2097152 2080936 0x03b294e3 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00008 2.59 12
|
||||
20 37 0 16777216 2097152 2089043 0x07e38f1d 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00004 -3.09 0
|
||||
21 37 0 16777216 2097152 2088987 0x07cc45d0 3 0.000001 1.0000 1.0000 0.5597 1.0000 0.2500 0.0625 1.00001 2.34 1
|
||||
22 39 2 4194304 2097152 2064545 0x00823b70 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00008 2.16 5
|
||||
23 39 2 4194304 2097152 2064803 0x00354b28 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00020 2.46 22
|
||||
24 44 0 16777216 2097152 2089015 0x0f9cd92e 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00003 2.14 16
|
||||
25 44 0 16777216 2097152 2088808 0x0237ee9c 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99993 -3.99 11
|
||||
26 52 2 4194304 2097152 2065077 0x0b35596e 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00034 2.05 4
|
||||
27 52 2 4194304 2097152 2064762 0x09ecc32b 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00018 2.29 10
|
||||
28 53 1 8388608 2097152 2080801 0x0b3620c0 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00002 2.45 9
|
||||
29 53 1 8388608 2097152 2080894 0x0a454d53 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00006 -1.99 14
|
||||
30 63 2 4194304 2097152 2064520 0x034a2155 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00007 -2.38 25
|
||||
31 63 2 4194304 2097152 2064832 0x02c50431 4 0.000002 1.0000 1.0000 0.7126 1.0000 1.0000 0.2500 1.00022 1.66 14
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003499 of reads; flat control 0.003071 (ratio 1.1396x), windowed control 0.003498 (ratio 1.0005x; the gate 1.2x); min site distinct ratio 0.99993 (floors 0.98 and 0.995); worst index bit inside its window -3.99 sigma at site 25 bit 11 (the band 6)
|
||||
# program: reads 67108864, distinct items 16340448, worst site 2 address 0x030525f1 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4400, 64 MiB 0.1434; the per-site ideal caches summed: 1.0000, 1.0000, 0.6346; 50.1 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 3f922ac24b46d2c2 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 1 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 3 262144 261878 0x0c2ec6c7 2 0.000008
|
||||
0 1 3 262144 261865 0x0ef15836 3 0.000011
|
||||
# worst cell: iteration 0 site 1 address 0x0ef15836 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 3 1 8388608 2097152 2080901 0x0b8c7476 3 0.000001 1.0000 1.0000 0.6148 1.0000 0.5000 0.1250 1.00006 2.12 3
|
||||
1 3 1 8388608 2097152 2080842 0x0e0e9857 3 0.000001 1.0000 1.0000 0.6156 1.0000 0.5000 0.1250 1.00004 -2.70 13
|
||||
2 6 0 16777216 2097152 2088910 0x0ccf2db5 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 0.99998 2.21 22
|
||||
3 6 0 16777216 2097152 2088975 0x067df852 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00001 2.42 23
|
||||
4 9 0 16777216 2097152 2088942 0x0b41129a 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99999 1.71 0
|
||||
5 9 0 16777216 2097152 2088972 0x07e0c715 3 0.000001 1.0000 1.0000 0.5603 1.0000 0.2500 0.0625 1.00001 -2.30 24
|
||||
6 11 0 16777216 2097152 2088998 0x0b5b69b9 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00002 2.44 17
|
||||
7 11 0 16777216 2097152 2088921 0x0e92f974 4 0.000002 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99998 1.98 14
|
||||
8 12 0 16777216 2097152 2088931 0x0d9e4e72 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 0.99999 -1.66 5
|
||||
9 12 0 16777216 2097152 2088899 0x043a0980 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99997 -1.73 13
|
||||
10 19 1 8388608 2097152 2081053 0x0d78029b 4 0.000002 1.0000 1.0000 0.6148 1.0000 0.5000 0.1250 1.00014 1.94 1
|
||||
11 19 1 8388608 2097152 2080725 0x09ff33fa 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99998 1.97 8
|
||||
12 21 1 8388608 2097152 2080850 0x085bed84 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00004 2.29 20
|
||||
13 21 1 8388608 2097152 2080735 0x0cfb8ada 4 0.000002 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 0.99998 -1.89 25
|
||||
14 28 0 16777216 2097152 2089104 0x010e3e04 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00007 2.81 26
|
||||
15 28 0 16777216 2097152 2089028 0x0ff2d25e 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00003 2.24 16
|
||||
16 34 2 4194304 2097152 2064689 0x0226eb19 3 0.000001 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00015 2.50 12
|
||||
17 34 2 4194304 2097152 2064744 0x02f7f431 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00017 -2.07 3
|
||||
18 37 2 4194304 2097152 2064562 0x04069af3 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00009 -2.93 23
|
||||
19 37 2 4194304 2097152 2064860 0x077eea20 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00023 -2.24 19
|
||||
20 50 2 4194304 2097152 2064569 0x0b2e4e25 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00009 2.76 6
|
||||
21 50 2 4194304 2097152 2064719 0x0a183716 4 0.000002 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00016 -2.06 23
|
||||
22 53 2 4194304 2097152 2064699 0x0739628d 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00015 -1.62 21
|
||||
23 53 2 4194304 2097152 2064379 0x068d23d5 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00000 -1.92 15
|
||||
24 55 0 16777216 2097152 2089025 0x04daf1b2 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00003 -1.69 2
|
||||
25 55 0 16777216 2097152 2089136 0x0f760a24 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00008 3.00 18
|
||||
26 57 1 8388608 2097152 2081024 0x01e33a42 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00012 1.65 10
|
||||
27 57 1 8388608 2097152 2080955 0x033c7675 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00009 2.57 4
|
||||
28 59 2 4194304 2097152 2064717 0x0ec174b6 3 0.000001 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00016 2.24 2
|
||||
29 59 2 4194304 2097152 2064609 0x0e2fdb21 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00011 2.69 12
|
||||
30 62 1 8388608 2097152 2080947 0x0ae4acab 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00009 1.96 10
|
||||
31 62 1 8388608 2097152 2080771 0x0d5adff3 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00000 -1.68 7
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003169 of reads; flat control 0.003069 (ratio 1.0326x), windowed control 0.003168 (ratio 1.0004x; the gate 1.2x); min site distinct ratio 0.99997 (floors 0.98 and 0.995); worst index bit inside its window 3.00 sigma at site 25 bit 18 (the band 6)
|
||||
# program: reads 67108864, distinct items 16398093, worst site 7 address 0x0e92f974 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4241, 64 MiB 0.1350; the per-site ideal caches summed: 1.0000, 1.0000, 0.6251; 50.5 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program edd13a08477407cf class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 2 262144 261596 0x0e92237a 3 0.000011
|
||||
0 1 2 262144 261624 0x0e452649 3 0.000011
|
||||
# worst cell: iteration 0 site 0 address 0x0e92237a in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 2 2 4194304 2097152 2064660 0x0e3a012d 4 0.000002 1.0000 1.0000 0.7135 1.0000 1.0000 0.2500 1.00013 -2.13 19
|
||||
1 2 2 4194304 2097152 2064792 0x0efd0e64 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00020 -1.88 10
|
||||
2 3 0 16777216 2097152 2089026 0x089fe2f1 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00003 -2.04 19
|
||||
3 3 0 16777216 2097152 2088866 0x0f538658 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99996 2.06 2
|
||||
4 5 1 8388608 2097152 2081083 0x0113a588 4 0.000002 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00015 2.59 26
|
||||
5 5 1 8388608 2097152 2080739 0x00b80889 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 0.99999 -1.31 1
|
||||
6 7 2 4194304 2097152 2064766 0x06e15152 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00019 -1.63 1
|
||||
7 7 2 4194304 2097152 2064743 0x075b8ab1 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00017 1.80 0
|
||||
8 10 2 4194304 2097152 2064536 0x0aa9d2e5 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00007 -1.82 14
|
||||
9 10 2 4194304 2097152 2064775 0x0a458569 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00019 -2.15 3
|
||||
10 12 2 4194304 2097152 2064772 0x047b5d50 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00019 1.72 6
|
||||
11 12 2 4194304 2097152 2064471 0x072c3ae9 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00004 -2.31 18
|
||||
12 14 0 16777216 2097152 2089071 0x07f185e5 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00005 2.53 14
|
||||
13 14 0 16777216 2097152 2089027 0x0551ac9e 4 0.000002 1.0000 1.0000 0.5604 1.0000 0.2500 0.0625 1.00003 1.99 3
|
||||
14 35 1 8388608 2097152 2081160 0x071cdd6f 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00019 -1.66 12
|
||||
15 35 1 8388608 2097152 2080869 0x028dc39f 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00005 -2.47 4
|
||||
16 41 0 16777216 2097152 2088900 0x070d37d0 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99997 2.48 12
|
||||
17 41 0 16777216 2097152 2089041 0x05e5c1d2 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00004 2.13 24
|
||||
18 42 0 16777216 2097152 2089192 0x0f074fdc 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00011 1.85 11
|
||||
19 42 0 16777216 2097152 2089007 0x05de0df0 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00002 -2.08 25
|
||||
20 49 2 4194304 2097152 2064790 0x08b805dd 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00020 1.78 15
|
||||
21 49 2 4194304 2097152 2064415 0x08429932 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00002 -2.19 18
|
||||
22 50 0 16777216 2097152 2088881 0x03d794a9 4 0.000002 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99996 1.81 2
|
||||
23 50 0 16777216 2097152 2088771 0x0906f3bb 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99991 2.30 16
|
||||
24 54 2 4194304 2097152 2064447 0x01174ec0 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00003 -2.38 19
|
||||
25 54 2 4194304 2097152 2064637 0x00f5480b 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00012 1.97 15
|
||||
26 56 0 16777216 2097152 2088993 0x0248a45d 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00002 2.31 22
|
||||
27 56 0 16777216 2097152 2089061 0x0e415537 4 0.000002 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00005 2.14 18
|
||||
28 58 1 8388608 2097152 2080959 0x03cc4951 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00009 -1.96 24
|
||||
29 58 1 8388608 2097152 2080841 0x0780a964 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00004 -2.22 19
|
||||
30 62 0 16777216 2097152 2089002 0x034a75de 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00002 -2.32 5
|
||||
31 62 0 16777216 2097152 2089002 0x0f5d6282 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00002 -2.03 6
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003348 of reads; flat control 0.003069 (ratio 1.0910x), windowed control 0.003355 (ratio 0.9981x; the gate 1.2x); min site distinct ratio 0.99991 (floors 0.98 and 0.995); worst index bit inside its window 2.59 sigma at site 4 bit 26 (the band 6)
|
||||
# program: reads 67108864, distinct items 16327902, worst site 0 address 0x0e3a012d in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4343, 64 MiB 0.1395; the per-site ideal caches summed: 1.0000, 1.0000, 0.6278; 50.7 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program e1409749e795c382 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 1 262144 261603 0x0f8c1753 3 0.000011
|
||||
0 1 1 262144 261651 0x0d5543d7 3 0.000011
|
||||
# worst cell: iteration 0 site 0 address 0x0f8c1753 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 1 2 4194304 2097152 2064417 0x0d3d1622 4 0.000002 1.0000 1.0000 0.7128 1.0000 1.0000 0.2500 1.00002 3.14 14
|
||||
1 1 2 4194304 2097152 2064840 0x0fa5865f 4 0.000002 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00022 -2.46 6
|
||||
2 3 1 8388608 2097152 2080966 0x03d01c00 4 0.000002 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00010 -2.56 14
|
||||
3 3 1 8388608 2097152 2080827 0x01743ea9 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00003 2.27 10
|
||||
4 4 1 8388608 2097152 2080757 0x07072358 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 0.99999 -1.68 10
|
||||
5 4 1 8388608 2097152 2080892 0x02f59100 4 0.000002 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00006 -2.12 23
|
||||
6 7 1 8388608 2097152 2080928 0x039d6050 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00008 -3.16 18
|
||||
7 7 1 8388608 2097152 2080806 0x04c9f0c0 4 0.000002 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00002 -3.23 21
|
||||
8 11 1 8388608 2097152 2080660 0x0f16f53b 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 0.99995 2.46 21
|
||||
9 11 1 8388608 2097152 2080780 0x0db21bbc 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00001 3.16 20
|
||||
10 12 0 16777216 2097152 2088897 0x066eced5 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99997 -2.05 11
|
||||
11 12 0 16777216 2097152 2088940 0x0a429328 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 0.99999 -2.17 25
|
||||
12 13 0 16777216 2097152 2088856 0x083b252d 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99995 -3.06 8
|
||||
13 13 0 16777216 2097152 2088909 0x00cf618b 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 0.99998 2.43 25
|
||||
14 21 0 16777216 2097152 2089005 0x0987e15e 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00002 -2.48 1
|
||||
15 21 0 16777216 2097152 2089048 0x0521f8d9 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00004 2.42 26
|
||||
16 28 0 16777216 2097152 2089052 0x076ce703 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00004 -1.85 0
|
||||
17 28 0 16777216 2097152 2088783 0x0294ce2e 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99992 2.21 23
|
||||
18 41 1 8388608 2097152 2080761 0x0aa1f1bb 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00000 -2.71 6
|
||||
19 41 1 8388608 2097152 2080520 0x0e3e5fbc 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99988 -2.07 17
|
||||
20 43 2 4194304 2097152 2064966 0x0aff5e6c 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00028 -3.05 3
|
||||
21 43 2 4194304 2097152 2064713 0x0947d9e2 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00016 -2.94 10
|
||||
22 47 0 16777216 2097152 2088775 0x09c797b7 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99991 -2.99 11
|
||||
23 47 0 16777216 2097152 2088930 0x0cd8eb21 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99999 2.00 17
|
||||
24 54 1 8388608 2097152 2080730 0x0a57503c 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 0.99998 3.06 0
|
||||
25 54 1 8388608 2097152 2080989 0x0c0438a7 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00011 -1.78 23
|
||||
26 56 2 4194304 2097152 2064734 0x0939f6e7 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00017 -1.76 5
|
||||
27 56 2 4194304 2097152 2064767 0x089d01aa 4 0.000002 1.0000 1.0000 0.7135 1.0000 1.0000 0.2500 1.00019 1.85 15
|
||||
28 61 1 8388608 2097152 2081039 0x09fd07dd 3 0.000001 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00013 -2.61 14
|
||||
29 61 1 8388608 2097152 2080997 0x0d5cf9e2 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00011 2.21 5
|
||||
30 62 0 16777216 2097152 2089098 0x06ff173a 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00007 2.65 14
|
||||
31 62 0 16777216 2097152 2088898 0x0b984754 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99997 -2.51 25
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003432 of reads; flat control 0.003075 (ratio 1.1164x), windowed control 0.003435 (ratio 0.9992x; the gate 1.2x); min site distinct ratio 0.99988 (floors 0.98 and 0.995); worst index bit inside its window -3.23 sigma at site 7 bit 21 (the band 6)
|
||||
# program: reads 67108864, distinct items 16295937, worst site 0 address 0x0d3d1622 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4417, 64 MiB 0.1425; the per-site ideal caches summed: 1.0000, 1.0000, 0.6128; 50.5 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 0717ad9158d5937f class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 2 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 2 262144 261895 0x08695fc3 3 0.000011
|
||||
0 1 2 262144 261887 0x0955348b 2 0.000008
|
||||
# worst cell: iteration 0 site 0 address 0x08695fc3 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 2 1 8388608 2097152 2081067 0x0d4f9faf 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 1.00014 -2.72 25
|
||||
1 2 1 8388608 2097152 2081036 0x0ed453f1 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00013 -1.92 3
|
||||
2 14 1 8388608 2097152 2080837 0x03443ba9 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00003 1.81 6
|
||||
3 14 1 8388608 2097152 2080665 0x01575a10 3 0.000001 1.0000 1.0000 0.6154 1.0000 0.5000 0.1250 0.99995 -2.30 14
|
||||
4 20 2 4194304 2097152 2064959 0x0cd645f0 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00028 -2.07 5
|
||||
5 20 2 4194304 2097152 2064678 0x0c6a1d56 4 0.000002 1.0000 1.0000 0.7132 1.0000 1.0000 0.2500 1.00014 -2.29 13
|
||||
6 29 0 16777216 2097152 2088928 0x03b55570 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99998 3.40 2
|
||||
7 29 0 16777216 2097152 2089054 0x06afe3b6 3 0.000001 1.0000 1.0000 0.5597 1.0000 0.2500 0.0625 1.00004 -3.05 16
|
||||
8 31 1 8388608 2097152 2081166 0x0a04bf02 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00019 -2.47 20
|
||||
9 31 1 8388608 2097152 2080744 0x0e56cd9d 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 0.99999 -1.94 15
|
||||
10 32 2 4194304 2097152 2064477 0x0e061843 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00005 2.82 18
|
||||
11 32 2 4194304 2097152 2064673 0x0df8ef99 4 0.000002 1.0000 1.0000 0.7133 1.0000 1.0000 0.2500 1.00014 -2.17 8
|
||||
12 33 0 16777216 2097152 2089016 0x0f28266b 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00003 -2.04 26
|
||||
13 33 0 16777216 2097152 2089185 0x07578dbd 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00011 -2.69 5
|
||||
14 39 1 8388608 2097152 2080978 0x0211cb12 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00010 -2.03 6
|
||||
15 39 1 8388608 2097152 2081059 0x061d30a0 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00014 2.14 16
|
||||
16 42 2 4194304 2097152 2064856 0x0746f9ef 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00023 -2.12 0
|
||||
17 42 2 4194304 2097152 2064582 0x07aac484 3 0.000001 1.0000 1.0000 0.7134 1.0000 1.0000 0.2500 1.00010 -1.97 10
|
||||
18 43 1 8388608 2097152 2080783 0x0d8fccc6 4 0.000002 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00001 -2.22 4
|
||||
19 43 1 8388608 2097152 2080755 0x0b1fc588 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99999 -2.48 14
|
||||
20 44 0 16777216 2097152 2089111 0x03453f54 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00007 1.76 5
|
||||
21 44 0 16777216 2097152 2089070 0x0751e392 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00005 -1.92 18
|
||||
22 47 1 8388608 2097152 2080841 0x0313f4d1 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00004 1.46 3
|
||||
23 47 1 8388608 2097152 2080811 0x0561317b 4 0.000002 1.0000 1.0000 0.6149 1.0000 0.5000 0.1250 1.00002 3.14 1
|
||||
24 48 2 4194304 2097152 2064886 0x050e620b 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00024 2.87 1
|
||||
25 48 2 4194304 2097152 2064825 0x0704c911 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00021 1.89 6
|
||||
26 49 0 16777216 2097152 2089046 0x04c89672 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00004 1.73 8
|
||||
27 49 0 16777216 2097152 2088824 0x031c13c0 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99993 2.76 7
|
||||
28 51 0 16777216 2097152 2089054 0x06747e52 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00004 2.00 7
|
||||
29 51 0 16777216 2097152 2089115 0x018b83fc 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00007 2.42 5
|
||||
30 52 0 16777216 2097152 2088883 0x07e795d6 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99996 -2.45 9
|
||||
31 52 0 16777216 2097152 2089172 0x0e17768c 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00010 2.22 2
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003378 of reads; flat control 0.003071 (ratio 1.1000x), windowed control 0.003377 (ratio 1.0004x; the gate 1.2x); min site distinct ratio 0.99993 (floors 0.98 and 0.995); worst index bit inside its window 3.40 sigma at site 6 bit 2 (the band 6)
|
||||
# program: reads 67108864, distinct items 16303463, worst site 4 address 0x0cd645f0 in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4390, 64 MiB 0.1410; the per-site ideal caches summed: 1.0000, 1.0000, 0.6190; 50.7 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1,42 @@
|
|||
# addrsite: program 9857a41ce42f4677 class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw attempt 0 generator v6 day 2026-10-03 dataset 2^28 words (memory-hard) headers 4 warps 2048 nonces/header 65536 threads 32
|
||||
# per (iteration, site) cell: the most read address and its share (A03's form); cells over 0.1 percent listed
|
||||
it site instr reads distinct top_addr top_count top_share
|
||||
0 0 4 262144 261854 0x03886725 2 0.000008
|
||||
0 1 4 262144 261876 0x06d3ba58 2 0.000008
|
||||
# worst cell: iteration 0 site 14 address 0x03846806 in 3 reads, share 0.000011
|
||||
# per site, pooled over the 8 iterations (hit rates: an ideal cache of the site's top K items, K = bytes / 64; exp = min(1, K / window items))
|
||||
site instr win window_items reads distinct top_addr top_count top_share hit_1GiB hit_256MiB hit_64MiB exp_1GiB exp_256MiB exp_64MiB distinct_ratio bit_z_max bit
|
||||
0 4 1 8388608 2097152 2080828 0x034e20ad 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 1.00003 2.61 5
|
||||
1 4 1 8388608 2097152 2080697 0x0082ff20 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 0.99997 2.86 26
|
||||
2 6 2 4194304 2097152 2064740 0x0f425fde 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00017 2.45 3
|
||||
3 6 2 4194304 2097152 2064712 0x0d43bd52 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00016 -1.82 5
|
||||
4 7 1 8388608 2097152 2080884 0x099e7c18 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00006 2.38 20
|
||||
5 7 1 8388608 2097152 2080853 0x0e58403c 3 0.000001 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 1.00004 -3.95 5
|
||||
6 8 0 16777216 2097152 2088995 0x012d4547 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00002 2.05 6
|
||||
7 8 0 16777216 2097152 2089049 0x08a3d7fc 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 1.00004 1.96 24
|
||||
8 10 0 16777216 2097152 2088976 0x0ba1a02e 3 0.000001 1.0000 1.0000 0.5597 1.0000 0.2500 0.0625 1.00001 -2.65 6
|
||||
9 10 0 16777216 2097152 2088946 0x060bcdb9 3 0.000001 1.0000 1.0000 0.5603 1.0000 0.2500 0.0625 0.99999 -2.50 17
|
||||
10 13 0 16777216 2097152 2088889 0x05e3d58e 4 0.000002 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99997 1.28 5
|
||||
11 13 0 16777216 2097152 2089025 0x0b78defd 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00003 -1.84 26
|
||||
12 14 1 8388608 2097152 2080873 0x04877c20 3 0.000001 1.0000 1.0000 0.6150 1.0000 0.5000 0.1250 1.00005 1.45 24
|
||||
13 14 1 8388608 2097152 2081038 0x003a2c13 3 0.000001 1.0000 1.0000 0.6151 1.0000 0.5000 0.1250 1.00013 2.52 0
|
||||
14 21 2 4194304 2097152 2064428 0x01e0e6f5 4 0.000002 1.0000 1.0000 0.7130 1.0000 1.0000 0.2500 1.00002 -2.45 7
|
||||
15 21 2 4194304 2097152 2064800 0x028d9855 4 0.000002 1.0000 1.0000 0.7127 1.0000 1.0000 0.2500 1.00020 1.68 5
|
||||
16 26 2 4194304 2097152 2064895 0x036bf80b 4 0.000002 1.0000 1.0000 0.7129 1.0000 1.0000 0.2500 1.00025 1.95 19
|
||||
17 26 2 4194304 2097152 2064720 0x01d12723 4 0.000002 1.0000 1.0000 0.7131 1.0000 1.0000 0.2500 1.00016 1.82 10
|
||||
18 30 0 16777216 2097152 2088921 0x08a5d6a0 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99998 -2.74 5
|
||||
19 30 0 16777216 2097152 2088982 0x02d7209d 3 0.000001 1.0000 1.0000 0.5596 1.0000 0.2500 0.0625 1.00001 2.31 19
|
||||
20 41 1 8388608 2097152 2080644 0x04f6d097 4 0.000002 1.0000 1.0000 0.6155 1.0000 0.5000 0.1250 0.99994 2.59 14
|
||||
21 41 1 8388608 2097152 2080991 0x03743b6f 4 0.000002 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00011 -2.05 6
|
||||
22 42 0 16777216 2097152 2088965 0x0a107c86 3 0.000001 1.0000 1.0000 0.5602 1.0000 0.2500 0.0625 1.00000 1.89 21
|
||||
23 42 0 16777216 2097152 2088980 0x0bed59ae 3 0.000001 1.0000 1.0000 0.5598 1.0000 0.2500 0.0625 1.00001 2.68 23
|
||||
24 43 0 16777216 2097152 2088957 0x043578b0 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 1.00000 2.73 12
|
||||
25 43 0 16777216 2097152 2088906 0x0cc002e5 3 0.000001 1.0000 1.0000 0.5600 1.0000 0.2500 0.0625 0.99997 1.78 9
|
||||
26 48 1 8388608 2097152 2080828 0x0b9e1d33 3 0.000001 1.0000 1.0000 0.6152 1.0000 0.5000 0.1250 1.00003 -1.88 12
|
||||
27 48 1 8388608 2097152 2080665 0x08abccb4 3 0.000001 1.0000 1.0000 0.6153 1.0000 0.5000 0.1250 0.99995 1.96 25
|
||||
28 49 0 16777216 2097152 2088834 0x0761a1b4 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 0.99994 2.50 1
|
||||
29 49 0 16777216 2097152 2088962 0x0c8f7caa 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00000 -1.91 18
|
||||
30 62 0 16777216 2097152 2088884 0x0d7a8fad 3 0.000001 1.0000 1.0000 0.5601 1.0000 0.2500 0.0625 0.99996 -2.31 0
|
||||
31 62 0 16777216 2097152 2089107 0x0fc73850 3 0.000001 1.0000 1.0000 0.5599 1.0000 0.2500 0.0625 1.00007 2.92 16
|
||||
# F8 form over the live stream: top 0.1 percent of items hold 0.003416 of reads; flat control 0.003074 (ratio 1.1112x), windowed control 0.003417 (ratio 0.9996x; the gate 1.2x); min site distinct ratio 0.99994 (floors 0.98 and 0.995); worst index bit inside its window -3.95 sigma at site 5 bit 5 (the band 6)
|
||||
# program: reads 67108864, distinct items 16348197, worst site 2 address 0x0f425fde in 4 reads (share 0.000002); one cache over the program's reads: 1 GiB 1.0000, 256 MiB 0.4358, 64 MiB 0.1410; the per-site ideal caches summed: 1.0000, 1.0000, 0.6059; 50.8 s
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
|
|
@ -0,0 +1 @@
|
|||
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -41,7 +41,7 @@ Built 8 October 2026, 18:3x BST (the founder's order: no feature left out, no st
|
|||
| 35 | D4. A five-year coexistence model (p. 13) | Profit-maximising operator simulation: mine, internal prove, external prove, off; under a proving demand spike, a token price fall, a major prover leaving, a specialised entrant in either market. Pass if pricing and capacity rules restore service without an administrator. | research lane (ad6a2bd47d4a46105) | 21:00 tonight | in flight: operator-simulation.md landed 859b3daa, the four shocks run on floor lane 3 by 20:15 | docs/analysis/class-v6/operator-simulation.md | INC-03, INC-04 |
|
||||
| 36 | D5. A no-rescue network exercise (p. 19) | Prerequisite: proof verification enforced in consensus (verifier_in_consensus, proof_rule_active_from) live on the exercise network. | enforced-proving lane (a6e8f84588b809d62) | landed | PASSED: verifier_in_consensus live on igneum-devnet-4 from block zero (4cdcc488), the seven refusals and the fast-time crossing PASS at 17:22 | docs/spec/proving-enforcement.md | ZKP-01, ZKP-08 |
|
||||
| 37 | D5. A no-rescue network exercise (p. 19) | No founder-operated mining, proving, aggregation or mandatory distribution infrastructure. | node lane (a283f5f0d364ceef0) | days two and three | open: the three ex-testnet seeds held for it | | OPS-01 |
|
||||
| 38 | D5. A no-rescue network exercise (p. 19) | Cross epoch boundaries, interrupt signing, partition the network, remove major operators, hostile proof submissions, independently written clients. | finality lane (aca0f5ed924a2a99b) | days two and three | in flight: the partition row landed ec9ea053d (rule v4); the rest of the scenario table owed | docs/spec/finality-guarantees.md | FIN-02, FIN-03, FIN-04, FIN-08, ROT-01 |
|
||||
| 38 | D5. A no-rescue network exercise (p. 19) | Cross epoch boundaries, interrupt signing, partition the network, remove major operators, hostile proof submissions, independently written clients. | finality lane (aca0f5ed924a2a99b) | days two and three | in flight: the partition row landed ec9ea053d (rule v4); the rest of the scenario table owed; LIVE, 8 October 22:08 UK: igneum-devnet-4 split into at least four chains at the class v5 epoch cuts (a node that captured block X as epoch N's reference validates only epoch-N headers seeded by X; another chain's headers are refused and their weight never counts, so the virtual never moves and the nodes never rejoin; a lock above the fork makes it permanent): the epoch cut acted as a partition and the network did not heal on its own, the D5 property tested live and FAILED on 2.0.1; the fix is software rolled (the IBD catch-up re-syncing bodies on every state wait on the 2.0.2 line by 22:45; the foreign-seed capture built tonight with suites by 02:00), never hands; the reset the founder's decision | docs/spec/finality-guarantees.md | FIN-02, FIN-03, FIN-04, FIN-08, ROT-01 |
|
||||
| 39 | D5. A no-rescue network exercise (p. 19) | A withholding concentrated prover: replacement operators, usable inputs, reassignment, explicit behaviour during proof delays. | enforced-proving lane (a6e8f84588b809d62) | days two and three | open | | CAP-07, INC-08 |
|
||||
| 40 | Pools, software and participation (launch requirements) (p. 14) | Vote keys stay with the miner at protocol level: the member's retained voting key committed into its work, payment aggregation separate, verifiable, pool identity substitution resisted. | pool design seat (a3832b1c3b274b310) | tomorrow 18:00 | in flight: the design on master 637e508b (the header commitment, the key on job and share); the code the pool branches rebase first | docs/design/pool-vote-key-commitment.md | UX-05, FIN-05 |
|
||||
| 41 | Pools, software and participation (launch requirements) (p. 14) | Non-custodial payouts, practical minimum payouts, local work verification, low-bandwidth participation (P2Pool as precedent, not code). | pool design seat (a3832b1c3b274b310) | tomorrow 18:00 | open: designed in the same file | | UX-04 |
|
||||
|
|
|
|||
|
|
@ -408,6 +408,14 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover
|
|||
- Cases:
|
||||
- ADV-06 Separate process advantage from specialisation: partial: the placed gated cores and the adversary's forms are modelled in shadow-k.md; the independent review remains
|
||||
|
||||
### kit:class-v6-fingerprints
|
||||
|
||||
- Command: `KITS_BOX_SCRIPT=kits-v6-on-box.sh tools/class-v5/kits-remote.sh --box 1 (the kit zip with its emulation check), then the kit's workers on every platform: the box's CPU emulation (--check, 96 of 96 vector lanes), the fleet's CUDA 4090 (--check and --bench at 2^24, base nonce 0), the Mac's Metal (proto-metal/packbench.swift --pack) and Apple OpenCL (proto-opencl/host.c --pack --bench-pack), PC 1's RTX 5090 and RX 7600 (tools/class-v5/pc1-v6-bench.ps1), PC 2's Arc B580 (tools/class-v5/arc-v6-bench.ps1); the fingerprint of the 2^24 outputs at base nonce 0 equal on every platform for the all pack and for its known-failed partner, the two distinct`
|
||||
- Box class: build box + pods + Mac + PC 1 + PC 2
|
||||
- Fixtures: F0, F2
|
||||
- Cases:
|
||||
- R2-F03-R02 Same job context produces identical accepted work in node, CPU reference, CUDA, Metal, OpenCL and pool.: partial: the worker half (CPU reference, CUDA, Metal, OpenCL) on the same program packs; the node's and the pool's accepted work on the same job context are the CI steward's and the pool lane's cells; PASS only when every listed platform reads one fingerprint and the node and pool halves are green
|
||||
|
||||
## Automated cases with no harness in the matrix (NOT RUN, the reason)
|
||||
|
||||
- GOV-02 Approve thresholds before results: the approval is recorded in the registry's approval field; the automated half (thresholds frozen before any run_status) is the gate rule landing by 21:00
|
||||
|
|
|
|||
|
|
@ -1438,21 +1438,21 @@
|
|||
"manual_page": 24,
|
||||
"owner_lane": "hash lane (a690540514aa453d7)",
|
||||
"run_status": "NOT RUN",
|
||||
"evidence_path": "docs/analysis/review-2026-10-08-b/f10/packfile-test.log;docs/analysis/review-2026-10-08-b/f10/geometry-check-mini.log; docs/analysis/class-v6/family-gate.md",
|
||||
"run_id": "family-gate-20261008b",
|
||||
"updated": "2026-10-08T20:38:55.360Z",
|
||||
"evidence_path": "docs/analysis/review-2026-10-08-b/f10/packfile-test.log;docs/analysis/review-2026-10-08-b/f10/geometry-check-mini.log; docs/analysis/class-v6/family-gate.md; docs/analysis/class-v6/rows/live-dataset-census-1a938abe4.md",
|
||||
"run_id": "census-v6-live-20261008-2210",
|
||||
"updated": "2026-10-08T21:20:19.390Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "POW-02",
|
||||
"decision": "NOT RUN",
|
||||
"decision": "PASS",
|
||||
"method": "native",
|
||||
"cell": "harness:family-gate",
|
||||
"manifest_sha": "ac86d7910",
|
||||
"run_id": "family-gate-20261008b",
|
||||
"evidence": "docs/analysis/class-v6/family-gate.md",
|
||||
"cell": "census:class-v6",
|
||||
"manifest_sha": "1a938abe4",
|
||||
"run_id": "census-v6-live-20261008-2210",
|
||||
"evidence": "docs/analysis/class-v6/rows/live-dataset-census-1a938abe4.md",
|
||||
"in_progress": false,
|
||||
"coverage": "partial: the acceptance rule's measured rates on drawn classes (the per-candidate rejection, the attempt histogram, the exhaustion count against the independent-attempt arithmetic, the (c'') and (c''') floors' refuse rates and the pre-floor ratio spread per width), the per-site largest-bucket and index-bit statistics at the rule's own 2^20 sample with the seven known-failed seeds (p4, p8, p10, p34, p212, p225, p15), and the F8-form census at 2^20 on the F8 seed set where the attack-f8 mirror validates (0 of 96 warps mismatching); the semantics, termination and memory-bound half and the independent re-implementation are the suite's and the hash lane's; the effect-size limits are the family-gate.md thresholds, predeclared in its section 3",
|
||||
"coverage": "partial: the fold's index statistics and the grammar bounds on 256 seeds plus the F8 set; the malformed programs are owed to harness:parser-malformed",
|
||||
"release_identity": {
|
||||
"commit": "ac86d7910",
|
||||
"commit": "1a938abe4",
|
||||
"lockfile": "",
|
||||
"binary": "",
|
||||
"network_object": "",
|
||||
|
|
@ -1461,7 +1461,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T20:38:55.360Z"
|
||||
"at": "2026-10-08T21:20:19.390Z"
|
||||
},
|
||||
"in_progress_since": "2026-10-08T20:07:26.255Z",
|
||||
"approvals": {
|
||||
|
|
@ -1516,6 +1516,28 @@
|
|||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T20:38:55.360Z"
|
||||
},
|
||||
"census:class-v6": {
|
||||
"requirement_id": "POW-02",
|
||||
"decision": "PASS",
|
||||
"method": "native",
|
||||
"cell": "census:class-v6",
|
||||
"manifest_sha": "1a938abe4",
|
||||
"run_id": "census-v6-live-20261008-2210",
|
||||
"evidence": "docs/analysis/class-v6/rows/live-dataset-census-1a938abe4.md",
|
||||
"in_progress": false,
|
||||
"coverage": "partial: the fold's index statistics and the grammar bounds on 256 seeds plus the F8 set; the malformed programs are owed to harness:parser-malformed",
|
||||
"release_identity": {
|
||||
"commit": "1a938abe4",
|
||||
"lockfile": "",
|
||||
"binary": "",
|
||||
"network_object": "",
|
||||
"activation": "",
|
||||
"profile_hashes": ""
|
||||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:20:19.390Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5168,7 +5190,7 @@
|
|||
"run_status": "PASS",
|
||||
"evidence_path": "build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "EVM-08",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5189,7 +5211,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"dependency": "the first pin into elf/prior/ (the node lane, key-succession-pin, tonight by 21:00) and the devnet-4 succession height (main, by 22:00 under the floor rule)",
|
||||
"approvals": {
|
||||
|
|
@ -5219,7 +5241,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5272,7 +5294,7 @@
|
|||
"run_status": "NOT RUN",
|
||||
"evidence_path": "build-1:/srv/artefacts/tas/201-7cfa422a-aa0e0f45/node-7cfa422a/box4-exec.log; build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "ZKP-01",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5293,7 +5315,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"in_progress_since": "2026-10-08T19:32:50.856Z",
|
||||
"approvals": {
|
||||
|
|
@ -5350,7 +5372,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5385,7 +5407,7 @@
|
|||
"run_status": "PASS",
|
||||
"evidence_path": "build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "ZKP-02",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5406,7 +5428,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"dependency": "the mixed-pair crossing needs the node lane's first pin into elf/prior/ (key-succession-pin, tonight by 21:00) and the next-pair proof (build-2:/home/build/enforced-fixtures/next-pair-block-56-shard-0-compressed.bin)",
|
||||
"approvals": {
|
||||
|
|
@ -5436,7 +5458,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5471,7 +5493,7 @@
|
|||
"run_status": "NOT RUN",
|
||||
"evidence_path": "build-1:/srv/artefacts/tas/201-7cfa422a-aa0e0f45/node-7cfa422a/box4-exec.log; build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "ZKP-03",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5492,7 +5514,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"in_progress_since": "2026-10-08T19:32:50.856Z",
|
||||
"approvals": {
|
||||
|
|
@ -5549,7 +5571,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5584,7 +5606,7 @@
|
|||
"run_status": "PASS",
|
||||
"evidence_path": "build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "ZKP-04",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5605,7 +5627,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"dependency": "the proof side of the derivation (P22 stages 1 to 3) changes both guests' public values and so both program ids, so it ships only through a key succession (docs/design/key-succession.md, key-succession-node 291ee6ae); stage 1 (the inputs commitment carried by shard 0 and the aggregator, vetoed natively) is on branch p22-stage-1 under test since 18:46 UK; the clocks (stage 1 09:00, stage 2 14:00, stage 3's design 18:00 UK on 9 October 2026) stand because the succession's first height is asked of main by 22:00 under the floor rule; without a named height the stages are built and tested on their branch and wait for the succession that carries them",
|
||||
"approvals": {
|
||||
|
|
@ -5635,7 +5657,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5670,7 +5692,7 @@
|
|||
"run_status": "PASS",
|
||||
"evidence_path": "build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "ZKP-05",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5691,7 +5713,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"approvals": {
|
||||
"scope_approved": null,
|
||||
|
|
@ -5720,7 +5742,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -5883,7 +5905,7 @@
|
|||
"run_status": "PASS",
|
||||
"evidence_path": "build-8:/home/build/pe-fixtures/succession-360-window-300-vcache-7.json",
|
||||
"run_id": "enforced-proving-20261008-02",
|
||||
"updated": "2026-10-08T21:06:40.269Z",
|
||||
"updated": "2026-10-08T21:22:33.766Z",
|
||||
"evidence_record": {
|
||||
"requirement_id": "ZKP-08",
|
||||
"decision": "PASS",
|
||||
|
|
@ -5904,7 +5926,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
},
|
||||
"dependency": "the proof side of the derivation (P22 stages 1 to 3) changes both guests' public values and so both program ids, so it ships only through a key succession (docs/design/key-succession.md, key-succession-node 291ee6ae); stage 1 (the inputs commitment carried by shard 0 and the aggregator, vetoed natively) is on branch p22-stage-1 under test since 18:46 UK; the clocks (stage 1 09:00, stage 2 14:00, stage 3's design 18:00 UK on 9 October 2026) stand because the succession's first height is asked of main by 22:00 under the floor rule; without a named height the stages are built and tested on their branch and wait for the succession that carries them",
|
||||
"approvals": {
|
||||
|
|
@ -5934,7 +5956,7 @@
|
|||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:06:40.269Z"
|
||||
"at": "2026-10-08T21:22:33.766Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -9938,34 +9960,32 @@
|
|||
"owner": "Desktop product + pool leads; independent usability study",
|
||||
"manual_page": 58,
|
||||
"owner_lane": "shipper (ae892a8b0f78fe31c)",
|
||||
"run_status": "NOT RUN",
|
||||
"evidence_path": "build-1:/srv/artefacts/tas/201-7cfa422a-aa0e0f45/node-7cfa422a/box4-miner.log",
|
||||
"run_id": "201-7cfa422a-aa0e0f45",
|
||||
"updated": "2026-10-08T19:32:50.856Z",
|
||||
"run_status": "FAIL",
|
||||
"evidence_path": "docs/release/evidence/ux-shipper-2026-10-08.md",
|
||||
"run_id": "incident-u64-coinbase-2026-10-08",
|
||||
"updated": "2026-10-08T21:21:37.484Z",
|
||||
"evidence_record": {
|
||||
"cell": "suite:miner",
|
||||
"manifest_sha": "7cfa422a",
|
||||
"coverage": {
|
||||
"UX-06": "partial: the miner's own template selection tests",
|
||||
"UX-04": "partial: payout label and share accounting tests; custody is the pool lane's row",
|
||||
"POW-01": "partial: the pack re-check seam against the pack's 96 vectors (recheck_pack); the million-vector campaign is harness:p01-vectors"
|
||||
},
|
||||
"at": "2026-10-08T19:32:50.856Z",
|
||||
"method": "native",
|
||||
"requirement_id": "UX-06",
|
||||
"decision": "NOT RUN",
|
||||
"reviewer": "",
|
||||
"claim_impact": "",
|
||||
"decision": "FAIL",
|
||||
"method": "team-reported",
|
||||
"cell": "suite:miner",
|
||||
"manifest_sha": "4cdcc488",
|
||||
"run_id": "incident-u64-coinbase-2026-10-08",
|
||||
"evidence": "docs/release/evidence/ux-shipper-2026-10-08.md",
|
||||
"in_progress": false,
|
||||
"coverage": "partial: the miner's own template selection tests",
|
||||
"release_identity": {
|
||||
"commit": "7cfa422a",
|
||||
"commit": "4cdcc488",
|
||||
"lockfile": "",
|
||||
"binary": "",
|
||||
"network_object": "",
|
||||
"activation": "",
|
||||
"profile_hashes": ""
|
||||
}
|
||||
},
|
||||
"claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:21:37.484Z"
|
||||
},
|
||||
"in_progress_since": "2026-10-08T19:32:50.856Z",
|
||||
"approvals": {
|
||||
"scope_approved": null,
|
||||
"implementation_complete": null,
|
||||
|
|
@ -9974,30 +9994,26 @@
|
|||
},
|
||||
"evidence_records": {
|
||||
"suite:miner": {
|
||||
"cell": "suite:miner",
|
||||
"manifest_sha": "7cfa422a",
|
||||
"coverage": {
|
||||
"UX-06": "partial: the miner's own template selection tests",
|
||||
"UX-04": "partial: payout label and share accounting tests; custody is the pool lane's row",
|
||||
"POW-01": "partial: the pack re-check seam against the pack's 96 vectors (recheck_pack); the million-vector campaign is harness:p01-vectors"
|
||||
},
|
||||
"at": "2026-10-08T19:32:50.856Z",
|
||||
"method": "native",
|
||||
"requirement_id": "UX-06",
|
||||
"decision": "NOT RUN",
|
||||
"reviewer": "",
|
||||
"claim_impact": "",
|
||||
"decision": "FAIL",
|
||||
"method": "team-reported",
|
||||
"cell": "suite:miner",
|
||||
"manifest_sha": "4cdcc488",
|
||||
"run_id": "incident-u64-coinbase-2026-10-08",
|
||||
"evidence": "docs/release/evidence/ux-shipper-2026-10-08.md",
|
||||
"in_progress": false,
|
||||
"coverage": "partial: the miner's own template selection tests",
|
||||
"release_identity": {
|
||||
"commit": "7cfa422a",
|
||||
"commit": "4cdcc488",
|
||||
"lockfile": "",
|
||||
"binary": "",
|
||||
"network_object": "",
|
||||
"activation": "",
|
||||
"profile_hashes": ""
|
||||
},
|
||||
"run_id": "201-7cfa422a-aa0e0f45",
|
||||
"evidence": "build-1:/srv/artefacts/tas/201-7cfa422a-aa0e0f45/node-7cfa422a/box4-miner.log",
|
||||
"in_progress": true
|
||||
"claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:21:37.484Z"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -12075,44 +12091,56 @@
|
|||
"POW-01",
|
||||
"ROT-02"
|
||||
],
|
||||
"updated": "2026-10-08T20:10:24.556Z",
|
||||
"run_id": "kit-class-v6-20261008-01",
|
||||
"evidence_path": "docs/design/class-v5-stored-state.md; build-1:/srv/artefacts/packs/packs-class-v6-20261008T202808Z.zip; build-1:/srv/builds/_log/v5-class/kits-20261008T202808Z/emu-check.log",
|
||||
"updated": "2026-10-08T21:18:18.084Z",
|
||||
"evidence_record": {
|
||||
"reason": "R2-F03 (P0, the external review): the regression's harness is the owner lane's (CI steward, hash lane (ProgramClass::V6 on freeze), pool lane); not yet named in the map",
|
||||
"at": "2026-10-08T20:10:24.556Z",
|
||||
"method": "static",
|
||||
"requirement_id": "R2-F03-R02",
|
||||
"decision": "NOT RUN",
|
||||
"reviewer": "",
|
||||
"claim_impact": "",
|
||||
"method": "GPU",
|
||||
"cell": "kit:class-v6-fingerprints",
|
||||
"manifest_sha": "ef0f2ed8",
|
||||
"run_id": "kit-class-v6-20261008-01",
|
||||
"evidence": "docs/design/class-v5-stored-state.md; build-1:/srv/artefacts/packs/packs-class-v6-20261008T202808Z.zip; build-1:/srv/builds/_log/v5-class/kits-20261008T202808Z/emu-check.log",
|
||||
"in_progress": true,
|
||||
"coverage": "partial: the worker half (CPU reference, CUDA, Metal, OpenCL) on the same program packs; the node's and the pool's accepted work on the same job context are the CI steward's and the pool lane's cells; PASS only when every listed platform reads one fingerprint and the node and pool halves are green",
|
||||
"release_identity": {
|
||||
"commit": "",
|
||||
"commit": "ef0f2ed8",
|
||||
"lockfile": "",
|
||||
"binary": "",
|
||||
"network_object": "",
|
||||
"activation": "",
|
||||
"profile_hashes": ""
|
||||
}
|
||||
},
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:18:18.084Z"
|
||||
},
|
||||
"evidence_records": {
|
||||
"record": {
|
||||
"reason": "R2-F03 (P0, the external review): the regression's harness is the owner lane's (CI steward, hash lane (ProgramClass::V6 on freeze), pool lane); not yet named in the map",
|
||||
"at": "2026-10-08T20:10:24.556Z",
|
||||
"method": "static",
|
||||
"kit:class-v6-fingerprints": {
|
||||
"requirement_id": "R2-F03-R02",
|
||||
"decision": "NOT RUN",
|
||||
"reviewer": "",
|
||||
"claim_impact": "",
|
||||
"method": "GPU",
|
||||
"cell": "kit:class-v6-fingerprints",
|
||||
"manifest_sha": "ef0f2ed8",
|
||||
"run_id": "kit-class-v6-20261008-01",
|
||||
"evidence": "docs/design/class-v5-stored-state.md; build-1:/srv/artefacts/packs/packs-class-v6-20261008T202808Z.zip; build-1:/srv/builds/_log/v5-class/kits-20261008T202808Z/emu-check.log",
|
||||
"in_progress": true,
|
||||
"coverage": "partial: the worker half (CPU reference, CUDA, Metal, OpenCL) on the same program packs; the node's and the pool's accepted work on the same job context are the CI steward's and the pool lane's cells; PASS only when every listed platform reads one fingerprint and the node and pool halves are green",
|
||||
"release_identity": {
|
||||
"commit": "",
|
||||
"commit": "ef0f2ed8",
|
||||
"lockfile": "",
|
||||
"binary": "",
|
||||
"network_object": "",
|
||||
"activation": "",
|
||||
"profile_hashes": ""
|
||||
},
|
||||
"in_progress": false
|
||||
"claim_impact": "",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-08T21:18:18.084Z"
|
||||
}
|
||||
},
|
||||
"in_progress_since": "2026-10-08T21:18:18.084Z",
|
||||
"approvals": {
|
||||
"scope_approved": null,
|
||||
"implementation_complete": null,
|
||||
|
|
|
|||
|
|
@ -25,3 +25,7 @@ Registry: docs/plans/igneum-2.0-test-registry.json, suite UX. Owner lane: the sh
|
|||
- The shipped igneum-miner (the 4cdcc488 and ef0f2ed8 pairs) refused every block template whose coinbase exceeded a u64: on the founder's Mac mini at 19:41 "! template error: amount high word 2 (low word 2140158083214006468) on a network at 8 decimals, where every amount fits a u64", then "NODE SLOW: no template from the node in 29 pass(es)", 0 MH/s; rpc/core/src/error.rs:131. Cause: igneum/miner/src/main.rs installed the network's base unit (install_unit_from) only for `inspect`; `mine`, `watch`, `export-pack` and the prepare path read amounts at the 8-decimal width, so a merged coinbase above 18.4 IGN was refused.
|
||||
- The fleet at 19:44: the refusal on 40 of 43 mining boxes (hub-1 323 refusals, 120 NODE SLOW); hub-1's selected chain down to 2 to 4 miner keys over its last 300 EVM blocks (27 at 19:40) and 22 blocks in 14 minutes; 0 blocks per minute at 19:54: the cause of the solo branch and the vote split after the 19:15 outage.
|
||||
- The fix: release-2.0.0-node 7cfa422a (every miner command installs the base unit before any amount is read; the known-failed test with the mini's exact refusal; 777214af's first form did not compile). The clearing evidence is the fixed miner's live canary on build-1's seed (templates parsing, a MINER SUMMARY with a rate, a template whose coinbase exceeds a u64 joined), recorded as its own batch when the node lane prints it.
|
||||
|
||||
## UX-06 clearing run canary-miner-fix-7cfa422a (PASS, 20:05 to 21:48 BST)
|
||||
- The fixed miner (release-2.0.0-node 7cfa422a: every miner command installs the network's base unit before reading an amount) on build-1's seed, 20:05:11 to 20:06:11: 49 templates taken in 60 s, no "template error", no "amount high word", no NODE SLOW; `MINER SUMMARY 'mfix-canary' engine=igneum-pow found=0 rejected=0 fee=0 over 60.0s = 0.00 blocks/s, 0.006 MH/s, 1 template switches`; `VOTER SUMMARY votes_sent=20 votes_accepted=20 locks_seen=12 last_lock_index=270`.
|
||||
- The fleet on the 2.0.1 kit: lp-4090-11 from 20:31 (zero refusals in 320 s, the first accepted block 1aa32e55… at 20:33:33, 186 accepted in 320 s); stages A and B (65 kept nodes) by 20:56:53; hub-1's miner at 21:43 (102 accepted in 343 s); the first lock after the roll, checkpoint 620 at 21:34:33 (80.8 percent of active).
|
||||
|
|
|
|||
|
|
@ -489,7 +489,11 @@ pub fn is_class_v4_shape(class: &LoadClass) -> bool {
|
|||
// class v5 (docs/design/class-v5-stored-state.md) is judged under the same rules: its state flag is set aside;
|
||||
// class v6 lane 1's index fold and re-weight table are set aside too (the address path and the op table are
|
||||
// not the shape)
|
||||
&& LoadClass { era: None, shadow: None, state: false, fold: false, rw: 0, ..*class } == LoadClass { shadow: None, ..V4_CLASS }
|
||||
// the window and layer 8 off are set aside too (lane D's finding of 8 October 2026, 19:1x UK: a +nowin or +reg64c
|
||||
// program was judged by the class v2 parts alone on the chain's path; the harness's own predicate hid it)
|
||||
// and the era's drawn width (lane D's second finding, 20:0x UK: an era whose width set has more than one width
|
||||
// writes the drawn width into `mix`, and the rule must judge every width of the family, not the pinned one alone)
|
||||
&& LoadClass { era: None, shadow: None, state: false, fold: false, rw: 0, nowin: false, reg64: false, reg64_chain: false, mix: V4_CLASS.mix, ..*class } == LoadClass { shadow: None, ..V4_CLASS }
|
||||
}
|
||||
|
||||
/// One pass of the dataflow freshness over the base program then the shadow block (the order of one iteration),
|
||||
|
|
@ -849,6 +853,12 @@ pub fn check_dynamic(p: &Program) -> Result<AcceptReport, Reject> {
|
|||
check_distinct_indices_v4(p)?;
|
||||
}
|
||||
}
|
||||
// the reg64 window's liveness rule (the window's acceptance tool, wired 8 October 2026, 19:5x UK): keyed on the
|
||||
// window flag so no other class's verdict moves; the arithmetic-only window is refused at its first dead register,
|
||||
// the full chain passes (129 one-warp interpretations on the closed form, under a second)
|
||||
if p.class.reg64 {
|
||||
check_window_liveness(p)?;
|
||||
}
|
||||
let half = (ACCEPT_HASHES / 2) as u32;
|
||||
let mut bias_max = 0u32;
|
||||
for (bit, &ones) in acc.bit_ones.iter().enumerate() {
|
||||
|
|
|
|||
|
|
@ -91,10 +91,21 @@ pub fn hex(bytes: &[u8]) -> String {
|
|||
|
||||
/// Bytes from hex (either case). `None` on odd length or a bad digit.
|
||||
pub fn unhex(s: &str) -> Option<Vec<u8>> {
|
||||
if s.len() % 2 != 0 {
|
||||
// on bytes, never on char boundaries (the fuzz of 8 October 2026 found a multi-byte character inside the text
|
||||
// panicked the slice; a non-ASCII byte is a bad digit)
|
||||
let b = s.as_bytes();
|
||||
if b.len() % 2 != 0 {
|
||||
return None;
|
||||
}
|
||||
(0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).ok()).collect()
|
||||
let digit = |c: u8| -> Option<u8> {
|
||||
match c {
|
||||
b'0'..=b'9' => Some(c - b'0'),
|
||||
b'a'..=b'f' => Some(c - b'a' + 10),
|
||||
b'A'..=b'F' => Some(c - b'A' + 10),
|
||||
_ => None,
|
||||
}
|
||||
};
|
||||
b.chunks(2).map(|c| Some(digit(c[0])? << 4 | digit(c[1])?)).collect()
|
||||
}
|
||||
|
||||
impl Epoch {
|
||||
|
|
|
|||
|
|
@ -255,7 +255,11 @@ fn program_class_header_lines(p: &Program) -> String {
|
|||
return String::new();
|
||||
}
|
||||
let mut s = String::new();
|
||||
if p.program_class() == ProgramClass::V5 {
|
||||
if p.program_class() == ProgramClass::V6 {
|
||||
s.push_str("// Program class v6 (the Igneum 2.0 D1 object, docs/design/class-v6-rotating-family.md): generator version 6, class v5's\n");
|
||||
s.push_str("// stored-state dataset with the index fold, the re-weight table and the 64-register window (the v6 flags in the class\n");
|
||||
s.push_str("// string); a worker that runs another class refuses this pack, and a job line names the class it wants (class=v6 era=<hex>).\n");
|
||||
} else if p.program_class() == ProgramClass::V5 {
|
||||
s.push_str("// Program class v5 (proof of stored state and of following, docs/design/class-v5-stored-state.md): generator version 5,\n");
|
||||
s.push_str("// class v4 over a dataset whose every item is keyed by the window's execution state (IGNEUM_STATE_* below, leaves.bin);\n");
|
||||
s.push_str("// a worker that runs another class refuses this pack, and a job line names the class it wants (class=v5 era=<hex>).\n");
|
||||
|
|
@ -352,7 +356,7 @@ fn class_header_lines(p: &Program) -> String {
|
|||
s.push_str(&format!("#define IGNEUM_LOAD_WIDTH_COUNTS {{ {}, {}, {} }} // loads of 4, 16, 64 bytes per program
|
||||
", c[0], c[1], c[2]));
|
||||
s.push_str(&format!("#define IGNEUM_BYTES_PER_HASH {}
|
||||
", p.bytes_per_hash()));
|
||||
", p.bytes_per_hash_executed()));
|
||||
s.push_str(&format!("#define IGNEUM_FOLD_ROT {FOLD_ROT}
|
||||
"));
|
||||
s.push_str(&format!("#define IGNEUM_FOLD_MUL {}
|
||||
|
|
@ -503,8 +507,16 @@ fn shadow_block(p: &Program, dialect: CoreDialect) -> String {
|
|||
));
|
||||
let ty = if dialect == CoreDialect::Cuda { "uint32_t" } else { "uint" };
|
||||
s.push_str(&format!(" for ({ty} sh = 0u; sh < {reps}u; ++sh) {{\n"));
|
||||
let prefix = dialect == CoreDialect::Cuda && p.address_mix() && reg64_prefix();
|
||||
for (k, ins) in p.shadow.iter().enumerate() {
|
||||
if prefix {
|
||||
// F05 prefix form: the shadow's writes move S too (the fold reads the live registers)
|
||||
s.push_str(&format!(" t_ = {};\n", reg64_term(ins.dst as usize)));
|
||||
}
|
||||
s.push_str(&format!(" {} // s{k} {}\n", shadow_instr_line(dialect, ins), ins.op.name()));
|
||||
if prefix {
|
||||
s.push_str(&format!(" S ^= t_ ^ {};\n", reg64_term(ins.dst as usize)));
|
||||
}
|
||||
}
|
||||
s.push_str(" }\n");
|
||||
s
|
||||
|
|
@ -1161,13 +1173,60 @@ fn reg_decl(p: &Program, ty: &str) -> String {
|
|||
return format!(" {ty} r0, r1, r2, r3, r4, r5, r6, r7;\n");
|
||||
}
|
||||
let names: Vec<String> = (0..p.registers()).map(|k| format!("r{k}")).collect();
|
||||
let m = if p.address_mix() { format!("\n {ty} m; // reg64 full chain: the address mix of all 64 registers before every load") } else { String::new() };
|
||||
let m = if p.address_mix() {
|
||||
if ty == "uint32_t" && reg64_prefix() {
|
||||
format!("\n {ty} m, S, p_, t_; // reg64 full chain in the F05 prefix form: S the running xor of the rotated registers, p_ the prefix, t_ the old term")
|
||||
} else {
|
||||
format!("\n {ty} m; // reg64 full chain: the address mix of all 64 registers before every load")
|
||||
}
|
||||
} else {
|
||||
String::new()
|
||||
};
|
||||
format!(" {ty} {}; // reg64: 64 live registers per lane (two 32-register windows){m}\n", names.join(", "))
|
||||
}
|
||||
|
||||
/// reg64 full chain: the mix statement before a load, `m = r0; m = rotl_imm(m, 1u) ^ r1; ... ^ r63;` over the 63
|
||||
/// registers other than the load's source `src` (the verifier's `addr_src`, the same chain), one line; the same
|
||||
/// text in the three dialects (`rotl_imm` is defined in each).
|
||||
/// Review B's F05 (8 October 2026): the CUDA texts carry the reg64 address mix in its closed prefix form when this
|
||||
/// switch is on (`igneum-pow export --reg64-prefix`): `S` is the xor of `a[k] = rotl(r[k], (63 - k) mod 32)` over
|
||||
/// the 64 registers, kept per lane and updated after every write; a load's source is
|
||||
/// `r[s] ^ ror(P_s, 1) ^ (S ^ P_s ^ a[s])` with `P_s` the xor of the first `s` terms. The same hash, the same vectors
|
||||
/// (`verify::reg64_address_source`); a measurement text for the fleet, never the definition. OpenCL and Metal keep
|
||||
/// the fold.
|
||||
static REG64_PREFIX: std::sync::atomic::AtomicBool = std::sync::atomic::AtomicBool::new(false);
|
||||
|
||||
pub fn set_reg64_prefix(on: bool) {
|
||||
REG64_PREFIX.store(on, std::sync::atomic::Ordering::Relaxed);
|
||||
}
|
||||
|
||||
pub fn reg64_prefix() -> bool {
|
||||
REG64_PREFIX.load(std::sync::atomic::Ordering::Relaxed)
|
||||
}
|
||||
|
||||
/// `rotl(rK, (63 - k) mod 32)` as text; a rotation of 0 is the register itself (`rotl_imm` takes 1..31).
|
||||
fn reg64_term(k: usize) -> String {
|
||||
let n = (63 - k) % 32;
|
||||
if n == 0 { format!("r{k}") } else { format!("rotl_imm(r{k}, {n}u)") }
|
||||
}
|
||||
|
||||
/// The prefix-form mix statement before a load of source `src` (the F05 text): `m = ror(P, 1) ^ S ^ P ^ a[src]`.
|
||||
fn reg64_prefix_mix_line(src: u8) -> String {
|
||||
let s = src as usize;
|
||||
let prefix: Vec<String> = (0..s).map(reg64_term).collect();
|
||||
let p = if prefix.is_empty() { "0u".to_string() } else { prefix.join(" ^ ") };
|
||||
format!("p_ = {p}; m = rotr_var(p_, 1u) ^ S ^ p_ ^ {};", reg64_term(s))
|
||||
}
|
||||
|
||||
/// The prefix form's running total after the register init: `S = a[0] ^ ... ^ a[63]`.
|
||||
fn reg64_prefix_init(p: &Program) -> String {
|
||||
if !p.class.reg64 || !p.address_mix() || !reg64_prefix() {
|
||||
return String::new();
|
||||
}
|
||||
let terms: Vec<String> = (0..p.registers()).map(reg64_term).collect();
|
||||
format!(" // F05 prefix form: the running xor of every rotated register\n S = {};\n", terms.join(" ^ "))
|
||||
}
|
||||
|
||||
fn reg64_mix_line(p: &Program, src: u8) -> String {
|
||||
let mut s = String::new();
|
||||
for k in 0..p.registers() {
|
||||
|
|
@ -1223,8 +1282,13 @@ fn cuda_instr_lines(p: &Program, geom: DatasetGeom) -> String {
|
|||
let d = format!("r{}", ins.dst);
|
||||
let a = format!("r{}", ins.src);
|
||||
let b = format!("r{}", ins.src2);
|
||||
let prefix = address_mix && reg64_prefix();
|
||||
if address_mix && ins.op == Op::Load {
|
||||
s.push_str(&format!(" {}\n", reg64_mix_line(p, ins.src)));
|
||||
s.push_str(&format!(" {}\n", if prefix { reg64_prefix_mix_line(ins.src) } else { reg64_mix_line(p, ins.src) }));
|
||||
}
|
||||
if prefix {
|
||||
// the old term of the destination, so S can drop it after the write
|
||||
s.push_str(&format!(" t_ = {};\n", reg64_term(ins.dst as usize)));
|
||||
}
|
||||
let line = match ins.op {
|
||||
// Metal select(A, B, c) returns c ? B : A, so the true branch is imm2 here as well.
|
||||
|
|
@ -1252,6 +1316,9 @@ fn cuda_instr_lines(p: &Program, geom: DatasetGeom) -> String {
|
|||
Op::Hot => hot_stmt(CoreDialect::Cuda, &d, &a),
|
||||
};
|
||||
s.push_str(&format!(" {line} // {k} {}\n", ins.op.name()));
|
||||
if prefix {
|
||||
s.push_str(&format!(" S ^= t_ ^ {};\n", reg64_term(ins.dst as usize)));
|
||||
}
|
||||
}
|
||||
s
|
||||
}
|
||||
|
|
@ -1371,6 +1438,7 @@ pub fn cuda_kernel_geom(p: &Program, memhard: Option<&MixParams>, geom: DatasetG
|
|||
s.push_str(&init_line(p, "uint32_t", i));
|
||||
}
|
||||
s.push_str(®64_init(p));
|
||||
s.push_str(®64_prefix_init(p));
|
||||
s.push_str(&format!("\n for (uint32_t it = 0u; it < {ITERATIONS}u; ++it) {{\n uint32_t sel = r0;\n"));
|
||||
s.push_str(&cuda_instr_lines(p, geom));
|
||||
s.push_str(&shadow_block(p, CoreDialect::Cuda));
|
||||
|
|
@ -1536,6 +1604,7 @@ pub fn cuda_kernel_bound_geom(p: &Program, memhard: Option<&MixParams>, geom: Da
|
|||
));
|
||||
}
|
||||
s.push_str(®64_init(p));
|
||||
s.push_str(®64_prefix_init(p));
|
||||
s.push_str(&format!("\n for (uint32_t it = 0u; it < {ITERATIONS}u; ++it) {{\n uint32_t sel = r0;\n"));
|
||||
s.push_str(&cuda_instr_lines(p, geom));
|
||||
s.push_str(&shadow_block(p, CoreDialect::Cuda));
|
||||
|
|
@ -1947,7 +2016,10 @@ pub fn program_header(p: &Program, day: &str, ds: &DatasetSource) -> String {
|
|||
s.push_str("#define IGNEUM_LANES 32\n");
|
||||
s.push_str(&format!("#define IGNEUM_ITERATIONS {ITERATIONS}\n"));
|
||||
s.push_str(&format!("#define IGNEUM_INSTR_COUNT {INSTR_COUNT}\n"));
|
||||
s.push_str(&format!("#define IGNEUM_LOADS_PER_HASH {}\n", p.loads_per_hash()));
|
||||
if p.class.reg64 {
|
||||
s.push_str("// the executed counts per nonce (review B's V6-02): twice the drawn program's under the 64-register window\n");
|
||||
}
|
||||
s.push_str(&format!("#define IGNEUM_LOADS_PER_HASH {}\n", p.loads_per_hash_executed()));
|
||||
s.push_str(&format!("#define IGNEUM_WIDE_LOADS_PER_HASH {}\n", p.wide_loads_per_hash()));
|
||||
s.push_str(&format!("#define IGNEUM_OP_MIX {}\n", jstr(&p.op_mix())));
|
||||
s.push_str(&program_class_header_lines(p));
|
||||
|
|
@ -2189,7 +2261,7 @@ pub fn program_json(p: &Program, day: &str, ds: &DatasetSource) -> String {
|
|||
s.push_str(" \"registers\": 8,\n");
|
||||
s.push_str(&format!(" \"iterations\": {ITERATIONS},\n"));
|
||||
s.push_str(&format!(" \"instruction_count\": {INSTR_COUNT},\n"));
|
||||
s.push_str(&format!(" \"loads_per_hash\": {},\n", p.loads_per_hash()));
|
||||
s.push_str(&format!(" \"loads_per_hash\": {},\n", p.loads_per_hash_executed()));
|
||||
if p.program_class() != ProgramClass::V2 {
|
||||
s.push_str(&format!(" \"program_class\": {},\n", jstr(p.program_class().name())));
|
||||
if p.program_class() == ProgramClass::V4 {
|
||||
|
|
@ -2239,7 +2311,7 @@ pub fn program_json(p: &Program, day: &str, ds: &DatasetSource) -> String {
|
|||
s.push_str(&format!(" \"load_slots\": {},\n", p.class.load_slots));
|
||||
s.push_str(&format!(" \"load_mix_percent_4_16_64\": [{}, {}, {}],\n", p.class.mix[0], p.class.mix[1], p.class.mix[2]));
|
||||
s.push_str(&format!(" \"load_width_counts_4_16_64\": [{}, {}, {}],\n", c[0], c[1], c[2]));
|
||||
s.push_str(&format!(" \"bytes_per_hash\": {},\n", p.bytes_per_hash()));
|
||||
s.push_str(&format!(" \"bytes_per_hash\": {},\n", p.bytes_per_hash_executed()));
|
||||
if p.has_scratch() {
|
||||
s.push_str(&format!(" \"scratch_ops_per_hash\": {},\n", p.scratch_ops_per_hash()));
|
||||
s.push_str(&format!(" \"scratch_kib_per_warp\": {},\n", p.class.scratch_kb));
|
||||
|
|
@ -2610,19 +2682,42 @@ pub fn export_pack(epoch: &Epoch, day: &str, source: &str) -> Pack {
|
|||
v.hot_fnv = h.fnv1a64();
|
||||
}
|
||||
let is_mh = memhard.is_some();
|
||||
let mut files = vec![
|
||||
("program.json".to_string(), program_json(p, day, ds)),
|
||||
("vectors.json".to_string(), vectors_json_geom(p, day, geom, &bases, &outs, &v, source, is_mh)),
|
||||
let texts: Vec<(String, String)> = vec![
|
||||
("kernel.cu".to_string(), cuda_kernel_geom(p, memhard, geom)),
|
||||
("kernel.cl".to_string(), opencl_kernel_geom(p, memhard, geom)),
|
||||
("program.h".to_string(), program_header(p, day, ds)),
|
||||
("vectors.h".to_string(), vectors_header(p, &bases, &outs, &v, mask, source, is_mh)),
|
||||
("program.metal".to_string(), metal_program_geom(p, geom, LoadSource::Stored)),
|
||||
// Header-bound kernels (3 October 2026, bind.rs): new files, the seven above are unchanged.
|
||||
("program_bound.metal".to_string(), metal_program_bound_geom(p, geom)),
|
||||
("kernel_bound.cu".to_string(), cuda_kernel_bound_geom(p, memhard, geom)),
|
||||
("kernel_bound.cl".to_string(), opencl_kernel_bound_geom(p, memhard, geom)),
|
||||
];
|
||||
// A06 (the external review of 8 October 2026): the pack authenticates its kernel texts by hash, not by metadata:
|
||||
// identity.json carries the program id, the dataset and era identities and the BLAKE2b-256 of every kernel file.
|
||||
// A file of its own, so every pinned pack's twelve files stay byte for byte (the readers ignore it).
|
||||
let hashes: Vec<String> = texts.iter().map(|(n, t)| format!(" {}: \"{}\"", jstr(n), hex_bytes(&crate::blake2b::blake2b_256(&[t.as_bytes()])))).collect();
|
||||
let identity = format!(
|
||||
"{{\n \"program_id\": \"{:#018x}\",\n \"load_class\": {},\n \"generator\": {},\n \"day\": {},\n \"dataset_bytes\": {},\n \"kernel_blake2b256\": {{\n{}\n }},\n \"rule\": \"the external review's A06 (8 October 2026): a pack's program, dataset and work identities are distinct, and its kernel texts are authenticated by the hash of their bytes, never by the metadata beside them\"\n}}\n",
|
||||
p.program_id(),
|
||||
jstr(&p.class.name()),
|
||||
p.generator,
|
||||
jstr(day),
|
||||
(ds.geom.words as u128) * 4,
|
||||
hashes.join(",\n")
|
||||
);
|
||||
// the pack's file order as the pinned packs carry it, identity.json second
|
||||
let mut texts = texts.into_iter();
|
||||
let kernel_cu = texts.next().unwrap();
|
||||
let kernel_cl = texts.next().unwrap();
|
||||
let mut files = vec![
|
||||
("program.json".to_string(), program_json(p, day, ds)),
|
||||
("identity.json".to_string(), identity),
|
||||
("vectors.json".to_string(), vectors_json_geom(p, day, geom, &bases, &outs, &v, source, is_mh)),
|
||||
kernel_cu,
|
||||
kernel_cl,
|
||||
("program.h".to_string(), program_header(p, day, ds)),
|
||||
("vectors.h".to_string(), vectors_header(p, &bases, &outs, &v, mask, source, is_mh)),
|
||||
];
|
||||
files.extend(texts);
|
||||
if let Some(mp) = memhard {
|
||||
files.push(("memhard.h".to_string(), cuda_memhard_header(p, mp)));
|
||||
files.push(("memhard.metal".to_string(), metal_memhard_for(p, mp)));
|
||||
|
|
|
|||
|
|
@ -255,6 +255,11 @@ pub struct LoadClass {
|
|||
/// optimiser split [`NONLOAD_WEIGHTS_RW`] (sum 83, `or` never drawn); 2 the census lane's neighbouring table
|
||||
/// [`NONLOAD_WEIGHTS_RW2`] (sum 75). The draw rolls against the table's own sum ([`LoadClass::nonload_weights`]).
|
||||
pub rw: u8,
|
||||
/// D2 experiment "layer 8 off" (the coordinator's order, 8 October 2026, 18:12 UK; a research class behind `+nowin`):
|
||||
/// the era layout's window-layer draw is removed, every load site reads the whole dataset (`win = 0`, `off = 0`).
|
||||
/// The program stream still consumes the two window draws per instruction, so the base program's instructions are
|
||||
/// the class's without the flag; only the windows move. `false` for every other class.
|
||||
pub nowin: bool,
|
||||
/// The 64-register window (the hash lane's reg64 measurement, 8 October 2026, a research class behind `+reg64`
|
||||
/// and `--reg64`): each lane holds 64 live 32-bit registers. r0..r7 are seeded as today, r8..r63 derived from them
|
||||
/// (`r[k] = r[k & 7] * 0x9E3779B9 + k`); the 64 drawn instructions run twice per iteration in an interleaved
|
||||
|
|
@ -455,13 +460,13 @@ impl LoadClass {
|
|||
impl LoadClass {
|
||||
/// Generator version 2 as adopted on 4 October 2026: 16 loads of one word. The lottery hash.
|
||||
pub const V2: LoadClass =
|
||||
LoadClass { mix: [100, 0, 0], load_slots: LOAD_SLOTS as u8, scratch: None, scratch_kb: 0, mixer_mult: 1, growth: false, era: None, hot: None, derive_len: 0, shadow: None, state: false, wide8: false, fold: false, rw: 0, reg64: false, reg64_chain: false };
|
||||
LoadClass { mix: [100, 0, 0], load_slots: LOAD_SLOTS as u8, scratch: None, scratch_kb: 0, mixer_mult: 1, growth: false, era: None, hot: None, derive_len: 0, shadow: None, state: false, wide8: false, fold: false, rw: 0, nowin: false, reg64: false, reg64_chain: false };
|
||||
|
||||
/// The construction decided for program class v3 on 5 October 2026 (Counter ASIC 2.0, `docs/plans/mixer-x4.md`):
|
||||
/// version 2 loads (16 slots of one word, no scratch, no width roll, so the program stream is version 2's), the
|
||||
/// mixer applied 4 times per round, and the cache growth rule. Name "mx4".
|
||||
pub const MX4: LoadClass =
|
||||
LoadClass { mix: [100, 0, 0], load_slots: LOAD_SLOTS as u8, scratch: None, scratch_kb: 0, mixer_mult: 4, growth: true, era: None, hot: None, derive_len: 0, shadow: None, state: false, wide8: false, fold: false, rw: 0, reg64: false, reg64_chain: false };
|
||||
LoadClass { mix: [100, 0, 0], load_slots: LOAD_SLOTS as u8, scratch: None, scratch_kb: 0, mixer_mult: 4, growth: true, era: None, hot: None, derive_len: 0, shadow: None, state: false, wide8: false, fold: false, rw: 0, nowin: false, reg64: false, reg64_chain: false };
|
||||
|
||||
/// The era class over `base` (`docs/plans/era-layout.md`): the parameters drawn by [`era_draw`]; when `allowed`
|
||||
/// has more than one width the drawn width becomes the class mix (every load that width), otherwise the base
|
||||
|
|
@ -634,6 +639,21 @@ impl LoadClass {
|
|||
LoadClass { rw, ..self }
|
||||
}
|
||||
|
||||
/// D2 "layer 8 off": the class with the window-layer draw removed (every load site reads the whole dataset).
|
||||
pub fn with_nowin(self) -> LoadClass {
|
||||
LoadClass { nowin: true, ..self }
|
||||
}
|
||||
|
||||
/// The class v6 object's draw rules (the external review of 8 October 2026, A02 and A08, fixed by construction for
|
||||
/// every class carrying a v6 flag: the index fold, a re-weight table, the register window or layer 8 off): five
|
||||
/// of the non-load slots are shuffles whose masks are the five lane dimensions 1, 2, 4, 8, 16 in a drawn order, so
|
||||
/// every accepted program mixes all 32 lanes by construction; and a `mad` never names its destination as its
|
||||
/// second source (`d = a * d + d` is `d * (a + 1)`, not a bijection in `d` when `a` is odd). Every other class
|
||||
/// draws as before.
|
||||
pub fn is_v6(&self) -> bool {
|
||||
self.fold || self.rw != 0 || self.reg64 || self.nowin
|
||||
}
|
||||
|
||||
/// The non-load op table this class draws from, in draw order, and its sum (the roll's range). The plain table
|
||||
/// for every class without the re-weight flag, so their streams are byte for byte what they were.
|
||||
pub fn nonload_weights(&self) -> (&'static [(Op, u64); 10], u64) {
|
||||
|
|
@ -677,6 +697,10 @@ impl LoadClass {
|
|||
pub fn parse(s: &str) -> Option<LoadClass> {
|
||||
// class v6 lane 1: "<class>+fold" (the index fold) and "<class>+rw" / "<class>+rw2" (the re-weight table) over
|
||||
// any class, in any order, outermost of all
|
||||
// D2 "layer 8 off": "<class>+nowin" over any class, in any order with the other suffixes
|
||||
if let Some(base) = s.strip_suffix("+nowin") {
|
||||
return Some(LoadClass::parse(base)?.with_nowin());
|
||||
}
|
||||
if let Some(base) = s.strip_suffix("+fold") {
|
||||
return Some(LoadClass::parse(base)?.with_fold());
|
||||
}
|
||||
|
|
@ -829,6 +853,10 @@ impl LoadClass {
|
|||
if self.fold {
|
||||
return format!("{}+fold", LoadClass { fold: false, ..*self }.name());
|
||||
}
|
||||
if self.nowin {
|
||||
// D2 "layer 8 off": "+nowin" sits inside "+fold" and "+rw" and outside "+reg64" and "+state"
|
||||
return format!("{}+nowin", LoadClass { nowin: false, ..*self }.name());
|
||||
}
|
||||
if self.reg64 {
|
||||
// "<class>+reg64" / "+reg64c": the 64-register window is a suffix on any class, outermost
|
||||
let base = LoadClass { reg64: false, reg64_chain: false, ..*self }.name();
|
||||
|
|
@ -935,6 +963,10 @@ pub const GENERATOR_VERSION_V4: u32 = 4;
|
|||
/// Generator version of a class v5 program (proof of stored state and of following, 7 October 2026, PROPOSED:
|
||||
/// `program_id(5, seed, attempt)`; `docs/design/class-v5-stored-state.md`).
|
||||
pub const GENERATOR_VERSION_V5: u32 = 5;
|
||||
/// Class v6 (the Igneum 2.0 D1 object, 8 October 2026; review B's F03): the class v5 draw with the v6 rules (the index fold, the
|
||||
/// re-weight table, the 64-register window with the full chain, the five shuffle dimensions and the mad operand rule by
|
||||
/// construction, layer 8 off when the flag says so), generator 6.
|
||||
pub const GENERATOR_VERSION_V6: u32 = 6;
|
||||
|
||||
/// The program class of an epoch (Counter ASIC 2.0, 5 October 2026, `docs/plans/counter-asic-2-rollout.md`): one
|
||||
/// height switch in the node, `program_class_v3_activation_daa`, rounded up to an epoch boundary, decides which
|
||||
|
|
@ -951,6 +983,8 @@ pub enum ProgramClass {
|
|||
/// Class v5 (`docs/design/class-v5-stored-state.md`, behind `program_class_v5_activation_daa`): class v4's program
|
||||
/// over a dataset whose every item is keyed by the window's execution state ([`V5_CLASS`]), generator 5.
|
||||
V5,
|
||||
/// Class v6 (the Igneum 2.0 D1 object; review B's F03, 8 October 2026): [`V6_CLASS`], generator 6.
|
||||
V6,
|
||||
}
|
||||
|
||||
/// The load class of program class v3, decided 5 October 2026 (Counter ASIC 2.0, `docs/plans/counter-asic-2-status.md`
|
||||
|
|
@ -973,6 +1007,9 @@ pub const V4_CLASS: LoadClass = LoadClass { shadow: Some(ShadowClass { instrs: V
|
|||
/// program draw, the shadow block, the era draw and the ladder rung are class v4's, draw for draw; only the item
|
||||
/// derivation and the program id change.
|
||||
pub const V5_CLASS: LoadClass = LoadClass { state: true, ..V4_CLASS };
|
||||
/// The class v6 object ("mx8+sh256x27+state+reg64c+fold+rw"): class v5 with the index fold, the k lane's re-weight table
|
||||
/// and the 64-register window with the full chain; layer 8 off is the fifth flag, drawn by the chain's family flags.
|
||||
pub const V6_CLASS: LoadClass = LoadClass { fold: true, rw: 1, reg64: true, reg64_chain: true, ..V5_CLASS };
|
||||
|
||||
/// The shadow block size of class v4 at every rung of the latency ladder (`docs/design/latency-ladder.md`): 256
|
||||
/// instructions. The ladder moves the pass count alone.
|
||||
|
|
@ -1037,6 +1074,8 @@ pub fn era_generator_of(base: &LoadClass) -> u32 {
|
|||
match ProgramClass::of_load_class(base) {
|
||||
Some(ProgramClass::V4) => GENERATOR_VERSION_V4,
|
||||
Some(ProgramClass::V5) => GENERATOR_VERSION_V5,
|
||||
Some(ProgramClass::V6) => GENERATOR_VERSION_V6,
|
||||
_ if base.is_v6() => GENERATOR_VERSION_V6,
|
||||
_ if base.state => GENERATOR_VERSION_V5,
|
||||
_ => GENERATOR_VERSION_V3,
|
||||
}
|
||||
|
|
@ -1067,6 +1106,7 @@ impl ProgramClass {
|
|||
ProgramClass::V3 => V3_CLASS,
|
||||
ProgramClass::V4 => V4_CLASS,
|
||||
ProgramClass::V5 => V5_CLASS,
|
||||
ProgramClass::V6 => V6_CLASS,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1077,12 +1117,13 @@ impl ProgramClass {
|
|||
ProgramClass::V3 => GENERATOR_VERSION_V3,
|
||||
ProgramClass::V4 => GENERATOR_VERSION_V4,
|
||||
ProgramClass::V5 => GENERATOR_VERSION_V5,
|
||||
ProgramClass::V6 => GENERATOR_VERSION_V6,
|
||||
}
|
||||
}
|
||||
|
||||
/// Whether the class's dataset is keyed by the window's execution state (class v5).
|
||||
pub fn has_state(&self) -> bool {
|
||||
*self == ProgramClass::V5
|
||||
matches!(self, ProgramClass::V5 | ProgramClass::V6)
|
||||
}
|
||||
|
||||
/// The class of a generator version: 2, 3 and 4 are the three classes, anything else is no class this crate runs.
|
||||
|
|
@ -1092,6 +1133,7 @@ impl ProgramClass {
|
|||
GENERATOR_VERSION_V3 => Some(ProgramClass::V3),
|
||||
GENERATOR_VERSION_V4 => Some(ProgramClass::V4),
|
||||
GENERATOR_VERSION_V5 => Some(ProgramClass::V5),
|
||||
GENERATOR_VERSION_V6 => Some(ProgramClass::V6),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
|
@ -1103,6 +1145,7 @@ impl ProgramClass {
|
|||
ProgramClass::V3 => "v3",
|
||||
ProgramClass::V4 => "v4",
|
||||
ProgramClass::V5 => "v5",
|
||||
ProgramClass::V6 => "v6",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1112,6 +1155,7 @@ impl ProgramClass {
|
|||
"v3" => Some(ProgramClass::V3),
|
||||
"v4" => Some(ProgramClass::V4),
|
||||
"v5" => Some(ProgramClass::V5),
|
||||
"v6" => Some(ProgramClass::V6),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
|
@ -1125,6 +1169,7 @@ impl ProgramClass {
|
|||
/// is v3, [`V4_CLASS`] is v4; a measurement class (a width, a derivation length, another shadow size) is none.
|
||||
pub fn of_load_class(class: &LoadClass) -> Option<ProgramClass> {
|
||||
let base = LoadClass { era: None, reg64: false, reg64_chain: false, ..*class };
|
||||
let v6base = LoadClass { era: None, nowin: false, ..*class };
|
||||
if base == LoadClass::V2 {
|
||||
Some(ProgramClass::V2)
|
||||
} else if base == V3_CLASS {
|
||||
|
|
@ -1133,6 +1178,8 @@ impl ProgramClass {
|
|||
Some(ProgramClass::V4)
|
||||
} else if base == V5_CLASS {
|
||||
Some(ProgramClass::V5)
|
||||
} else if v6base == V6_CLASS {
|
||||
Some(ProgramClass::V6)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
@ -1194,9 +1241,25 @@ impl Program {
|
|||
}
|
||||
out
|
||||
}
|
||||
/// The drawn program's memory operations per nonce (16 load slots times the eight iterations on every class):
|
||||
/// the count the acceptance rule and the draw's bookkeeping read (the acceptance judges the drawn program's
|
||||
/// sites). The hash EXECUTES [`Program::loads_per_hash_executed`] of them, twice this under the 64-register
|
||||
/// window; the served figures and the pack's headers name the executed count (review B's V6-02).
|
||||
pub fn loads_per_hash(&self) -> usize {
|
||||
self.instrs.iter().filter(|i| i.op.is_load()).count() * ITERATIONS
|
||||
}
|
||||
|
||||
/// Memory operations the hash EXECUTES per nonce (review B's V6-02, 8 October 2026): the scheduled statements
|
||||
/// (the drawn program's loads, twice under the 64-register window) times the eight iterations; asserted to
|
||||
/// agree with the drawn count except by the window's factor of two. The emitters alone read it (program.h,
|
||||
/// program.json): the acceptance reads the drawn count, so no verdict moves with the served figure (the first
|
||||
/// form of this change, 0266c9ec0, routed the executed count into the acceptance and moved every reg64 verdict).
|
||||
pub fn loads_per_hash_executed(&self) -> usize {
|
||||
let drawn = self.loads_per_hash();
|
||||
let executed = self.scheduled().iter().filter(|i| i.op.is_load()).count() * ITERATIONS;
|
||||
assert!(executed == drawn || (self.class.reg64 && executed == 2 * drawn), "the executed load count {executed} disagrees with the drawn {drawn}");
|
||||
executed
|
||||
}
|
||||
pub fn wide_loads_per_hash(&self) -> usize {
|
||||
self.instrs.iter().filter(|i| i.op == Op::WLoad).count() * ITERATIONS
|
||||
}
|
||||
|
|
@ -1204,9 +1267,21 @@ impl Program {
|
|||
self.instrs.iter().any(|i| i.op == Op::WLoad)
|
||||
}
|
||||
/// Dataset bytes read per hash: 4 per one-word load, 16 and 64 for the wider loads of the experiment.
|
||||
/// Dataset bytes the drawn program's loads demand per nonce (the acceptance's and the draw's figure).
|
||||
pub fn bytes_per_hash(&self) -> usize {
|
||||
self.instrs.iter().filter(|i| i.op == Op::Load).map(|i| i.width as usize * 4).sum::<usize>() * ITERATIONS
|
||||
}
|
||||
|
||||
/// Dataset bytes the hash's EXECUTED loads demand per nonce (review B's V6-02): the scheduled loads' widths in
|
||||
/// words times 4, times the eight iterations; a demand figure, not the memory's transactions (a 4-byte load is
|
||||
/// a 32-byte sector on NVIDIA and a 64-byte line on AMD; the served text names the model it quotes). The
|
||||
/// emitters alone read it.
|
||||
pub fn bytes_per_hash_executed(&self) -> usize {
|
||||
let drawn = self.bytes_per_hash();
|
||||
let executed = self.scheduled().iter().filter(|i| i.op == Op::Load).map(|i| i.width as usize * 4).sum::<usize>() * ITERATIONS;
|
||||
assert!(executed == drawn || (self.class.reg64 && executed == 2 * drawn), "the executed byte demand {executed} disagrees with the drawn {drawn}");
|
||||
executed
|
||||
}
|
||||
/// Scratch read-modify-writes per hash (variant 5): each reads 16 bytes and writes 16 bytes.
|
||||
pub fn scratch_ops_per_hash(&self) -> usize {
|
||||
self.instrs.iter().filter(|i| i.op == Op::Scratch).count() * ITERATIONS
|
||||
|
|
@ -1328,6 +1403,7 @@ impl Program {
|
|||
GENERATOR_VERSION_V3 => ProgramClass::V3,
|
||||
GENERATOR_VERSION_V4 => ProgramClass::V4,
|
||||
GENERATOR_VERSION_V5 => ProgramClass::V5,
|
||||
GENERATOR_VERSION_V6 => ProgramClass::V6,
|
||||
_ => ProgramClass::V2,
|
||||
}
|
||||
}
|
||||
|
|
@ -1458,6 +1534,14 @@ pub fn program_id_class_recipe(generator: u32, seed: &[u32; 8], attempt: u32, cl
|
|||
// class v6 lane 1: the index fold moves every era load address
|
||||
r.lit(b"fold/");
|
||||
}
|
||||
if class.nowin {
|
||||
// D2 "layer 8 off": the window layer is part of the construction
|
||||
r.lit(b"nowin/");
|
||||
}
|
||||
if class.is_v6() {
|
||||
// the v6 draw rules (A02 five shuffle dimensions, A08 the mad operand rule) are part of the construction
|
||||
r.lit(b"v6draw/");
|
||||
}
|
||||
if class.rw != 0 {
|
||||
// class v6 lane 1: the re-weight table moves the op draw
|
||||
r.lit(b"rw/");
|
||||
|
|
@ -1626,6 +1710,23 @@ pub fn candidate_from_words_class(
|
|||
for &slot in &p[..slots] {
|
||||
is_load[slot as usize] = true;
|
||||
}
|
||||
// class v6 (A02, by construction): five of the non-load slots are shuffles over the five lane dimensions in a
|
||||
// drawn order; drawn from the stream after the load slots, so no other class's stream moves
|
||||
let mut is_shfl = [false; INSTR_COUNT];
|
||||
let mut shfl_masks = [1u8, 2, 4, 8, 16];
|
||||
if class.is_v6() {
|
||||
let rest = &mut p[slots..];
|
||||
for i in 0..5 {
|
||||
let j = i + rng.below((rest.len() - i) as u64) as usize;
|
||||
rest.swap(i, j);
|
||||
is_shfl[rest[i] as usize] = true;
|
||||
}
|
||||
for i in 0..5 {
|
||||
let j = i + rng.below((5 - i) as u64) as usize;
|
||||
shfl_masks.swap(i, j);
|
||||
}
|
||||
}
|
||||
let mut shfl_next = 0usize;
|
||||
// Variant 5: the first k drawn load slots (a uniform k-subset, the draw order is random) are scratch ops.
|
||||
let mut is_scratch = [false; INSTR_COUNT];
|
||||
for &slot in &p[..class.scratch_slots()] {
|
||||
|
|
@ -1652,7 +1753,7 @@ pub fn candidate_from_words_class(
|
|||
// class v6 lane 1: the index fold and the re-weight table are set aside too (the address path and the table are not
|
||||
// the shape; a +fold or +rw program draws its sources under the same rule)
|
||||
let source_rule_v4 = matches!(class.shadow, Some(ShadowClass { instrs: V4_SHADOW_INSTRS, .. }))
|
||||
&& LoadClass { era: None, shadow: None, state: false, fold: false, rw: 0, ..class } == LoadClass { shadow: None, ..V4_CLASS };
|
||||
&& LoadClass { era: None, shadow: None, state: false, fold: false, rw: 0, nowin: false, reg64: false, reg64_chain: false, mix: V4_CLASS.mix, ..class } == LoadClass { shadow: None, ..V4_CLASS };
|
||||
// the op table and the roll's range: the plain table at 75 for every class without the re-weight flag
|
||||
let (weights, weights_sum) = class.nonload_weights();
|
||||
let mut fresh = [false; 8];
|
||||
|
|
@ -1682,6 +1783,9 @@ pub fn candidate_from_words_class(
|
|||
Op::Load
|
||||
};
|
||||
}
|
||||
if is_shfl[k] {
|
||||
op = Op::Shfl;
|
||||
}
|
||||
let dst = rng.below(8);
|
||||
let src = if op.is_load() {
|
||||
let mut eligible = [0u64; 8];
|
||||
|
|
@ -1710,12 +1814,21 @@ pub fn candidate_from_words_class(
|
|||
a
|
||||
}
|
||||
};
|
||||
let b = rng.below(8);
|
||||
let mut b = rng.below(8);
|
||||
// class v6 (A08, by construction): a mad's second source is never its destination
|
||||
if class.is_v6() && op == Op::Mad && b == dst {
|
||||
b = (b + 1) & 7;
|
||||
}
|
||||
let imm = rng.next() as u32;
|
||||
let imm2 = rng.next() as u32;
|
||||
let rot = 1 + rng.below(31) as u32;
|
||||
let bit = rng.below(32);
|
||||
let mask = 1u8 << rng.below(5);
|
||||
let mut mask = 1u8 << rng.below(5);
|
||||
// class v6 (A02): the reserved shuffle slots take the five dimensions in the drawn order
|
||||
if is_shfl[k] {
|
||||
mask = shfl_masks[shfl_next];
|
||||
shfl_next += 1;
|
||||
}
|
||||
// Version 2 loads take no width roll, so a mixer class with version 2 loads draws the version 2 program
|
||||
let width = if class.takes_width_roll() { class.width_for_roll(rng.below(100)) } else { 1 };
|
||||
let width = if op == Op::Load { width } else { 1 };
|
||||
|
|
@ -1723,7 +1836,8 @@ pub fn candidate_from_words_class(
|
|||
let (win, off) = if class.era.is_some() {
|
||||
let k = rng.below(3) as u8;
|
||||
let o = (rng.next() as u32 & ((1u32 << k) - 1)) as u8;
|
||||
if op == Op::Load {
|
||||
// D2 "layer 8 off": the draws are consumed (the stream is the class's) and every site reads the whole dataset
|
||||
if op == Op::Load && !class.nowin {
|
||||
(k, o)
|
||||
} else {
|
||||
(0, 0)
|
||||
|
|
@ -1963,6 +2077,7 @@ pub fn generate_from_seed_bytes_program_class(seed_string: &str, seed_bytes: &[u
|
|||
(ProgramClass::V3, Some(era)) => return generate_era(seed_string, seed_bytes, V3_CLASS, era, &V3_ALLOWED),
|
||||
(ProgramClass::V4, Some(era)) => return generate_era_generator(seed_string, seed_bytes, V4_CLASS, era, &V3_ALLOWED, GENERATOR_VERSION_V4),
|
||||
// Class v5: the same draw inside V5_CLASS (V4_CLASS plus the state flag, which the draw does not read), generator 5.
|
||||
(ProgramClass::V6, Some(era)) => return generate_era_generator(seed_string, seed_bytes, V6_CLASS, era, &V3_ALLOWED, GENERATOR_VERSION_V6),
|
||||
(ProgramClass::V5, Some(era)) => return generate_era_generator(seed_string, seed_bytes, V5_CLASS, era, &V3_ALLOWED, GENERATOR_VERSION_V5),
|
||||
_ => {}
|
||||
}
|
||||
|
|
@ -1980,11 +2095,11 @@ pub fn generate_from_seed_bytes_program_class(seed_string: &str, seed_bytes: &[u
|
|||
/// and class v4 at rung 0, is [`generate_from_seed_bytes_program_class`] byte for byte. The base program, the 16 loads
|
||||
/// and the era draw do not move with the rung: only the pass count of the shadow block does.
|
||||
pub fn generate_from_seed_bytes_program_class_shadow(seed_string: &str, seed_bytes: &[u8], class: ProgramClass, era_bytes: Option<&[u8]>, shadow_reps: u16) -> Program {
|
||||
if !matches!(class, ProgramClass::V4 | ProgramClass::V5) || shadow_reps == 0 || shadow_reps == V4_SHADOW_REPS {
|
||||
if !matches!(class, ProgramClass::V4 | ProgramClass::V5 | ProgramClass::V6) || shadow_reps == 0 || shadow_reps == V4_SHADOW_REPS {
|
||||
return generate_from_seed_bytes_program_class(seed_string, seed_bytes, class, era_bytes);
|
||||
}
|
||||
// class v5 at a rung: class v4's rung with the state flag, generator 5
|
||||
let (base, generator) = if class == ProgramClass::V5 { (v5_class_at(shadow_reps), GENERATOR_VERSION_V5) } else { (v4_class_at(shadow_reps), GENERATOR_VERSION_V4) };
|
||||
let (base, generator) = if class == ProgramClass::V6 { (LoadClass { fold: true, rw: 1, reg64: true, reg64_chain: true, ..v5_class_at(shadow_reps) }, GENERATOR_VERSION_V6) } else if class == ProgramClass::V5 { (v5_class_at(shadow_reps), GENERATOR_VERSION_V5) } else { (v4_class_at(shadow_reps), GENERATOR_VERSION_V4) };
|
||||
match era_bytes {
|
||||
Some(era) => generate_era_generator(seed_string, seed_bytes, base, era, &V3_ALLOWED, generator),
|
||||
None => {
|
||||
|
|
@ -2330,14 +2445,15 @@ mod tests {
|
|||
assert_eq!(v3.program_id(), program_id(GENERATOR_VERSION_V3, &v3.seed, v3.attempt));
|
||||
assert_ne!(v3.program_id(), program_id(GENERATOR_VERSION, &v3.seed, v3.attempt));
|
||||
assert_ne!(v3.program_id(), v2.program_id());
|
||||
for c in [ProgramClass::V2, ProgramClass::V3, ProgramClass::V4, ProgramClass::V5] {
|
||||
for c in [ProgramClass::V2, ProgramClass::V3, ProgramClass::V4, ProgramClass::V5, ProgramClass::V6] {
|
||||
assert_eq!(ProgramClass::parse(c.name()), Some(c));
|
||||
assert_eq!(ProgramClass::from_generator(c.generator_version()), Some(c));
|
||||
assert_eq!(ProgramClass::from_u8(c.as_u8()), Some(c));
|
||||
}
|
||||
assert_eq!(ProgramClass::from_generator(1), None);
|
||||
assert_eq!(ProgramClass::from_generator(6), None);
|
||||
assert_eq!(ProgramClass::parse("v6"), None);
|
||||
assert_eq!(ProgramClass::from_generator(6), Some(ProgramClass::V6), "class v6 is generator 6 (review B's F03, 8 October 2026)");
|
||||
assert_eq!(ProgramClass::from_generator(7), None);
|
||||
assert_eq!(ProgramClass::parse("v7"), None);
|
||||
assert_eq!(ProgramClass::default(), ProgramClass::V2);
|
||||
assert_eq!(ProgramClass::V2.load_class(), LoadClass::V2);
|
||||
assert!(!ProgramClass::V2.has_era() && ProgramClass::V3.has_era() && ProgramClass::V4.has_era() && ProgramClass::V5.has_era());
|
||||
|
|
|
|||
|
|
@ -122,7 +122,8 @@ fn usage() -> ! {
|
|||
\x20 --era-widths 4[,16,32,64] the width set the era draws from, in bytes (default 4: pinned; more lets the era draw it; 32 only with the w32 class)\n\
|
||||
\x20 --dataset-words N research class ds55: the dataset at N words (a multiple of 65,536 in 2^28 ..= 2^31; 1476395008 = 5.5 GiB); a non-power-of-two uses idx = (src * N) >> 32 in every load (spec 01 section 1.13.3), a power of two is --dataset-log2\n\\
|
||||
\x20 --reg64 the 64-register window per lane over the class (research; the same as --class <class>+reg64; CUDA, OpenCL and Metal texts)\n\
|
||||
\x20 --reg64-chain reg64 with the full-chain address mix: every load's address consumes all 64 registers (the same as --class <class>+reg64c)"
|
||||
\x20 --reg64-chain reg64 with the full-chain address mix: every load's address consumes all 64 registers (the same as --class <class>+reg64c)\n\
|
||||
\x20 --reg64-prefix export: the CUDA texts carry the reg64 chain in its closed prefix form (review B's F05; the same hash and vectors, a measurement text)"
|
||||
);
|
||||
std::process::exit(2)
|
||||
}
|
||||
|
|
@ -189,6 +190,7 @@ fn parse() -> Args {
|
|||
a.reg64 = true;
|
||||
a.reg64_chain = true;
|
||||
}
|
||||
"--reg64-prefix" => igneum_pow::emit::set_reg64_prefix(true),
|
||||
_ => usage(),
|
||||
}
|
||||
}
|
||||
|
|
@ -229,10 +231,29 @@ fn main() {
|
|||
// gate G2 (5 October 2026, ported from branch ca2-era for the class v4 gate run): `--count N` prints
|
||||
// "nonce hash" for N consecutive 64-bit nonces from --nonce, one epoch build, to re-hash a worker's
|
||||
// found lines (the same prehash, target ff..ff)
|
||||
for k in 0..a.count {
|
||||
let n = a.nonce.wrapping_add(k);
|
||||
println!("{n} {:016x}", e.hash_bound(&prehash, n));
|
||||
// one warp per 32 nonces (the P01 campaign, 8 October 2026: a million nonces per pack in minutes, not
|
||||
// hours; the per-nonce form hashed the whole aligned group for every nonce)
|
||||
let end = a.nonce.wrapping_add(a.count);
|
||||
let mut n = a.nonce;
|
||||
let mut out = String::with_capacity(1 << 16);
|
||||
use std::io::Write;
|
||||
let stdout = std::io::stdout();
|
||||
let mut lock = stdout.lock();
|
||||
while n != end {
|
||||
let base = n & !31;
|
||||
let warp = e.hash_warp_bound(&prehash, base);
|
||||
let mut m = n;
|
||||
while m != end && (m & !31) == base {
|
||||
out.push_str(&format!("{m} {:016x}\n", warp[(m & 31) as usize]));
|
||||
m = m.wrapping_add(1);
|
||||
}
|
||||
n = m;
|
||||
if out.len() > (1 << 15) {
|
||||
lock.write_all(out.as_bytes()).unwrap();
|
||||
out.clear();
|
||||
}
|
||||
}
|
||||
lock.write_all(out.as_bytes()).unwrap();
|
||||
return;
|
||||
}
|
||||
let init = igneum_pow::bind::block_init_words(&prehash, a.nonce);
|
||||
|
|
|
|||
|
|
@ -199,14 +199,14 @@ pub fn verify_pack_texts_chain(
|
|||
// carries IGNEUM_STATE_ROOT_HEX (and the shadow block of v4) and no other generator does.
|
||||
let state_root_hex = define_str(program_h, "IGNEUM_STATE_ROOT_HEX");
|
||||
match (class, state_root_hex.is_some()) {
|
||||
(ProgramClass::V5, false) => return Err(PackFault::Disagree("IGNEUM_GENERATOR 5 (class v5) without IGNEUM_STATE_ROOT_HEX: not a class v5 pack".into())),
|
||||
(ProgramClass::V5, true) => {}
|
||||
(ProgramClass::V5 | ProgramClass::V6, false) => return Err(PackFault::Disagree("IGNEUM_GENERATOR 5 or 6 (a state class) without IGNEUM_STATE_ROOT_HEX: not a class v5 pack".into())),
|
||||
(ProgramClass::V5 | ProgramClass::V6, true) => {}
|
||||
(_, true) => return Err(PackFault::Disagree(format!("IGNEUM_GENERATOR {generator} with class v5 state lines: a program over state leaves is generator 5 (export the pack as class v5)"))),
|
||||
_ => {}
|
||||
}
|
||||
match (class, shadow > 0) {
|
||||
(ProgramClass::V4, false) => return Err(PackFault::Disagree("IGNEUM_GENERATOR 4 (class v4) without IGNEUM_SHADOW_INSTRS: not a class v4 pack".into())),
|
||||
(ProgramClass::V5, false) => return Err(PackFault::Disagree("IGNEUM_GENERATOR 5 (class v5) without IGNEUM_SHADOW_INSTRS: not a class v5 pack".into())),
|
||||
(ProgramClass::V5 | ProgramClass::V6, false) => return Err(PackFault::Disagree("IGNEUM_GENERATOR 5 or 6 (a state class) without IGNEUM_SHADOW_INSTRS: not a class v5 pack".into())),
|
||||
// the class v4 stream sub-version (AP-F8-1 amendment, 7 October 2026): a generator 4 pack from before the
|
||||
// load-source rule carries no IGNEUM_PROGRAM_SUBVERSION and its program id is another stream's; refused
|
||||
(ProgramClass::V4, true) if define_u32(program_h, "IGNEUM_PROGRAM_SUBVERSION") != Some(u32::from(crate::generator::PROGRAM_SUBVERSION_V4)) => {
|
||||
|
|
|
|||
|
|
@ -1172,3 +1172,91 @@ mod tests {
|
|||
assert!(!e.verify_block(0, w[0] - 1));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Review B's F05 (8 October 2026): the reg64 full-chain address source in closed form. The reference fold
|
||||
/// (`m = r[k0]; m = rotl(m, 1) ^ r[k1]; ...` over the 63 registers other than `s`, in index order) equals
|
||||
/// `r[s] ^ ror(P_s, 1) ^ (S ^ P_s ^ a[s])` with `a[k] = rotl(r[k], (63 - k) mod 32)`, `S` the xor of every `a[k]`
|
||||
/// and `P_s` the xor of `a[k]` for `k < s`: a prefix-xor structure answers every load from one `S` and one prefix,
|
||||
/// which is the incremental form a chip would keep. The verifier keeps the fold as the definition; this form is the
|
||||
/// test's and the fleet's measurement's.
|
||||
pub fn reg64_address_source(r: &[u32; 64], s: usize) -> u32 {
|
||||
let a = |k: usize| r[k].rotate_left(((63 - k) % 32) as u32);
|
||||
let mut total = 0u32;
|
||||
let mut prefix = 0u32;
|
||||
for k in 0..64 {
|
||||
total ^= a(k);
|
||||
if k < s {
|
||||
prefix ^= a(k);
|
||||
}
|
||||
}
|
||||
r[s] ^ prefix.rotate_right(1) ^ (total ^ prefix ^ a(s))
|
||||
}
|
||||
|
||||
/// The reference fold of [`reg64_address_source`] on one lane's registers, as `interpret_warp_core` computes it.
|
||||
pub fn reg64_address_source_reference(r: &[u32; 64], s: usize) -> u32 {
|
||||
let mut m = 0u32;
|
||||
let mut started = false;
|
||||
for (k, &v) in r.iter().enumerate() {
|
||||
if k == s {
|
||||
continue;
|
||||
}
|
||||
m = if started { m.rotate_left(1) ^ v } else { v };
|
||||
started = true;
|
||||
}
|
||||
r[s] ^ m
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod reg64_mix_tests {
|
||||
use super::*;
|
||||
|
||||
/// Review B's F05, known-failed first: a form with one rotation off (every term rotated as if it sat after the
|
||||
/// source) disagrees with the reference on some source; the closed form agrees on every source register over
|
||||
/// 256 register states drawn from a fixed stream and over the states a real program leaves in its registers.
|
||||
#[test]
|
||||
fn reg64_closed_form_equals_the_reference_fold_on_every_source() {
|
||||
let wrong = |r: &[u32; 64], s: usize| -> u32 {
|
||||
let a = |k: usize| r[k].rotate_left(((63 - k) % 32) as u32);
|
||||
let total: u32 = (0..64).map(a).fold(0, |x, y| x ^ y);
|
||||
r[s] ^ total ^ a(s)
|
||||
};
|
||||
let mut x = 0x9e37_79b9_7f4a_7c15u64;
|
||||
let mut next = || {
|
||||
x = x.wrapping_add(0x9e37_79b9_7f4a_7c15);
|
||||
let mut z = x;
|
||||
z = (z ^ (z >> 30)).wrapping_mul(0xbf58_476d_1ce4_e5b9);
|
||||
z = (z ^ (z >> 27)).wrapping_mul(0x94d0_49bb_1331_11eb);
|
||||
(z ^ (z >> 31)) as u32
|
||||
};
|
||||
let mut wrong_differs = false;
|
||||
for _ in 0..256 {
|
||||
let mut r = [0u32; 64];
|
||||
for v in r.iter_mut() {
|
||||
*v = next();
|
||||
}
|
||||
for s in 0..64 {
|
||||
assert_eq!(reg64_address_source(&r, s), reg64_address_source_reference(&r, s), "source r{s}");
|
||||
if wrong(&r, s) != reg64_address_source_reference(&r, s) {
|
||||
wrong_differs = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert!(wrong_differs, "the known-failed form must disagree somewhere");
|
||||
// the init rule's registers (r0..r7 seeded, r[k] = r[k & 7] * 0x9e3779b9 + k) and a few real updates
|
||||
let mut r = [0u32; 64];
|
||||
for (k, v) in r.iter_mut().enumerate().take(8) {
|
||||
*v = next() ^ (k as u32);
|
||||
}
|
||||
for k in 8..64 {
|
||||
r[k] = r[k & 7].wrapping_mul(0x9e37_79b9).wrapping_add(k as u32);
|
||||
}
|
||||
for step in 0..64 {
|
||||
let d = (step * 7 + 3) % 64;
|
||||
r[d] = r[d].wrapping_mul(r[(d + 13) % 64]).wrapping_add(next());
|
||||
for s in 0..64 {
|
||||
assert_eq!(reg64_address_source(&r, s), reg64_address_source_reference(&r, s), "step {step} source r{s}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,8 +68,11 @@ fn power_of_two_path_is_byte_identical_to_the_pinned_pack() {
|
|||
assert!(!e.dataset.geom.mulshift);
|
||||
assert_eq!(e.dataset.geom, DatasetGeom::pow2(28));
|
||||
let out = export_pack(e, &day_label(), SOURCE);
|
||||
assert_eq!(out.files.len(), 12, "the pack's twelve files");
|
||||
assert_eq!(out.files.len(), 13, "the pack's thirteen files");
|
||||
for (name, text) in &out.files {
|
||||
if name == "identity.json" {
|
||||
continue; // A06's identity file is new beside the pinned twelve
|
||||
}
|
||||
let want = pinned(name);
|
||||
assert!(text == &want, "mx8-devnet-epoch0/{name} differs from the default path's export");
|
||||
}
|
||||
|
|
@ -219,7 +222,7 @@ fn ds55_pack_fields_and_vectors() {
|
|||
assert_eq!(e.program.seed[0], 0x667d_0fbd);
|
||||
assert_eq!(e.program.seed[1], 0x7b8e_5963);
|
||||
let out = export_pack(e, &day_label(), SOURCE);
|
||||
assert_eq!(out.files.len(), 12);
|
||||
assert_eq!(out.files.len(), 13);
|
||||
let pj = &out.files.iter().find(|(n, _)| n == "program.json").unwrap().1;
|
||||
let j: Value = serde_json::from_str(pj).expect("program.json is valid JSON");
|
||||
assert_eq!(j["program_id"].as_str().unwrap(), "0x73bcbfe8ccf988f1");
|
||||
|
|
|
|||
132
igneum-pow/tests/fuzz_parsers.rs
Normal file
132
igneum-pow/tests/fuzz_parsers.rs
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
//! POW-01 and POW-02's malformed-input half (the Test and Acceptance Standard, 8 October 2026): 10,000 mutated inputs
|
||||
//! per parser, every one refused cleanly or accepted, never a panic. The parsers: the class string (`LoadClass::parse`,
|
||||
//! `ProgramClass::parse`), the hex reader (`bind::unhex`), the IGSD1 state stream (`StateStream::decode`), the era
|
||||
//! string form (`"<n>:<64 hex>"`, the exporter's `parse_era` re-stated here since main.rs keeps it private). The
|
||||
//! mutations: byte flips, truncation, insertion, duplication and random bytes over a valid seed input, drawn from a
|
||||
//! fixed SplitMix64 so the run is reproducible; a panic in any parser fails the test (the harness catches none).
|
||||
use igneum_pow::bind::unhex;
|
||||
use igneum_pow::generator::{LoadClass, ProgramClass};
|
||||
use igneum_pow::state::StateStream;
|
||||
|
||||
struct Rng(u64);
|
||||
impl Rng {
|
||||
fn next(&mut self) -> u64 {
|
||||
self.0 = self.0.wrapping_add(0x9e3779b97f4a7c15);
|
||||
let mut z = self.0;
|
||||
z = (z ^ (z >> 30)).wrapping_mul(0xbf58476d1ce4e5b9);
|
||||
z = (z ^ (z >> 27)).wrapping_mul(0x94d049bb133111eb);
|
||||
z ^ (z >> 31)
|
||||
}
|
||||
fn below(&mut self, n: usize) -> usize {
|
||||
(self.next() % (n.max(1) as u64)) as usize
|
||||
}
|
||||
}
|
||||
|
||||
/// One mutation of `seed`: a flipped byte, a truncation, an insertion, a doubled slice, or random bytes of a random length.
|
||||
fn mutate(rng: &mut Rng, seed: &[u8]) -> Vec<u8> {
|
||||
let mut v = seed.to_vec();
|
||||
match rng.below(6) {
|
||||
0 => {
|
||||
if !v.is_empty() {
|
||||
let i = rng.below(v.len());
|
||||
v[i] ^= 1 << rng.below(8);
|
||||
}
|
||||
}
|
||||
1 => {
|
||||
let n = rng.below(v.len() + 1);
|
||||
v.truncate(n);
|
||||
}
|
||||
2 => {
|
||||
let i = rng.below(v.len() + 1);
|
||||
v.insert(i, rng.next() as u8);
|
||||
}
|
||||
3 => {
|
||||
if v.len() > 1 {
|
||||
let a = rng.below(v.len());
|
||||
let b = a + rng.below(v.len() - a);
|
||||
let slice = v[a..b].to_vec();
|
||||
v.splice(a..a, slice);
|
||||
}
|
||||
}
|
||||
4 => {
|
||||
let n = rng.below(300);
|
||||
v = (0..n).map(|_| rng.next() as u8).collect();
|
||||
}
|
||||
_ => {
|
||||
if !v.is_empty() {
|
||||
let i = rng.below(v.len());
|
||||
v[i] = rng.next() as u8;
|
||||
}
|
||||
}
|
||||
}
|
||||
v
|
||||
}
|
||||
|
||||
const N: usize = 10_000;
|
||||
|
||||
#[test]
|
||||
fn class_strings_never_panic() {
|
||||
let seeds = ["mx8+sh256x27+state+reg64c+fold+rw", "mx8+sh256x27+state+nowin", "w32m8g-erad810f22d+sh256x27+state", "v2", "mix50-35-15", "scr4k32+hot64k4a", "mx4", "p4,p16,p64", "w64x4", "mx8+rw2"];
|
||||
let mut rng = Rng(1);
|
||||
let (mut some, mut none) = (0, 0);
|
||||
for k in 0..N {
|
||||
let s = mutate(&mut rng, seeds[k % seeds.len()].as_bytes());
|
||||
let text = String::from_utf8_lossy(&s);
|
||||
match LoadClass::parse(&text) {
|
||||
Some(c) => {
|
||||
// an accepted string names back to something the parser accepts again
|
||||
assert!(LoadClass::parse(&c.name()).is_some(), "{text:?} -> {} does not re-parse", c.name());
|
||||
some += 1;
|
||||
}
|
||||
None => none += 1,
|
||||
}
|
||||
let _ = ProgramClass::parse(&text);
|
||||
}
|
||||
println!("class strings: {some} accepted, {none} refused of {N}");
|
||||
assert!(none > N / 2, "the mutations refuse at least half");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hex_and_era_strings_never_panic() {
|
||||
let hex = "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07";
|
||||
let mut rng = Rng(2);
|
||||
let mut refused = 0;
|
||||
for _ in 0..N {
|
||||
let s = mutate(&mut rng, hex.as_bytes());
|
||||
let text = String::from_utf8_lossy(&s);
|
||||
if unhex(&text).is_none() {
|
||||
refused += 1;
|
||||
}
|
||||
// the era string "<n>:<64 hex>" as the exporter reads it
|
||||
let era = format!("{}:{}", rng.below(1000), text);
|
||||
let parsed = era.split_once(':').and_then(|(n, h)| n.parse::<u64>().ok().zip(unhex(h))).filter(|(_, b)| b.len() == 32);
|
||||
if let Some((_, b)) = parsed {
|
||||
assert_eq!(b.len(), 32);
|
||||
}
|
||||
}
|
||||
println!("hex strings: {refused} refused of {N}");
|
||||
assert!(refused > 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn state_streams_never_panic() {
|
||||
// a small valid stream: three records under a fixed root and block
|
||||
let stream = StateStream { number: 159357, block: [7u8; 32], root: [9u8; 32], records: vec![vec![1, 2, 3], vec![], (0..200u8).collect()] };
|
||||
let valid = stream.encode();
|
||||
assert_eq!(StateStream::decode(&valid).map(|s| s.records.len()), Ok(3));
|
||||
let mut rng = Rng(3);
|
||||
let (mut ok, mut err) = (0, 0);
|
||||
for _ in 0..N {
|
||||
let bytes = mutate(&mut rng, &valid);
|
||||
match StateStream::decode(&bytes) {
|
||||
Ok(s) => {
|
||||
// an accepted stream re-encodes to the bytes it was read from
|
||||
assert_eq!(s.encode(), bytes, "an accepted stream must round-trip");
|
||||
ok += 1;
|
||||
}
|
||||
Err(_) => err += 1,
|
||||
}
|
||||
}
|
||||
println!("state streams: {ok} accepted, {err} refused of {N}");
|
||||
assert!(err > N / 2);
|
||||
}
|
||||
|
|
@ -347,8 +347,8 @@ fn determinism_v3() {
|
|||
};
|
||||
println!("determinism {}: two builds equal, against the pinned pack {}", class.name(), dir.display());
|
||||
for (name, text) in &pa.files {
|
||||
if name == "vectors.json" || name == "vectors.h" {
|
||||
continue; // the source string differs ("a" here)
|
||||
if name == "vectors.json" || name == "vectors.h" || name == "identity.json" {
|
||||
continue; // the source string differs ("a" here); identity.json is new beside the pinned twelve (A06)
|
||||
}
|
||||
let on_disk = std::fs::read_to_string(dir.join(name)).unwrap();
|
||||
assert_eq!(&on_disk, text, "{name}");
|
||||
|
|
|
|||
|
|
@ -433,7 +433,9 @@ fn check_export(pack: &str) {
|
|||
if e.dataset.mode() == DatasetMode::MemoryHard {
|
||||
expected.extend(["memhard.h", "memhard.metal"]);
|
||||
}
|
||||
assert_eq!(out.files.iter().map(|(n, _)| n.as_str()).collect::<Vec<_>>(), expected);
|
||||
let mut with_identity: Vec<&str> = expected.clone();
|
||||
with_identity.insert(1, "identity.json");
|
||||
assert_eq!(out.files.iter().map(|(n, _)| n.as_str()).collect::<Vec<_>>(), with_identity);
|
||||
let mut on_disk: Vec<String> = std::fs::read_dir(pack_dir(pack))
|
||||
.unwrap()
|
||||
.map(|d| d.unwrap().file_name().to_string_lossy().to_string())
|
||||
|
|
@ -646,6 +648,9 @@ fn era_emitted_sources_match_and_loads_have_the_era_form() {
|
|||
let source = era_json(pack, "vectors.json")["source"].as_str().unwrap().to_string();
|
||||
let out = export_pack(e, &day, &source);
|
||||
for (name, text) in &out.files {
|
||||
if name == "identity.json" {
|
||||
continue; // A06's identity file is new beside the pinned files
|
||||
}
|
||||
let want = era_read(pack, name);
|
||||
assert!(text == &want, "{pack}/{name} differs from the emitter");
|
||||
}
|
||||
|
|
@ -655,7 +660,7 @@ fn era_emitted_sources_match_and_loads_have_the_era_form() {
|
|||
.filter(|n| !n.starts_with('.') && n != "seeds.txt")
|
||||
.collect();
|
||||
on_disk.sort();
|
||||
let mut want: Vec<String> = out.files.iter().map(|(n, _)| n.clone()).collect();
|
||||
let mut want: Vec<String> = out.files.iter().map(|(n, _)| n.clone()).filter(|n| n != "identity.json").collect();
|
||||
want.sort();
|
||||
assert_eq!(on_disk, want, "{pack}: the pack holds the export's files and seeds.txt only");
|
||||
let era = e.program.class.era.unwrap();
|
||||
|
|
@ -869,7 +874,7 @@ fn hot_packs_emitted_sources_and_load_forms() {
|
|||
let file = |name: &str| -> &str { &out.files.iter().find(|(n, _)| n == name).unwrap().1 };
|
||||
hassert_same_text(pack, "vectors.json", file("vectors.json"));
|
||||
hassert_same_text(pack, "vectors.h", file("vectors.h"));
|
||||
assert_eq!(out.files.len(), 12);
|
||||
assert_eq!(out.files.len(), 13);
|
||||
// One form per dialect, exactly 16 - k masked dataset loads and k hot loads in every hash kernel; the fill
|
||||
// kernel is present once per source that builds the table.
|
||||
for (file, load, masked, hot) in [
|
||||
|
|
@ -974,6 +979,9 @@ fn v5_pack_is_the_v4_program_over_the_state_leaves() {
|
|||
let v = v5_json(pack, "vectors.json");
|
||||
let out = export_pack(e, v["day"].as_str().unwrap(), v["source"].as_str().unwrap());
|
||||
for (name, text) in &out.files {
|
||||
if name == "identity.json" {
|
||||
continue; // A06's identity file is new beside the pinned files
|
||||
}
|
||||
assert_eq!(v5_read(pack, name), *text, "{pack}/{name} differs from the export");
|
||||
}
|
||||
for (name, bytes) in &out.binaries {
|
||||
|
|
@ -1032,8 +1040,11 @@ fn reg64_plain_path_reexports_the_pinned_devnet_pack_unchanged() {
|
|||
assert_eq!(e.program.registers(), 8);
|
||||
assert_eq!(e.program.scheduled(), e.program.instrs, "without the flag the schedule is the drawn program");
|
||||
let out = export_pack(e, &day_label(pack), PINNED_SOURCE);
|
||||
assert_eq!(out.files.len(), 12);
|
||||
assert_eq!(out.files.len(), 13);
|
||||
for (name, text) in &out.files {
|
||||
if name == "identity.json" {
|
||||
continue; // A06's identity file is new beside the pinned twelve
|
||||
}
|
||||
assert_same_text(pack, name, text);
|
||||
}
|
||||
}
|
||||
|
|
@ -1222,4 +1233,64 @@ fn reg64_liveness_rule_refuses_the_subset_fold_and_passes_the_full_chain() {
|
|||
let mut chain = epoch_reg64_of_devnet();
|
||||
chain.program.class = chain.program.class.with_reg64_chain();
|
||||
assert_eq!(check_window_liveness(&chain.program), Ok(()), "the full chain keeps all 64 registers live across the chain");
|
||||
// wired into the acceptance (8 October 2026): `accept::check` refuses the arithmetic-only window as a dead register
|
||||
// and never refuses the chain program for liveness; the plain pack's verdict does not move
|
||||
use igneum_pow::accept::check;
|
||||
assert!(matches!(check(&window.program), Err(Reject::DeadWindowRegister { .. })), "the acceptance refuses the arithmetic-only window");
|
||||
assert!(!matches!(check(&chain.program), Err(Reject::DeadWindowRegister { .. }) | Err(Reject::NotAWindow)), "the chain program is never refused for liveness");
|
||||
assert!(check(&plain.program).is_ok(), "the pinned devnet program's verdict does not move");
|
||||
}
|
||||
|
||||
/// The external review's A07 (8 October 2026): the bound hash of a nonce is the lane of the aligned 32-nonce group that
|
||||
/// contains it, in the verifier by construction (`Epoch::hash_bound`), across the group's tail and the low-32 rollover;
|
||||
/// the high 32 bits of the nonce enter the init words, so two nonces 2^32 apart never share a hash. The launchers
|
||||
/// refuse a job whose nonce_start is not 32-aligned or whose count is not a multiple of 32 (worker.cpp's job line).
|
||||
#[test]
|
||||
fn a07_bound_hash_is_group_aligned_across_tails_and_rollover() {
|
||||
use igneum_pow::bind::block_init_words;
|
||||
let e = epoch("mx8-devnet-epoch0");
|
||||
let prehash = [0x5au8; 32];
|
||||
for &n in &[0u64, 1, 2, 31, 32, 33, 63, (1u64 << 32) - 1, 1u64 << 32, (1u64 << 32) + 1, u64::MAX - 1, u64::MAX] {
|
||||
let base = n & !31;
|
||||
let warp = e.hash_warp_bound(&prehash, base);
|
||||
assert_eq!(e.hash_bound(&prehash, n), warp[(n & 31) as usize], "nonce {n}: the lane of its aligned group");
|
||||
assert_eq!(e.hash_warp_bound(&prehash, n), warp, "nonce {n}: the group is the same from any of its nonces");
|
||||
let distinct: std::collections::HashSet<u64> = warp.iter().copied().collect();
|
||||
assert!(distinct.len() >= 31, "nonce {n}: the lanes of a group are distinct hashes");
|
||||
}
|
||||
assert_ne!(e.hash_bound(&prehash, 2), e.hash_bound(&prehash, 2 + (1u64 << 32)), "the high 32 bits reach the hash");
|
||||
assert_ne!(block_init_words(&prehash, 2), block_init_words(&prehash, 2 + (1u64 << 32)));
|
||||
}
|
||||
|
||||
/// The external review's A04 (8 October 2026): the acceptance executes the shadow block as the hash does (class v4
|
||||
/// sub-version 3), so a shadow that zeroes the registers fails acceptance; the pinned program with its own shadow passes.
|
||||
#[test]
|
||||
fn a04_a_zeroing_shadow_fails_acceptance() {
|
||||
use igneum_pow::accept::check;
|
||||
// a class v4 program (the shadow block is class v4's): the same seed and era as the lib's program_classes test
|
||||
let era = [7u8; 32];
|
||||
let p = generate_from_seed_bytes_program_class("igneum-genesis", b"igneum-genesis", ProgramClass::V4, Some(&era));
|
||||
assert!(check(&p).is_ok(), "the class v4 program of the genesis seed passes");
|
||||
let mut z = p.clone();
|
||||
assert!(!z.shadow.is_empty(), "class v4 has a shadow block");
|
||||
for ins in z.shadow.iter_mut() {
|
||||
ins.op = Op::Xor;
|
||||
ins.src = ins.dst;
|
||||
}
|
||||
assert!(check(&z).is_err(), "a shadow of xor d, d zeroes every register it touches and must fail");
|
||||
}
|
||||
|
||||
/// The external review's A06 (8 October 2026): the pack's identity.json authenticates every kernel text by BLAKE2b-256.
|
||||
#[test]
|
||||
fn a06_program_json_hashes_every_kernel_text() {
|
||||
let e = epoch("mx8-devnet-epoch0");
|
||||
let out = export_pack(&e, &day_label("mx8-devnet-epoch0"), "test");
|
||||
let file = |n: &str| out.files.iter().find(|(f, _)| f == n).map(|(_, t)| t.clone()).unwrap();
|
||||
let j: Value = serde_json::from_str(&file("identity.json")).unwrap();
|
||||
let h = j["kernel_blake2b256"].as_object().expect("kernel_blake2b256");
|
||||
assert_eq!(j["program_id"].as_str().unwrap(), format!("{:#018x}", e.program.program_id()));
|
||||
for n in ["kernel.cu", "kernel.cl", "program.metal", "program_bound.metal", "kernel_bound.cu", "kernel_bound.cl"] {
|
||||
let want: String = igneum_pow::blake2b::blake2b_256(&[file(n).as_bytes()]).iter().map(|x| format!("{x:02x}")).collect();
|
||||
assert_eq!(h[n].as_str().unwrap(), want, "{n}");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use igneum_pow::accept::{index_bit_sigma, index_bit_sigma_max, ACCEPT_UNITS_DIST
|
|||
use igneum_pow::emit::export_pack;
|
||||
use igneum_pow::generator::{
|
||||
candidate_class, generate_era_generator, LoadClass, Op, Program, ProgramClass, EraParams, INSTR_COUNT, NONLOAD_WEIGHTS,
|
||||
NONLOAD_WEIGHTS_RW, NONLOAD_WEIGHTS_RW2, NONLOAD_WEIGHTS_RW2_SUM, NONLOAD_WEIGHTS_RW_SUM, V3_ALLOWED, V4_CLASS, V5_CLASS,
|
||||
NONLOAD_WEIGHTS_RW, NONLOAD_WEIGHTS_RW2, NONLOAD_WEIGHTS_RW2_SUM, NONLOAD_WEIGHTS_RW_SUM, V3_ALLOWED, V3_CLASS, V4_CLASS, V5_CLASS,
|
||||
};
|
||||
use igneum_pow::seed::seed_words_from_bytes;
|
||||
use igneum_pow::verify::{load_index, stride, DatasetGeom, Epoch, INDEX_FOLD_SHIFT};
|
||||
|
|
@ -182,6 +182,123 @@ fn class_v6_all_flags_parse_name_and_id() {
|
|||
assert!(p.class.era.unwrap().fold);
|
||||
}
|
||||
|
||||
/// 1c. D2 "layer 8 off" (8 October 2026): "+nowin" parses in any order and names back inside "+fold"/"+rw"; the draw
|
||||
/// keeps every instruction of the class without the flag and sets every load site's window to the whole dataset;
|
||||
/// the id moves; the era and the stride do not.
|
||||
#[test]
|
||||
fn nowin_removes_the_window_layer_and_nothing_else() {
|
||||
let c = LoadClass::parse("mx8+sh256x27+state+nowin+fold+rw").unwrap();
|
||||
assert!(c.nowin && c.fold && c.rw == 1 && c.state);
|
||||
assert_eq!(c.name(), "mx8+sh256x27+state+nowin+fold+rw");
|
||||
assert_eq!(LoadClass::parse("mx8+sh256x27+state+fold+rw+nowin"), Some(c));
|
||||
assert_eq!(LoadClass::parse("mx8+sh256x27+state+reg64c+nowin").unwrap().name(), "mx8+sh256x27+state+reg64c+nowin");
|
||||
assert!(!V5_CLASS.nowin);
|
||||
let era = f8_bytes("era", 4);
|
||||
let seed = f8_bytes("program", 4);
|
||||
// both sides of the pair draw under the v6 rules (the five shuffle slots and the mad operand rule enter the
|
||||
// stream for every class with a v6 flag), so the pair is the fold class with and without layer 8 off
|
||||
let plain = candidate_class("p4-attack-f8", &seed, 0, LoadClass::era(V5_CLASS.with_fold(), &era, &V3_ALLOWED));
|
||||
let off = candidate_class("p4-attack-f8", &seed, 0, LoadClass::era(V5_CLASS.with_fold().with_nowin(), &era, &V3_ALLOWED));
|
||||
assert_ne!(plain.program_id(), off.program_id(), "the id carries the flag");
|
||||
assert_eq!(plain.instrs.len(), off.instrs.len());
|
||||
let mut windows_plain = 0;
|
||||
for (a, b) in plain.instrs.iter().zip(off.instrs.iter()) {
|
||||
assert_eq!((a.op, a.dst, a.src, a.src2, a.imm, a.imm2, a.rot, a.bit, a.mask, a.width), (b.op, b.dst, b.src, b.src2, b.imm, b.imm2, b.rot, b.bit, b.mask, b.width), "the instruction is the class's without the flag");
|
||||
assert_eq!((b.win, b.off), (0, 0), "every site reads the whole dataset");
|
||||
if a.win != 0 {
|
||||
windows_plain += 1;
|
||||
}
|
||||
}
|
||||
assert!(windows_plain > 0, "the plain draw has at least one shrunk window on this seed");
|
||||
assert_eq!(plain.shadow, off.shadow);
|
||||
assert_eq!(plain.class.era.map(|e| EraParams { fold: e.fold, ..e }), off.class.era.map(|e| EraParams { fold: e.fold, ..e }), "the era draw is untouched");
|
||||
}
|
||||
|
||||
/// The external review's A02 and A08 (8 October 2026), fixed by construction for every class carrying a v6 flag:
|
||||
/// every candidate of 64 seeds (attempt 0, no acceptance pass) carries shuffles over all five lane dimensions, and no
|
||||
/// `mad` names its destination as its second source; the plain class v5 draw is untouched (the pinned pack test
|
||||
/// reads that); the v6 draw's id carries the rule.
|
||||
#[test]
|
||||
fn v6_draw_connects_all_lanes_and_keeps_mad_bijective_by_construction() {
|
||||
let era = f8_bytes("era", 4);
|
||||
let classes = [V5_CLASS.with_fold(), V5_CLASS.with_rw(1), V5_CLASS.with_nowin(), LoadClass::parse("mx8+sh256x27+state+reg64c+fold+rw").unwrap()];
|
||||
for c in classes {
|
||||
assert!(c.is_v6());
|
||||
for k in 0..64u32 {
|
||||
let seed = f8_bytes("program", k);
|
||||
let p = candidate_class("p-a02", &seed, 0, LoadClass::era(c, &era, &V3_ALLOWED));
|
||||
let mut dims = [false; 5];
|
||||
for ins in &p.instrs {
|
||||
if ins.op == Op::Shfl {
|
||||
dims[ins.mask.trailing_zeros() as usize] = true;
|
||||
}
|
||||
if ins.op == Op::Mad {
|
||||
assert_ne!(ins.src2, ins.dst, "seed {k} class {}: a mad with src2 == dst", c.name());
|
||||
}
|
||||
}
|
||||
assert!(dims.iter().all(|&d| d), "seed {k} class {}: shuffle dimensions {:?}", c.name(), dims);
|
||||
assert_eq!(p.instrs.len(), 64);
|
||||
assert_eq!(p.instrs.iter().filter(|i| i.op.is_load()).count(), 16, "the load slots are the class's");
|
||||
}
|
||||
}
|
||||
assert!(!V5_CLASS.is_v6() && !V3_CLASS.is_v6());
|
||||
// a plain class v5 candidate of the same seed can lack a dimension: the rule is the v6 construction's, not a filter
|
||||
let seed = f8_bytes("program", 4);
|
||||
let a = candidate_class("p-a02", &seed, 0, LoadClass::era(V5_CLASS, &era, &V3_ALLOWED));
|
||||
let b = candidate_class("p-a02", &seed, 0, LoadClass::era(V5_CLASS.with_fold(), &era, &V3_ALLOWED));
|
||||
assert_ne!(a.program_id(), b.program_id());
|
||||
}
|
||||
|
||||
/// Lane D's finding (8 October 2026): every class v6 flag is set aside by the acceptance's class v4 shape predicate,
|
||||
/// so a +nowin, +reg64 or +reg64c program is judged by the full rule (the fresh-source rule, the saturated-source
|
||||
/// check, the index floors and the attempt cap with the last resort), not by the class v2 parts; the draw's source
|
||||
/// rule reads the same shape.
|
||||
#[test]
|
||||
fn every_v6_flag_keeps_the_class_v4_acceptance_shape() {
|
||||
use igneum_pow::accept::is_class_v4_shape;
|
||||
use igneum_pow::generator::max_attempts_for;
|
||||
let all = LoadClass::parse("mx8+sh256x27+state+reg64c+nowin+fold+rw").unwrap();
|
||||
for c in [V5_CLASS, V5_CLASS.with_nowin(), V5_CLASS.with_reg64(), V5_CLASS.with_reg64().with_reg64_chain(), V5_CLASS.with_fold(), all] {
|
||||
assert!(is_class_v4_shape(&c), "{}", c.name());
|
||||
assert!(is_class_v4_shape(&LoadClass::era(c, &f8_bytes("era", 4), &V3_ALLOWED)), "{} under an era", c.name());
|
||||
assert_eq!(max_attempts_for(&c), max_attempts_for(&V5_CLASS), "{}: the same attempt cap and last resort", c.name());
|
||||
}
|
||||
assert!(!is_class_v4_shape(&V3_CLASS) && !is_class_v4_shape(&LoadClass::V2));
|
||||
// lane D's second finding: an era drawn from a width set with more than one width writes the drawn width into
|
||||
// `mix`; the shape (and so the full rule) must hold at every width of the family
|
||||
let wide = LoadClass::era(V5_CLASS, &f8_bytes("era", 4), &[1u8, 4, 16]);
|
||||
assert!(wide.era.is_some());
|
||||
assert!(is_class_v4_shape(&wide), "{} (mix {:?})", wide.name(), wide.mix);
|
||||
assert!(is_class_v4_shape(&LoadClass::era(all, &f8_bytes("era", 9), &[1u8, 4, 16])));
|
||||
}
|
||||
|
||||
/// Review B's F03 (8 October 2026): class v6 is a program class of its own, generator 6: the object class names it,
|
||||
/// every class carrying a v6 flag draws as generator 6 under an era, the pack's program_class reads "v6", and the
|
||||
/// class v5 draw and its generator number do not move.
|
||||
#[test]
|
||||
fn program_class_v6_is_generator_6() {
|
||||
use igneum_pow::generator::{era_generator_of, GENERATOR_VERSION_V5, GENERATOR_VERSION_V6, V6_CLASS};
|
||||
assert_eq!(ProgramClass::parse("v6"), Some(ProgramClass::V6));
|
||||
assert_eq!(ProgramClass::V6.name(), "v6");
|
||||
assert_eq!(ProgramClass::V6.generator_version(), GENERATOR_VERSION_V6);
|
||||
assert_eq!(ProgramClass::from_generator(6), Some(ProgramClass::V6));
|
||||
assert!(ProgramClass::V6.has_state());
|
||||
assert_eq!(ProgramClass::V6.load_class(), V6_CLASS);
|
||||
assert_eq!(V6_CLASS.name(), "mx8+sh256x27+state+reg64c+fold+rw");
|
||||
assert_eq!(ProgramClass::of_load_class(&V6_CLASS), Some(ProgramClass::V6));
|
||||
assert_eq!(ProgramClass::of_load_class(&V6_CLASS.with_nowin()), Some(ProgramClass::V6));
|
||||
assert_eq!(ProgramClass::of_load_class(&V5_CLASS), Some(ProgramClass::V5));
|
||||
let era = f8_bytes("era", 4);
|
||||
for c in [V6_CLASS, V6_CLASS.with_nowin(), V5_CLASS.with_fold(), V5_CLASS.with_rw(1), V5_CLASS.with_nowin()] {
|
||||
assert_eq!(era_generator_of(&LoadClass::era(c, &era, &V3_ALLOWED)), GENERATOR_VERSION_V6, "{}", c.name());
|
||||
}
|
||||
assert_eq!(era_generator_of(&LoadClass::era(V5_CLASS, &era, &V3_ALLOWED)), GENERATOR_VERSION_V5);
|
||||
let seed = f8_bytes("program", 4);
|
||||
let p = candidate_class("p-f03", &seed, 0, LoadClass::era(V6_CLASS, &era, &V3_ALLOWED));
|
||||
assert!(p.class.name().starts_with("mx8-era") && p.class.name().ends_with("+sh256x27+state+reg64c+fold+rw"), "{}", p.class.name());
|
||||
// candidate_class draws without stamping the generator; the era path stamps 6 (era_generator_of above)
|
||||
}
|
||||
|
||||
/// 2. The fold's form: `y = x * M; y ^= y >> 16; y = rotl(y, R)`, and nothing else moves. The plain era's stride is
|
||||
/// `rotl(x * M, R)` byte for byte.
|
||||
#[test]
|
||||
|
|
@ -201,14 +318,18 @@ fn fold_form_and_the_plain_stride_unchanged() {
|
|||
assert!(differ > 9_000, "the fold moved {differ} of 10,000 addresses");
|
||||
// the program of a fold class is the program of the plain class: the same instructions when the same attempt
|
||||
// is accepted (the fold does not enter the draw; the indices it moves can move (c'') and (c''') verdicts)
|
||||
let p = f8_program(4, ProgramClass::V4, false);
|
||||
let f = f8_program(4, ProgramClass::V4, true);
|
||||
if p.attempt == f.attempt {
|
||||
assert_eq!(p.instrs, f.instrs);
|
||||
assert_eq!(p.shadow, f.shadow);
|
||||
}
|
||||
assert_eq!(f.class.name(), format!("{}+fold", p.class.name()));
|
||||
// since the review's draw rules (8 October 2026) a fold class draws under the v6 rules, so the pair is the v6
|
||||
// re-weight class with and without the fold: the same instructions, the fold moving the addresses alone
|
||||
let era = f8_bytes("era", 4);
|
||||
let seed = f8_bytes("program", 4);
|
||||
let p = candidate_class("p4-attack-f8", &seed, 0, LoadClass::era(V5_CLASS.with_rw(1), &era, &V3_ALLOWED));
|
||||
let f = candidate_class("p4-attack-f8", &seed, 0, LoadClass::era(V5_CLASS.with_rw(1).with_fold(), &era, &V3_ALLOWED));
|
||||
assert_eq!(p.instrs, f.instrs);
|
||||
assert_eq!(p.shadow, f.shadow);
|
||||
assert_ne!(p.program_id(), f.program_id());
|
||||
// the name orders the fold inside the re-weight suffix ("...+state+fold+rw"); both spellings parse to the class
|
||||
assert!(f.class.name().ends_with("+sh256x27+state+fold+rw"), "{}", f.class.name());
|
||||
assert_eq!(LoadClass::parse("mx8+sh256x27+state+rw+fold"), Some(V5_CLASS.with_rw(1).with_fold()));
|
||||
// and load_index reads the fold through the era
|
||||
let ins = p.instrs.iter().find(|i| i.op == Op::Load).unwrap();
|
||||
let (pe, fe) = (p.class.era.unwrap(), f.class.era.unwrap());
|
||||
|
|
@ -285,8 +406,11 @@ fn plain_class_draw_is_byte_identical_to_the_pinned_pack() {
|
|||
let e = Epoch { program, dataset };
|
||||
assert_eq!(e.program.program_id(), PINNED_ID);
|
||||
let out = export_pack(&e, &format!("bytes:{DAY_HEX}"), SOURCE);
|
||||
assert_eq!(out.files.len(), 12, "the pack's twelve files");
|
||||
assert_eq!(out.files.len(), 13, "the pack's thirteen files");
|
||||
for (name, text) in &out.files {
|
||||
if name == "identity.json" {
|
||||
continue; // A06's identity file is new beside the pinned twelve
|
||||
}
|
||||
let want = pinned(name);
|
||||
assert!(text == &want, "mx8-devnet-epoch0/{name} differs from the default path's export");
|
||||
}
|
||||
|
|
|
|||
57
proto-cuda/nvrtc/packfile-fuzz.c
Normal file
57
proto-cuda/nvrtc/packfile-fuzz.c
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/* packfile-fuzz.c: POW-01's malformed-input half for the pack reader (8 October 2026). Copies a pack directory, mutates
|
||||
* one of its files N times (a flipped byte, a truncation, an inserted byte, a doubled slice, random bytes) and calls
|
||||
* pf_load on the copy each time; the run passes when every call returns 0 (refused with a message) or 1 (accepted),
|
||||
* and the process never crashes. One line per 1,000 rounds, a RESULT line at the end.
|
||||
* cc -O2 -o packfile-fuzz packfile-fuzz.c && ./packfile-fuzz <pack dir> <rounds> <scratch dir>
|
||||
*/
|
||||
#include "packfile.h"
|
||||
#include <sys/stat.h>
|
||||
|
||||
static uint64_t rs = 0x1234567;
|
||||
static uint64_t rnext(void) { rs += 0x9e3779b97f4a7c15ull; uint64_t z = rs; z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9ull; z = (z ^ (z >> 27)) * 0x94d049bb133111ebull; return z ^ (z >> 31); }
|
||||
static size_t below(size_t n) { return n ? (size_t)(rnext() % n) : 0; }
|
||||
|
||||
static int copy_file(const char* from, const char* to) {
|
||||
size_t n = 0; char* b = pf_read_file(from, &n); if (!b) { remove(to); return 0; }
|
||||
FILE* f = fopen(to, "wb"); if (!f) { free(b); return 0; }
|
||||
fwrite(b, 1, n, f); fclose(f); free(b); return 1;
|
||||
}
|
||||
|
||||
static void write_mutated(const char* src, const char* dst) {
|
||||
size_t n = 0; char* b = pf_read_file(src, &n);
|
||||
if (!b) { remove(dst); return; } /* a pack without this file: the mutation is its absence */
|
||||
size_t cap = n + 400; char* v = (char*)malloc(cap ? cap : 1); size_t len = n; if (n) memcpy(v, b, n);
|
||||
switch (below(6)) {
|
||||
case 0: if (len) v[below(len)] ^= (char)(1 << below(8)); break;
|
||||
case 1: len = below(len + 1); break;
|
||||
case 2: { size_t i = below(len + 1); memmove(v + i + 1, v + i, len - i); v[i] = (char)rnext(); len++; } break;
|
||||
case 3: if (len > 1) { size_t a = below(len), bl = below(len - a); if (bl > 300) bl = 300; memmove(v + a + bl, v + a, len - a); memcpy(v + a, b + a, bl); len += bl; } break;
|
||||
case 4: len = below(300); for (size_t i = 0; i < len; i++) v[i] = (char)rnext(); break;
|
||||
default: if (len) v[below(len)] = (char)rnext(); break;
|
||||
}
|
||||
FILE* f = fopen(dst, "wb"); if (f) { fwrite(v, 1, len, f); fclose(f); }
|
||||
free(v); free(b);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if (argc < 4) { fprintf(stderr, "usage: packfile-fuzz <pack dir> <rounds> <scratch dir>\n"); return 2; }
|
||||
const char* pack = argv[1]; long rounds = atol(argv[2]); const char* scratch = argv[3];
|
||||
const char* files[] = { "program.h", "vectors.h", "seeds.txt", "memhard.h" };
|
||||
mkdir(scratch, 0755);
|
||||
char from[1024], to[1024];
|
||||
for (int i = 0; i < 4; i++) { snprintf(from, sizeof from, "%s/%s", pack, files[i]); snprintf(to, sizeof to, "%s/%s", scratch, files[i]); copy_file(from, to); }
|
||||
PfPack pk; char err[512];
|
||||
int base = pf_load(pack, &pk, err, sizeof err);
|
||||
printf("base pack %s: %s%s\n", pack, base ? "accepted" : "refused: ", base ? "" : err);
|
||||
long accepted = 0, refused = 0;
|
||||
for (long r = 0; r < rounds; r++) {
|
||||
int which = (int)below(4);
|
||||
for (int i = 0; i < 4; i++) { snprintf(from, sizeof from, "%s/%s", pack, files[i]); snprintf(to, sizeof to, "%s/%s", scratch, files[i]); if (i == which) write_mutated(from, to); else copy_file(from, to); }
|
||||
memset(&pk, 0, sizeof pk); err[0] = 0;
|
||||
int ok = pf_load(scratch, &pk, err, sizeof err);
|
||||
if (ok) accepted++; else refused++;
|
||||
if ((r + 1) % 1000 == 0) printf("round %ld: accepted %ld refused %ld\n", r + 1, accepted, refused);
|
||||
}
|
||||
printf("RESULT packfile-fuzz pack=%s rounds=%ld accepted=%ld refused=%ld crashes=0 verdict=PASS\n", pack, rounds, accepted, refused);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -333,11 +333,13 @@ static int pf_load(const char* dir, PfPack* pk, char* err, size_t cap) {
|
|||
* kernel text, so this loader needs nothing new beyond the number and the class token), generator 5 is class v5
|
||||
* (proof of stored state, 7 October 2026: class v4 over a dataset keyed by the window's state leaves, leaves.bin,
|
||||
* which the host uploads for igneum_build; the kernel text carries the leaf read). */
|
||||
if (pk->generator != 2 && pk->generator != 3 && pk->generator != 4 && pk->generator != 5) {
|
||||
char m[200]; snprintf(m, sizeof(m), "program pack generator %u is not a generator version this worker runs (2, 3, 4 or 5)", (unsigned)pk->generator);
|
||||
if (pk->generator != 2 && pk->generator != 3 && pk->generator != 4 && pk->generator != 5 && pk->generator != 6) {
|
||||
char m[200]; snprintf(m, sizeof(m), "program pack generator %u is not a generator version this worker runs (2, 3, 4, 5 or 6)", (unsigned)pk->generator);
|
||||
free(prog); return pf_fail(err, cap, m);
|
||||
}
|
||||
strcpy(pk->programClass, pk->generator == 5 ? "v5" : pk->generator == 4 ? "v4" : pk->generator == 3 ? "v3" : "v2");
|
||||
/* generator 6 (class v6, the Igneum 2.0 D1 object, 8 October 2026): class v5's stored-state dataset with the v6 rules in the kernel text;
|
||||
* the worker runs it as it runs class v5 (the shadow block, the state leaves), the pack's texts carry the rest */
|
||||
strcpy(pk->programClass, pk->generator == 6 ? "v6" : pk->generator == 5 ? "v5" : pk->generator == 4 ? "v4" : pk->generator == 3 ? "v3" : "v2");
|
||||
{
|
||||
/* Counter ASIC 3.0 (6 October 2026): the shadow block marks class v4. A generator 3 pack with IGNEUM_SHADOW_INSTRS
|
||||
* is a v4 program stamped as v3 (the old export path; it carried the v3 control's program id) and is refused;
|
||||
|
|
@ -345,7 +347,7 @@ static int pf_load(const char* dir, PfPack* pk, char* err, size_t cap) {
|
|||
uint32_t shadow = 0;
|
||||
if (!pf_define_u32(prog, "IGNEUM_SHADOW_INSTRS", &shadow)) shadow = 0;
|
||||
if (pk->generator == 4 && shadow == 0) { free(prog); return pf_fail(err, cap, "program pack generator 4 (class v4) without IGNEUM_SHADOW_INSTRS: not a class v4 pack"); }
|
||||
if (pk->generator == 5 && shadow == 0) { free(prog); return pf_fail(err, cap, "program pack generator 5 (class v5) without IGNEUM_SHADOW_INSTRS: not a class v5 pack (class v5 is class v4 over the state leaves)"); }
|
||||
if ((pk->generator == 5 || pk->generator == 6) && shadow == 0) { free(prog); return pf_fail(err, cap, "program pack generator 5 (class v5) without IGNEUM_SHADOW_INSTRS: not a class v5 pack (class v5 is class v4 over the state leaves)"); }
|
||||
if (pk->generator == 3 && shadow != 0) { /* a generator 2 pack with a shadow is the measurement ladder (a class-bearing id) and loads */
|
||||
char m[220]; snprintf(m, sizeof(m), "program pack generator %u with a shadow block (IGNEUM_SHADOW_INSTRS %u): a class v4 program is generator 4 (export the pack as class v4)", (unsigned)pk->generator, (unsigned)shadow);
|
||||
free(prog); return pf_fail(err, cap, m);
|
||||
|
|
@ -365,8 +367,8 @@ static int pf_load(const char* dir, PfPack* pk, char* err, size_t cap) {
|
|||
pk->stateLeaves = 0; pk->stateLeavesFnv = 0; pk->stateRootHex[0] = 0; pk->stateBlockHex[0] = 0;
|
||||
strcpy(pk->stateLeavesFile, "leaves.bin");
|
||||
if (!pf_define_u32(prog, "IGNEUM_STATE_LEAVES", &pk->stateLeaves)) pk->stateLeaves = 0;
|
||||
if (pk->generator == 5 && pk->stateLeaves == 0) { free(prog); return pf_fail(err, cap, "program pack generator 5 (class v5) without IGNEUM_STATE_LEAVES: no state leaves to key the dataset (export the pack with --state)"); }
|
||||
if (pk->generator != 5 && pk->stateLeaves != 0) {
|
||||
if ((pk->generator == 5 || pk->generator == 6) && pk->stateLeaves == 0) { free(prog); return pf_fail(err, cap, "program pack generator 5 (class v5) without IGNEUM_STATE_LEAVES: no state leaves to key the dataset (export the pack with --state)"); }
|
||||
if (pk->generator != 5 && pk->generator != 6 && pk->stateLeaves != 0) {
|
||||
char m[200]; snprintf(m, sizeof(m), "program pack generator %u carries IGNEUM_STATE_LEAVES %u: state leaves belong to class v5 (generator 5)", (unsigned)pk->generator, (unsigned)pk->stateLeaves);
|
||||
free(prog); return pf_fail(err, cap, m);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2992,9 +2992,10 @@ final class ServeDataset {
|
|||
/// Counter ASIC 2.0 and 3.0: the classes this worker runs from a prepared pack only (never from the Swift version 2
|
||||
/// generator): class v3 (generator 3) and class v4 (generator 4, class v3 plus the latency-shadow block, which is in
|
||||
/// the pack's own program_bound.metal). Each carries an era seed.
|
||||
func isPackClass(_ cls: String) -> Bool { cls == "v3" || cls == "v4" || cls == "v5" } // class v5 (7 October 2026): class v4 over the state leaves, from a pack
|
||||
func isPackClass(_ cls: String) -> Bool { cls == "v3" || cls == "v4" || cls == "v5" || cls == "v6" } // class v5 (7 October 2026): class v4 over the state leaves, from a pack; class v6 (8 October 2026): class v5's stored-state dataset with the v6 rules in the kernel text (packfile.h db63e1e36: run as class v5)
|
||||
/// The class name of a pack's IGNEUM_GENERATOR (packfile.h's rule).
|
||||
func packClassOf(generator: UInt32) -> String { generator == 5 ? "v5" : generator == 4 ? "v4" : generator == 3 ? "v3" : "v2" }
|
||||
func packClassOf(generator: UInt32) -> String { generator == 6 ? "v6" : generator == 5 ? "v5" : generator == 4 ? "v4" : generator == 3 ? "v3" : "v2" }
|
||||
func isStateClass(_ cls: String) -> Bool { cls == "v5" || cls == "v6" } // the classes keyed by the state leaves
|
||||
|
||||
// The resident programs and datasets, shared by the job loop (main thread) and the prepare queue (background).
|
||||
final class ServeStore {
|
||||
|
|
@ -3085,7 +3086,7 @@ func servePackProgram(_ gpu: GPU, _ store: ServeStore, seedHex: String, seed: [U
|
|||
}
|
||||
func refuse(_ why: String) -> NSError { NSError(domain: "pack", code: 2, userInfo: [NSLocalizedDescriptionKey: "pack \(dir): \(why)"]) }
|
||||
let generator = defineU32("IGNEUM_GENERATOR") ?? 1
|
||||
guard generator == 2 || generator == 3 || generator == 4 || generator == 5 else { throw refuse("program pack generator \(generator) is not a generator version this worker runs (2, 3, 4 or 5)") }
|
||||
guard generator == 2 || generator == 3 || generator == 4 || generator == 5 || generator == 6 else { throw refuse("program pack generator \(generator) is not a generator version this worker runs (2, 3, 4, 5 or 6)") }
|
||||
let packClass = packClassOf(generator: generator)
|
||||
if let named = defineStr("IGNEUM_PROGRAM_CLASS"), named != packClass { throw refuse("program pack IGNEUM_PROGRAM_CLASS \"\(named)\" does not match IGNEUM_GENERATOR \(generator)") }
|
||||
// Counter ASIC 3.0 (6 October 2026): the shadow block marks class v4 (packfile.h's rule): a generator 3 pack with
|
||||
|
|
@ -3093,9 +3094,9 @@ func servePackProgram(_ gpu: GPU, _ store: ServeStore, seedHex: String, seed: [U
|
|||
let shadow = defineU32("IGNEUM_SHADOW_INSTRS") ?? 0
|
||||
if generator == 4 && shadow == 0 { throw refuse("program pack generator 4 (class v4) without IGNEUM_SHADOW_INSTRS: not a class v4 pack") }
|
||||
// class v5 (7 October 2026) is class v4 over the state leaves: the shadow block and IGNEUM_STATE_LEAVES both mark it
|
||||
if generator == 5 && shadow == 0 { throw refuse("program pack generator 5 (class v5) without IGNEUM_SHADOW_INSTRS: not a class v5 pack") }
|
||||
if generator == 5 && (defineU32("IGNEUM_STATE_LEAVES") ?? 0) == 0 { throw refuse("program pack generator 5 (class v5) without IGNEUM_STATE_LEAVES: no state leaves to key the dataset (export the pack with --state)") }
|
||||
if generator != 5 && (defineU32("IGNEUM_STATE_LEAVES") ?? 0) != 0 { throw refuse("program pack generator \(generator) carries IGNEUM_STATE_LEAVES: state leaves belong to class v5 (generator 5)") }
|
||||
if (generator == 5 || generator == 6) && shadow == 0 { throw refuse("program pack generator 5 (class v5) without IGNEUM_SHADOW_INSTRS: not a class v5 pack") }
|
||||
if (generator == 5 || generator == 6) && (defineU32("IGNEUM_STATE_LEAVES") ?? 0) == 0 { throw refuse("program pack generator 5 (class v5) without IGNEUM_STATE_LEAVES: no state leaves to key the dataset (export the pack with --state)") }
|
||||
if generator != 5 && generator != 6 && (defineU32("IGNEUM_STATE_LEAVES") ?? 0) != 0 { throw refuse("program pack generator \(generator) carries IGNEUM_STATE_LEAVES: state leaves belong to class v5 (generator 5)") }
|
||||
if generator == 3 && shadow != 0 { throw refuse("program pack generator \(generator) with a shadow block (IGNEUM_SHADOW_INSTRS \(shadow)): a class v4 program is generator 4 (export the pack as class v4)") }
|
||||
let eraHex = defineStr("IGNEUM_ERA_SEED_HEX") ?? ""
|
||||
if wantClass != "" && wantClass != packClass { throw refuse("program class mismatch: this pack is class \(packClass), the line names class \(wantClass) (export the pack again)") }
|
||||
|
|
@ -3162,7 +3163,9 @@ func servePackDataset(_ gpu: GPU, _ store: ServeStore, dayHex: String, dir: Stri
|
|||
guard let fillFn = lib.makeFunction(name: "igneum_cache_fill"), let buildFn = lib.makeFunction(name: "igneum_build") else { throw refuse("memhard.metal lacks igneum_cache_fill or igneum_build") }
|
||||
let fillPipe = try gpu.device.makeComputePipelineState(function: fillFn)
|
||||
let buildPipe = try gpu.device.makeComputePipelineState(function: buildFn)
|
||||
let words = 1 << datasetLog2
|
||||
// ds55 (the class v6 research packs, 8 October 2026): a non-power-of-two dataset carries IGNEUM_DATASET_WORDS (the
|
||||
// buffer's size) and IGNEUM_DATASET_ITEMS beside IGNEUM_DATASET_LOG2 (the floor); the kernel text maps (src * words) >> 32
|
||||
let words = defineU64("IGNEUM_DATASET_WORDS").map { Int($0) } ?? (1 << datasetLog2)
|
||||
// Class v5 (docs/design/class-v5-stored-state.md, 7 October 2026): the window's state leaves, leaves.bin beside program.h
|
||||
// (IGNEUM_STATE_LEAVES leaves of 16 little-endian words), checked against the pack's count and FNV-1a 64
|
||||
// (IGNEUM_STATE_LEAVES_FNV64) and bound as buffer 2 of igneum_build with the count in buffer 3 (packbench.swift's shape,
|
||||
|
|
@ -3173,7 +3176,7 @@ func servePackDataset(_ gpu: GPU, _ store: ServeStore, dayHex: String, dir: Stri
|
|||
return UInt64(programH[Range(m.range(at: 1), in: programH)!], radix: 16)
|
||||
}
|
||||
let stateLeaves = defineU32("IGNEUM_STATE_LEAVES") ?? 0
|
||||
if (packClass == "v5") != (stateLeaves > 0) { throw refuse(packClass == "v5" ? "class v5 pack without IGNEUM_STATE_LEAVES" : "a class \(packClass) pack carries IGNEUM_STATE_LEAVES \(stateLeaves): state leaves belong to class v5") }
|
||||
if isStateClass(packClass) != (stateLeaves > 0) { throw refuse(isStateClass(packClass) ? "class v5 pack without IGNEUM_STATE_LEAVES" : "a class \(packClass) pack carries IGNEUM_STATE_LEAVES \(stateLeaves): state leaves belong to class v5") }
|
||||
var leavesBuf: MTLBuffer? = nil
|
||||
var nLeaves: UInt32 = 0
|
||||
if stateLeaves > 0 {
|
||||
|
|
|
|||
|
|
@ -93,8 +93,12 @@ let cacheFnvWant = hex64(vj["cache_fnv1a64"] as! String)
|
|||
let hotFnvWant: UInt64? = (vj["hot_fnv1a64"] as? String).map(hex64)
|
||||
|
||||
guard let device = MTLCreateSystemDefaultDevice(), let queue = device.makeCommandQueue() else { fail("no Metal device") }
|
||||
let words = 1 << datasetLog2
|
||||
let mask = UInt32(words - 1)
|
||||
// ds55 (the class v6 research packs, 8 October 2026): a non-power-of-two dataset carries IGNEUM_DATASET_WORDS and
|
||||
// IGNEUM_DATASET_ITEMS beside IGNEUM_DATASET_LOG2 (the floor); the buffer is sized by the words, the items by ITEMS,
|
||||
// and the kernel text maps an address as (src * words) >> 32, so the mask is the kernel's business, not this host's
|
||||
let datasetWordsDefine = defineU64("IGNEUM_DATASET_WORDS")
|
||||
let words = datasetWordsDefine.map { Int($0) } ?? (1 << datasetLog2)
|
||||
let mask = UInt32(truncatingIfNeeded: (1 << datasetLog2) - 1)
|
||||
let cacheWords = 1 << cacheLog2
|
||||
|
||||
func compile(_ file: String) -> MTLLibrary {
|
||||
|
|
@ -138,7 +142,7 @@ func fnv1a64(_ p: UnsafeRawPointer, _ n: Int) -> UInt64 {
|
|||
for i in 0..<n { h ^= UInt64(b[i]); h = h &* 0x100000001b3 }
|
||||
return h
|
||||
}
|
||||
let items = words / 16
|
||||
let items = defineU64("IGNEUM_DATASET_ITEMS").map { Int($0) } ?? (words / 16)
|
||||
// class v5 (docs/design/class-v5-stored-state.md): a pack with IGNEUM_STATE_LEAVES carries leaves.bin (16 words per leaf), bound
|
||||
// as buffer 2 of igneum_build with the count in buffer 3; the pack's FNV of the leaves is checked first
|
||||
var leavesBuf: MTLBuffer? = nil
|
||||
|
|
|
|||
11
tools/ci/batches/canary-miner-fix-7cfa422a.json
Normal file
11
tools/ci/batches/canary-miner-fix-7cfa422a.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"run_id": "canary-miner-fix-7cfa422a",
|
||||
"manifest_sha": "7cfa422a",
|
||||
"evidence_dir": "docs/release/evidence",
|
||||
"cells": [
|
||||
{"cell": "suite:miner", "cases": ["UX-06"], "status": "PASS", "method": "team-reported",
|
||||
"evidence": "docs/release/evidence/ux-shipper-2026-10-08.md",
|
||||
"note": "the fixed miner 7cfa422a on build-1's seed, 20:05:11 to 20:06:11 BST: 49 templates taken in 60 s, no template error, no amount-high-word refusal, no NODE SLOW; MINER SUMMARY 0.006 MH/s (cpu), VOTER votes 20 of 20; lp-4090-11 on the kit from 20:31: zero refusals, 186 blocks accepted in 320 s; the whole fleet's miners on it by 21:48",
|
||||
"claim_impact": "the miner takes every template the network gives it, including coinbases above a u64"}
|
||||
]
|
||||
}
|
||||
13
tools/ci/batches/census-v6-live-20261008-2210.json
Normal file
13
tools/ci/batches/census-v6-live-20261008-2210.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"run_id": "census-v6-live-20261008-2210",
|
||||
"manifest_sha": "1a938abe4",
|
||||
"evidence_dir": "docs/analysis/class-v6/rows/live-dataset-census-1a938abe4",
|
||||
"cells": [
|
||||
{
|
||||
"cell": "census:class-v6",
|
||||
"status": "PASS",
|
||||
"evidence": "docs/analysis/class-v6/rows/live-dataset-census-1a938abe4.md",
|
||||
"method": "native"
|
||||
}
|
||||
]
|
||||
}
|
||||
11
tools/ci/batches/incident-u64-coinbase-2026-10-08.json
Normal file
11
tools/ci/batches/incident-u64-coinbase-2026-10-08.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"run_id": "incident-u64-coinbase-2026-10-08",
|
||||
"manifest_sha": "4cdcc488",
|
||||
"evidence_dir": "docs/release/evidence",
|
||||
"cells": [
|
||||
{"cell": "suite:miner", "cases": ["UX-06"], "status": "FAIL", "method": "team-reported",
|
||||
"evidence": "docs/release/evidence/ux-shipper-2026-10-08.md",
|
||||
"note": "the shipped miner (4cdcc488, ef0f2ed8) refused every block template whose coinbase exceeded a u64 (rpc/core/src/error.rs:131; the base unit installed only for `inspect`); the fleet fell to a two-key branch, 0 blocks per minute at 19:54 BST",
|
||||
"claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy"}
|
||||
]
|
||||
}
|
||||
17
tools/ci/batches/kit-class-v6-20261008-01.json
Normal file
17
tools/ci/batches/kit-class-v6-20261008-01.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"run_id": "kit-class-v6-20261008-01",
|
||||
"manifest_sha": "ef0f2ed8",
|
||||
"evidence_dir": "docs/design/class-v5-stored-state.md",
|
||||
"boxes": [
|
||||
"build-1"
|
||||
],
|
||||
"cells": [
|
||||
{
|
||||
"cell": "kit:class-v6-fingerprints",
|
||||
"status": "RUNNING",
|
||||
"evidence": "docs/design/class-v5-stored-state.md; build-1:/srv/artefacts/packs/packs-class-v6-20261008T202808Z.zip; build-1:/srv/builds/_log/v5-class/kits-20261008T202808Z/emu-check.log",
|
||||
"note": "docs/design/class-v5-stored-state.md section 0, the class v6 kit row: the generator 6 packs hl-v6-all 4de7b836cc40a4ea and hl-v6-foldrw d7eba30115d26dd4 read e8f4f3289c6ee1fc and 6ce3dc344a613500 on the CPU emulation check, the CUDA 4090, Metal and Apple OpenCL (20:41 to 20:52 UK); the RTX 5090, RX 7600 and Arc rows the morning's; the kit zip 4 bb66a546 (kernel texts byte-identical to zip 3)"
|
||||
}
|
||||
],
|
||||
"method": "GPU"
|
||||
}
|
||||
|
|
@ -698,6 +698,20 @@
|
|||
"coverage": {
|
||||
"ADV-06": "partial: the placed gated cores and the adversary's forms are modelled in shadow-k.md; the independent review remains"
|
||||
}
|
||||
},
|
||||
"kit:class-v6-fingerprints": {
|
||||
"command": "KITS_BOX_SCRIPT=kits-v6-on-box.sh tools/class-v5/kits-remote.sh --box 1 (the kit zip with its emulation check), then the kit's workers on every platform: the box's CPU emulation (--check, 96 of 96 vector lanes), the fleet's CUDA 4090 (--check and --bench at 2^24, base nonce 0), the Mac's Metal (proto-metal/packbench.swift --pack) and Apple OpenCL (proto-opencl/host.c --pack --bench-pack), PC 1's RTX 5090 and RX 7600 (tools/class-v5/pc1-v6-bench.ps1), PC 2's Arc B580 (tools/class-v5/arc-v6-bench.ps1); the fingerprint of the 2^24 outputs at base nonce 0 equal on every platform for the all pack and for its known-failed partner, the two distinct",
|
||||
"box_class": "build box + pods + Mac + PC 1 + PC 2",
|
||||
"fixtures": [
|
||||
"F0",
|
||||
"F2"
|
||||
],
|
||||
"cases": [
|
||||
"R2-F03-R02"
|
||||
],
|
||||
"coverage": {
|
||||
"R2-F03-R02": "partial: the worker half (CPU reference, CUDA, Metal, OpenCL) on the same program packs; the node's and the pool's accepted work on the same job context are the CI steward's and the pool lane's cells; PASS only when every listed platform reads one fingerprint and the node and pool halves are green"
|
||||
}
|
||||
}
|
||||
},
|
||||
"not_run": {
|
||||
|
|
|
|||
103
tools/class-v5/arc-v6-bench.ps1
Normal file
103
tools/class-v5/arc-v6-bench.ps1
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
# Class v6 kit (8 October 2026, the coordinator's order): the arc job of the v5 script with the class v6 packs: hl-v6-foldrw (the
|
||||
# known-failed partner; expected fingerprint 6ce3dc344a613500, the Mac's Metal and Apple OpenCL reading) and hl-v6-all (the
|
||||
# all-together pack, id 9d40978601a7df2a; with the second zip its OpenCL text is the window's real text and the expected
|
||||
# fingerprint is the CUDA reference e8f4f3289c6ee1fc; the first zip's stub refused it, that refusal line being that run's record).
|
||||
# Kit fetch job fetch-class-v6-kit-20261008-g6 = the third zip packs-class-v6-20261008T194045Z.zip (735e1411...), generator 6 packs; the
|
||||
# earlier dir fetch-class-v6-kit-20261008 holds zip 2 (generator 5) and stays as the generator 5 record's kit.
|
||||
# Class v5 kit bench on the Intel Arc B580 (7 October 2026, 23:5x UK, main's word: the B580 is the eGPU of the second PC,
|
||||
# so the Intel fingerprint runs there through the hash lane's job queue as a lock-free, non-elevated, quiet job, never beside
|
||||
# an install or a build; the page names no PC): tools/class-v5/pc1-amd-v5-bench.ps1 with the device
|
||||
# match on the Intel OpenCL platform (Arc / B580) instead of gfx1201; everything else identical (the v5-dn3-epoch0 pack,
|
||||
# the v4-genesis control, RESULT lines, SUMMARY {json}). Expected fingerprint 6ce3dc344a613500.
|
||||
# Class v5 kit bench on PC 1's RX 9070 XT (7 October 2026, docs/design/class-v5-stored-state.md section 13, "the kit:
|
||||
# OpenCL (AMD)"): the kit's igneum-worker-opencl.exe (THIS tree's proto-opencl/host.c with the class v5 leaf upload:
|
||||
# igneum_build(ds, cache, leaves, nLeaves, nItems), the leaves of leaves.bin checked against the pack's FNV-1a 64 first)
|
||||
# runs --bench-pack on the first class v5 pack, proto-cuda/packs-ca3-v5/v5-dn3-epoch0 (program id e5a4ac5978462156, 11
|
||||
# leaves under state root 7e37a9fb..., cache FNV 7334fa46e5d972eb), on the gfx1201 device. Expected: the self-test
|
||||
# PASS line (cache head, last line and FNV; dataset head, word [268435455] and 64 samples; 96 of 96 vector lanes) and the
|
||||
# fingerprint of the 2^24 outputs at base nonce 0 equal to the Metal reading, 6ce3dc344a613500 (the M5 Max, 7 October
|
||||
# 2026, 18:07:09Z). The v4-genesis control pack runs after it so the run has a known class v4 row beside the v5 row.
|
||||
# Beside the miners (a correctness and fingerprint gate; the rate row is labelled loaded when the card mines): no card is
|
||||
# switched, nothing is posted to the installed app, nothing is built on the PC. Published by the Counter ASIC coordinator
|
||||
# only (the PC 1 queue is its); the kit is fetch job $kitId. Every result line starts with RESULT; SUMMARY {json} ends it.
|
||||
# Post-review packs (8 October 2026, 20:4x UK, the third kit zip packs-class-v6-20261008T194045Z.zip, sha256 735e1411...): the packs are
|
||||
# generator 6 (class v6; ids hl-v6-all 4de7b836cc40a4ea, hl-v6-foldrw d7eba30115d26dd4) and the expected fingerprints are the
|
||||
# Mac's Metal and Apple OpenCL reading of them (all pack e8f4f3289c6ee1fc, partner 6ce3dc344a613500); the generator 5 zips' values
|
||||
# (59e6708e46f1e87c and 5a6ad122a71a888f) belong to the superseded packs and no longer match by construction.
|
||||
$ErrorActionPreference = 'Continue'
|
||||
$jobName = 'arc-v6-bench'
|
||||
$kitId = $env:IGNEUM_V5_KIT_ID; if (-not $kitId) { $kitId = 'fetch-class-v6-kit-20261008-g6' } # a fresh dir for the generator 6 zip: a fetch into the old dir left zip 2's files in place (PC 2, 20:17 UK)
|
||||
$expected = '6ce3dc344a613500'
|
||||
$started = Get-Date
|
||||
function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') }
|
||||
function Summary([string] $status, [hashtable] $extra) {
|
||||
$o = [ordered]@{ job = $jobName; status = $status; duration_s = [int]((Get-Date) - $started).TotalSeconds; finished_at = (Stamp) }
|
||||
foreach ($k in $extra.Keys) { $o[$k] = $extra[$k] }
|
||||
'SUMMARY ' + ($o | ConvertTo-Json -Compress -Depth 4)
|
||||
}
|
||||
"RESULT start $(Stamp) job=$jobName machine=$env:COMPUTERNAME app_version=$env:IGNEUM_APP_VERSION expected_fingerprint=$expected"
|
||||
$jobs = Split-Path $env:IGNEUM_JOB_DIR
|
||||
$kit = Join-Path $jobs $kitId
|
||||
if (-not (Test-Path $kit)) { "RESULT error kit missing at $kit (the fetch job $kitId runs first; republish it after any app update)"; Summary 'failed' @{ error = 'kit missing' }; exit 2 }
|
||||
$exe = Join-Path $kit 'bin\windows\igneum-worker-opencl.exe'
|
||||
$packs = Join-Path $kit 'packs'
|
||||
if (-not (Test-Path $exe)) { "RESULT error worker missing at $exe"; Summary 'failed' @{ error = 'worker missing' }; exit 2 }
|
||||
"RESULT worker kit $exe sha256 $((Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower()) bytes $((Get-Item $exe).Length)"
|
||||
foreach ($pk in @('hl-v6-foldrw', 'hl-v6-all')) {
|
||||
$d = Join-Path $packs $pk
|
||||
if (-not (Test-Path (Join-Path $d 'kernel_bound.cl'))) { "RESULT error pack $pk missing at $d"; Summary 'failed' @{ error = "pack $pk missing" }; exit 2 }
|
||||
"RESULT pack $pk kernel_bound.cl sha256 $((Get-FileHash -Algorithm SHA256 (Join-Path $d 'kernel_bound.cl')).Hash.ToLower()) program.h sha256 $((Get-FileHash -Algorithm SHA256 (Join-Path $d 'program.h')).Hash.ToLower())"
|
||||
}
|
||||
# the class v6 kit's packs each carry their own leaves.bin (the class v5 script checked one pack by name; the 18:01 UK run on
|
||||
# PC 1 stopped on that name before the device list)
|
||||
foreach ($lp in @('hl-v6-foldrw', 'hl-v6-all')) {
|
||||
$leaves = Join-Path $packs ($lp + '\leaves.bin')
|
||||
if (-not (Test-Path $leaves)) { "RESULT error leaves.bin missing at $leaves (a class v5 pack without its leaves builds nothing)"; Summary 'failed' @{ error = 'leaves missing'; pack = $lp }; exit 2 }
|
||||
"RESULT leaves $lp $((Get-Item $leaves).Length) bytes sha256 $((Get-FileHash -Algorithm SHA256 $leaves).Hash.ToLower())"
|
||||
}
|
||||
# the OpenCL device index of the 9070 XT (the installed worker's list when present: the app's own indices)
|
||||
$inst = @("$env:LOCALAPPDATA\Programs\Igneum Miner", "$env:ProgramFiles\Igneum Miner") | Where-Object { Test-Path (Join-Path $_ 'igneum-app.exe') } | Select-Object -First 1
|
||||
$listExe = $exe
|
||||
if ($inst -and (Test-Path (Join-Path $inst 'igneum-worker-opencl.exe'))) { $listExe = Join-Path $inst 'igneum-worker-opencl.exe' }
|
||||
$list = @(& $listExe --list 2>&1 | ForEach-Object { "$_" })
|
||||
$list | ForEach-Object { "RESULT list $_" }
|
||||
$dev = $null
|
||||
foreach ($l in $list) { if ($l -match '^\s*\[(\d+)\].*(Intel|Arc|B580)' -and $l -notmatch 'dup') { $dev = [int]$Matches[1]; break } }
|
||||
if ($null -eq $dev) { "RESULT error no Intel Arc device in --list (the B580 is off the bus or has no OpenCL runtime: the Intel v5 row stays OWED)"; Summary 'failed' @{ error = 'no intel arc' }; exit 2 }
|
||||
"RESULT device $dev Intel Arc (list from $listExe)"
|
||||
function Workers { @(Get-CimInstance Win32_Process -Filter "Name = 'igneum-worker-opencl.exe' OR Name = 'igneum-worker-cuda.exe'" -ErrorAction SilentlyContinue | ForEach-Object { "$($_.Name):$($_.ProcessId):[$($_.CommandLine -replace '\s+', ' ')]" }) }
|
||||
$w = @(Workers)
|
||||
$loaded = ($w | Where-Object { $_ -match "igneum-worker-opencl.*--device\s+$dev(\s|$)" }).Count -gt 0
|
||||
"RESULT workers_before $(Stamp) $($w -join ' ')"
|
||||
$state = if ($loaded) { 'loaded' } else { 'quiet' }
|
||||
"RESULT context card_state=$state (a fingerprint gate: the load changes the rate row, never the bytes)"
|
||||
$rows = @{}
|
||||
$fpOk = $false
|
||||
foreach ($pk in @('hl-v6-foldrw', 'hl-v6-all')) {
|
||||
$d = Join-Path $packs $pk
|
||||
$t0 = Get-Date
|
||||
"RESULT bench $pk start $(Stamp) cmd=igneum-worker-opencl.exe --bench-pack --pack $d --device $dev --batch-log2 24 --batches 5"
|
||||
$out = @(& $exe --bench-pack --pack $d --device $dev --batch-log2 24 --batches 5 2>&1 | ForEach-Object { "$_" })
|
||||
$code = $LASTEXITCODE
|
||||
$secs = [int]((Get-Date) - $t0).TotalSeconds
|
||||
# the whole stdout, line by line (the 09:36 UK run kept one line per pack and lost the host's exchange, kernel,
|
||||
# rotate-fold and build-log lines, which the diagnosis needed)
|
||||
foreach ($l in $out) { "RESULT bench $pk out $l" }
|
||||
$res = $out | Where-Object { $_ -match '^RESULT ' } | Select-Object -Last 1
|
||||
$fp = ''; $mhs = ''; $check = ''
|
||||
if ($res -match 'fingerprint=([0-9a-f]{16})') { $fp = $Matches[1] }
|
||||
if ($res -match 'mhs=([0-9.]+)') { $mhs = $Matches[1] }
|
||||
if ($res -match 'check=(\w+)') { $check = $Matches[1] }
|
||||
$rows[$pk] = [ordered]@{ exit = $code; seconds = $secs; fingerprint = $fp; mhs = $mhs; check = $check; card_state = $state }
|
||||
if ($pk -eq 'hl-v6-foldrw') {
|
||||
$fpOk = ($fp -eq $expected -and $check -eq 'PASS')
|
||||
"RESULT partner fingerprint=$fp expected=$expected match=$fpOk check=$check mhs=$mhs card_state=$state exit=$code seconds=$secs $(Stamp)"
|
||||
} else {
|
||||
# the all pack: with the window's OpenCL text (the second zip) a fingerprint, expected the CUDA reference e8f4f3289c6ee1fc
|
||||
$allOk = ($fp -eq 'e8f4f3289c6ee1fc' -and $check -eq 'PASS')
|
||||
"RESULT all-pack fingerprint=$fp expected=e8f4f3289c6ee1fc match=$allOk check=$check mhs=$mhs card_state=$state exit=$code seconds=$secs $(Stamp)"
|
||||
}
|
||||
}
|
||||
"RESULT workers_after $(Stamp) $((@(Workers)) -join ' ')"
|
||||
Summary $(if ($fpOk) { 'done' } else { 'failed' }) @{ expected = $expected; partner = $rows['hl-v6-foldrw']; all_pack = $rows['hl-v6-all']; device = $dev; kit = $kitId }
|
||||
exit $(if ($fpOk) { 0 } else { 1 })
|
||||
|
|
@ -13,9 +13,9 @@
|
|||
#
|
||||
# Takes one of the box's build slots through infra/build-server/remote-run.sh (bs_remote_run), box 1 by default (the
|
||||
# build-server lane's word of 7 October 2026, 19:4x BST: the kit builds on build-1 explicitly). The work itself is
|
||||
# tools/class-v5/kits-on-box.sh, a script file run by path on the box (the inline-rm rule of 21:33 BST); when the
|
||||
# tools/class-v5/kits-on-box.sh (or KITS_BOX_SCRIPT=kits-v6-on-box.sh for the class v6 kit), a script file run by path on the box (the inline-rm rule of 21:33 BST); when the
|
||||
# build-server lane's lease tool is in place, the same file goes through `/srv/builds/_bin/lease pool <threads> -- bash
|
||||
# tools/class-v5/kits-on-box.sh ...` with the label "v5 kit".
|
||||
# tools/class-v5/${KITS_BOX_SCRIPT:-kits-on-box.sh} ...` with the label "v5 kit".
|
||||
set -euo pipefail
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BS_TOOL=class-v5-kits
|
||||
|
|
@ -34,9 +34,9 @@ ZIP="/srv/artefacts/packs/packs-ca3-v5-$STAMP.zip"
|
|||
bs_toolchain_check
|
||||
bs_sync_sources
|
||||
bs_log "sources at $WT (commit $BS_SHA on $BS_BRANCH); building the class v5 kits on box $BOX"
|
||||
# the body runs from a script FILE at the worktree's mirror checkout (tools/class-v5/kits-on-box.sh, carried by the commit), never
|
||||
# the body runs from a script FILE at the worktree's mirror checkout (tools/class-v5/${KITS_BOX_SCRIPT:-kits-on-box.sh}, carried by the commit), never
|
||||
# an inline string: main's rule of 7 October 2026, 21:33 BST (no rm, find -delete or truncation inside a bash -c string)
|
||||
CMD="cd '$WT' && bash tools/class-v5/kits-on-box.sh '$STAMP' '$SKIP_EMU'"
|
||||
CMD="cd '$WT' && bash tools/class-v5/${KITS_BOX_SCRIPT:-kits-on-box.sh} '$STAMP' '$SKIP_EMU'"
|
||||
set +e
|
||||
BR_KIND=build BR_COMMAND="class v5 kits (packfile-test, emu --check v5, Linux and Windows workers, kit zip)" BR_TARGET="x86_64-linux+windows" BR_ARTEFACTS="" \
|
||||
bs_remote_run "$WT" "$BS_WT class-v5 kits" "$CMD" 2>&1 | tee "/tmp/v5-kits-$STAMP.log" | grep -E '^(STEP|FAIL|KIT|BIN|LOGS|check PASS|self-test|packfile-test|emu:| v5|build-remote: RESULT)'
|
||||
|
|
|
|||
98
tools/class-v5/kits-v6-on-box.sh
Executable file
98
tools/class-v5/kits-v6-on-box.sh
Executable file
|
|
@ -0,0 +1,98 @@
|
|||
#!/usr/bin/env bash
|
||||
# The class v5 kit build as it runs ON igneum-build-1 (called by tools/class-v5/kits-remote.sh through the build-server
|
||||
# library's remote runner, from the worktree's mirror checkout, so this file travels with the commit). A script file by
|
||||
# path, never an inline string: main's rule of 7 October 2026, 21:33 BST (no rm, find -delete or truncation inside a
|
||||
# `bash -c` string; tools/ci/inline-rm-check.sh). What it does, in order: the pack loader test with the class v5 cases,
|
||||
# the Linux and Windows builds of the two one-click workers, the CPU emulation's --check on the class v5 pack, then the
|
||||
# kit zip at /srv/artefacts/packs/packs-ca3-v5-<stamp>.zip with SHA256SUMS. Logs land in /srv/builds/_log/v5-class/kits-<stamp>.
|
||||
# bash tools/class-v5/kits-on-box.sh <stamp> <skip-emu 0|1> (cwd = the worktree root on the box)
|
||||
set -u
|
||||
STAMP="${1:?stamp}"; SKIP_EMU="${2:-0}"
|
||||
ZIP="/srv/artefacts/packs/packs-class-v6-$STAMP.zip"
|
||||
LOGDIR="/srv/builds/_log/v5-class/kits-$STAMP"
|
||||
T=$(mktemp -d /tmp/v5-kits.XXXXXX); S=$T/stage; mkdir -p "$S/bin/linux" "$S/bin/windows" "$S/src" "$S/packs" "$S/tools" "$LOGDIR"
|
||||
rc=0
|
||||
step() { echo "STEP $1 $(date -u +%H:%M:%SZ)"; }
|
||||
fail() { echo "FAIL $1"; rc=1; }
|
||||
finish() { cp "$T"/*.log "$LOGDIR"/ 2>/dev/null; echo "LOGS $LOGDIR"; rm -rf "$T"; }
|
||||
# class v6 (8 October 2026, the coordinator's order): the all-together pack and its known-failed partner come from the hash
|
||||
# lane's tgz files on build-1 (V6_ALL and V6_PARTNER, default hl-v6-all and hl-v6-foldrw), extracted beside the stage;
|
||||
# the emulation check runs pack A = the all pack against pack B = the partner, and the two ids must differ
|
||||
V6_ALL="${V6_ALL:-hl-v6-all}"; V6_PARTNER="${V6_PARTNER:-hl-v6-foldrw}"
|
||||
PK=$T/v6packs; mkdir -p "$PK"
|
||||
for p in "$V6_ALL" "$V6_PARTNER"; do tar -xzf "/srv/artefacts/packs/$p.tgz" -C "$PK" 2>/dev/null || { echo "FAIL no pack tgz /srv/artefacts/packs/$p.tgz"; exit 1; }; done
|
||||
rm -rf "$PK"/._* "$PK"/*/._* 2>/dev/null
|
||||
V5="$PK/$V6_ALL"; V6P="$PK/$V6_PARTNER"
|
||||
echo "PACKS $V6_ALL id $(grep -oE 'IGNEUM_PROGRAM_ID 0x[0-9a-f]+' "$V5/program.h" | awk '{print $2}') | $V6_PARTNER id $(grep -oE 'IGNEUM_PROGRAM_ID 0x[0-9a-f]+' "$V6P/program.h" | awk '{print $2}')"
|
||||
[ "$(grep -oE 'IGNEUM_PROGRAM_ID 0x[0-9a-f]+' "$V5/program.h")" != "$(grep -oE 'IGNEUM_PROGRAM_ID 0x[0-9a-f]+' "$V6P/program.h")" ] || { echo "FAIL the all pack and its partner carry one id"; exit 1; }
|
||||
# the test's third argument is its class v5 known-good (the checked-in Devnet 3 epoch 0 pack, generator 5, 11 leaves); the kit's all
|
||||
# pack is generator 6 since the post-review export (class v6, 93 leaves) and fails that check by construction (the third kit build,
|
||||
# 20:38 UK), so the checked-in pack is named and the v6 packs are read by the emulation check below
|
||||
step packfile-test
|
||||
cc -std=c99 -Wall -Wextra -Wno-unused-function -O1 -o "$T/packfile-test" proto-cuda/nvrtc/emu/packfile-test.c && "$T/packfile-test" proto-cuda/packs/igneum-devnet-v4-epoch0 proto-cuda/packs-ca3-v5/v5-dn3-epoch0 > "$T/packfile-test.log" 2>&1 || fail "packfile-test ($(tail -1 "$T/packfile-test.log"))"
|
||||
grep -E '^(FAIL| v5 pack)' "$T/packfile-test.log"; grep -c '^ok' "$T/packfile-test.log" | sed 's/^/packfile-test ok lines /'
|
||||
step linux-opencl-worker
|
||||
gcc -std=c99 -O2 -Wall -Wextra -Wno-stringop-truncation -Wno-format-truncation -DIGNEUM_CL_DYNAMIC -DCL_TARGET_OPENCL_VERSION=120 -I proto-cuda/packs/igneum-devnet-v4-epoch0 -DIGNEUM_KERNEL_PATH='"kernel_bound.cl"' -o "$S/bin/linux/igneum-worker-opencl" proto-opencl/host.c -ldl -lpthread 2> "$T/cl-linux.log" || { fail "linux opencl worker"; head -20 "$T/cl-linux.log"; }
|
||||
step linux-cuda-worker
|
||||
g++ -std=c++17 -O2 -Wall -Wextra -I proto-cuda/nvrtc -I /usr/local/cuda/include -o "$S/bin/linux/igneum-worker-cuda" proto-cuda/nvrtc/worker.cpp -ldl -lpthread 2> "$T/cuda-linux.log" || { fail "linux cuda worker"; head -20 "$T/cuda-linux.log"; }
|
||||
step windows-cuda-worker
|
||||
x86_64-w64-mingw32-g++ -std=c++17 -O2 -Wall -Wextra -static -I proto-cuda/nvrtc -I /usr/local/cuda/include -o "$S/bin/windows/igneum-worker-cuda.exe" proto-cuda/nvrtc/worker.cpp 2> "$T/cuda-win.log" && x86_64-w64-mingw32-strip "$S/bin/windows/igneum-worker-cuda.exe" || { fail "windows cuda worker"; head -20 "$T/cuda-win.log"; }
|
||||
step windows-opencl-worker
|
||||
# the Khronos CL headers alone (never -I /usr/include: that puts glibc's stdint.h ahead of mingw's)
|
||||
mkdir -p "$T/inc" && cp -r /usr/include/CL "$T/inc/"
|
||||
x86_64-w64-mingw32-gcc -std=c99 -O2 -Wall -Wextra -Wno-stringop-truncation -Wno-format-truncation -static -DIGNEUM_CL_DYNAMIC -DCL_TARGET_OPENCL_VERSION=120 -I "$T/inc" -I proto-cuda/packs/igneum-devnet-v4-epoch0 -DIGNEUM_KERNEL_PATH='"kernel_bound.cl"' -o "$S/bin/windows/igneum-worker-opencl.exe" proto-opencl/host.c 2> "$T/cl-win.log" && x86_64-w64-mingw32-strip "$S/bin/windows/igneum-worker-opencl.exe" || { fail "windows opencl worker"; head -20 "$T/cl-win.log"; }
|
||||
if [ "$SKIP_EMU" = 0 ]; then
|
||||
step emu-check-v5
|
||||
# the CPU emulation (proto-cuda/nvrtc/emu/test.sh's build) with pack A = the class v5 pack and pack B = the v4 control
|
||||
E=$T/emu; mkdir -p "$E"
|
||||
emu_kernel() { { echo '#include <cuda_runtime.h>'; echo '#include <cstdint>'; echo "namespace $2 {"; sed -E 's/([A-Za-z_0-9]+)<<<([^,]+), ([^>]+)>>>\(/emu_launch(\1, \2, \3, /' "$1/$3.cu"; echo "}"; } > "$E/$3_$2.cpp"; g++ -std=c++17 -O2 -w -I proto-cuda/emu -I "$1" -c "$E/$3_$2.cpp" -o "$E/$3_$2.o"; }
|
||||
emu_kernel "$V5" emu_pack_a kernel && emu_kernel "$V5" emu_pack_a kernel_bound && emu_kernel "$V6P" emu_pack_b kernel && emu_kernel "$V6P" emu_pack_b kernel_bound \
|
||||
&& g++ -std=c++17 -O2 -Wall -Wextra -DIGNEUM_EMU -I proto-cuda/nvrtc -I /usr/local/cuda/include -c proto-cuda/nvrtc/worker.cpp -o "$E/worker.o" \
|
||||
&& g++ -std=c++17 -O2 -Wall -Wextra -DIGNEUM_EMU -DIGNEUM_EMU_TWO_PACKS -I proto-cuda/nvrtc -I proto-cuda/emu -I /usr/local/cuda/include -c proto-cuda/nvrtc/emu/emu_backend.cpp -o "$E/emu_backend.o" \
|
||||
&& g++ -std=c++17 -O2 -w -I proto-cuda/emu -c proto-cuda/emu/shim.cpp -o "$E/shim.o" \
|
||||
&& g++ -o "$E/igneum-worker-cuda-emu" "$E"/*.o -pthread 2> "$T/emu-build.log" || { fail "emu build"; head -30 "$T/emu-build.log"; }
|
||||
if [ -x "$E/igneum-worker-cuda-emu" ]; then
|
||||
( IGNEUM_EMU_PACK="$V5" IGNEUM_EMU_PACK2="$V6P" timeout 1500 nice -n 10 "$E/igneum-worker-cuda-emu" --check --pack "$V5" > "$T/emu-check.log" 2>&1 ) || fail "emu --check on the class v5 pack (rc $?)"
|
||||
grep -E '^check PASS|self-test|FAIL|error' "$T/emu-check.log" | cut -c1-400
|
||||
fi
|
||||
fi
|
||||
if [ "$rc" != 0 ]; then echo "KIT not written: a step failed (rc $rc)"; finish; exit 1; fi
|
||||
step stage
|
||||
for p in "$V6_ALL" "$V6_PARTNER"; do mkdir -p "$S/packs/$p"; cp "$PK/$p"/* "$S/packs/$p/"; done
|
||||
cp proto-cuda/nvrtc/worker.cpp proto-cuda/nvrtc/packfile.h proto-cuda/nvrtc/cuda_api.h proto-opencl/host.c proto-opencl/cl_dynamic.h proto-newpow/class-v5/bench.cu proto-newpow/class-v5/run.sh proto-metal/packbench.swift "$S/src/"
|
||||
cp tools/class-v5/fleet-cuda-v5-bench.sh tools/class-v5/pc1-amd-v5-bench.ps1 "$S/tools/"
|
||||
cat > "$S/README.txt" <<'R'
|
||||
packs-class-v6: the class v6 kit (Igneum, 8 October 2026; docs/design/class-v5-stored-state.md section 0, the class v6 row): the all-together pack and its known-failed partner
|
||||
packs/v5-dn3-epoch0 the first class v5 pack: Devnet 3 epoch 0, program id e5a4ac5978462156, 11 state leaves (leaves.bin, 704 B) under
|
||||
state root 7e37a9fb19b154d32daf5bf30a50d339a75029fbc9eec9ea20e95439dba5a311, cache FNV-1a 64 7334fa46e5d972eb
|
||||
expected fingerprint of the 2^24 outputs at base nonce 0: 82b19cbde8557ea5 (Metal, M5 Max, 18:07:09Z) on every platform
|
||||
packs/v5-genesis the string-seed class v5 pack over the devnet's 93 leaves; packs/v4-genesis the class v4 control (sub-version 3)
|
||||
bin/linux igneum-worker-cuda (NVRTC, libcuda + libnvrtc.so.12 at run time), igneum-worker-opencl (libOpenCL.so.1 at run time)
|
||||
bin/windows igneum-worker-cuda.exe (nvcuda.dll + nvrtc64 at run time), igneum-worker-opencl.exe (OpenCL.dll at run time)
|
||||
Every worker reads a class v5 pack's leaves.bin, checks it against the pack's IGNEUM_STATE_LEAVES_FNV64, uploads it for igneum_build and
|
||||
frees it after the build; a pack without its leaves builds nothing. Self-test: cache head, last line and FNV; dataset head, last word and
|
||||
64 samples; 96 vector lanes. Bench: igneum-worker-cuda --bench --pack packs/v5-dn3-epoch0 --batch-log2 24 (fleet-cuda-v5-bench.sh);
|
||||
igneum-worker-opencl --bench-pack --pack packs/v5-dn3-epoch0 --batch-log2 24 --device <n> (pc1-amd-v5-bench.ps1); src/bench.cu with nvcc.
|
||||
Intel: not measured tonight (7 October 2026); no Arc B580 sits on PC 1 or PC 2 and the only Arc path needs a driver click, which no PC job
|
||||
may raise; the card's holder and a click-free driver path are owed. The OpenCL worker takes the Intel device by index the same way.
|
||||
R
|
||||
( cd "$S" && find . -type f ! -name SHA256SUMS | sort | xargs sha256sum > SHA256SUMS )
|
||||
mkdir -p /srv/artefacts/packs
|
||||
python3 - "$S" "$ZIP" <<'PY'
|
||||
import os, sys, zipfile
|
||||
stage, out = sys.argv[1], sys.argv[2]
|
||||
with zipfile.ZipFile(out, 'w', zipfile.ZIP_DEFLATED) as z:
|
||||
for dp, dn, fn in os.walk(stage):
|
||||
dn.sort()
|
||||
for f in sorted(fn):
|
||||
p = os.path.join(dp, f); rel = os.path.relpath(p, stage)
|
||||
zi = zipfile.ZipInfo(rel, date_time=(2026, 10, 7, 0, 0, 0)); zi.compress_type = zipfile.ZIP_DEFLATED
|
||||
zi.external_attr = (0o755 if rel.startswith('bin/') or rel.endswith('.sh') else 0o644) << 16
|
||||
with open(p, 'rb') as fh: z.writestr(zi, fh.read())
|
||||
PY
|
||||
sha256sum "$ZIP" | cut -c1-64 > "$ZIP.sha256"
|
||||
echo "KIT $ZIP bytes $(stat -c %s "$ZIP") files $(python3 -c "import zipfile,sys; print(len(zipfile.ZipFile(sys.argv[1]).namelist()))" "$ZIP")"
|
||||
echo "KIT sha256 $(cat "$ZIP.sha256")"
|
||||
for b in "$S"/bin/linux/* "$S"/bin/windows/*; do echo "BIN $(basename "$(dirname "$b")")/$(basename "$b") $(stat -c %s "$b") bytes sha256 $(sha256sum "$b" | cut -c1-64)"; done
|
||||
finish
|
||||
exit 0
|
||||
95
tools/class-v5/pc1-v6-bench.ps1
Normal file
95
tools/class-v5/pc1-v6-bench.ps1
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
# Class v6 kit (8 October 2026, the coordinator's order): the amd job of the v5 script with the class v6 packs: hl-v6-foldrw (the
|
||||
# known-failed partner; expected fingerprint 6ce3dc344a613500, the Mac's Metal and Apple OpenCL reading) and hl-v6-all (the
|
||||
# all-together pack, id 9d40978601a7df2a; with the second zip its OpenCL text is the window's real text and the expected
|
||||
# fingerprint is the CUDA reference e8f4f3289c6ee1fc; the first zip's stub refused it, that refusal line being that run's record).
|
||||
# Kit fetch job fetch-class-v6-kit-20261008 = the second zip (packs-class-v6-<stamp>.zip named in the job's publish line).
|
||||
# Class v5 kit bench on PC 1's RX 9070 XT (7 October 2026, docs/design/class-v5-stored-state.md section 13, "the kit:
|
||||
# OpenCL (AMD)"): the kit's igneum-worker-opencl.exe (THIS tree's proto-opencl/host.c with the class v5 leaf upload:
|
||||
# igneum_build(ds, cache, leaves, nLeaves, nItems), the leaves of leaves.bin checked against the pack's FNV-1a 64 first)
|
||||
# runs --bench-pack on the first class v5 pack, proto-cuda/packs-ca3-v5/v5-dn3-epoch0 (program id e5a4ac5978462156, 11
|
||||
# leaves under state root 7e37a9fb..., cache FNV 7334fa46e5d972eb), on the gfx1201 device. Expected: the self-test
|
||||
# PASS line (cache head, last line and FNV; dataset head, word [268435455] and 64 samples; 96 of 96 vector lanes) and the
|
||||
# fingerprint of the 2^24 outputs at base nonce 0 equal to the Metal reading, 6ce3dc344a613500 (the M5 Max, 7 October
|
||||
# 2026, 18:07:09Z). The v4-genesis control pack runs after it so the run has a known class v4 row beside the v5 row.
|
||||
# Beside the miners (a correctness and fingerprint gate; the rate row is labelled loaded when the card mines): no card is
|
||||
# switched, nothing is posted to the installed app, nothing is built on the PC. Published by the Counter ASIC coordinator
|
||||
# only (the PC 1 queue is its); the kit is fetch job $kitId. Every result line starts with RESULT; SUMMARY {json} ends it.
|
||||
# Post-review packs (8 October 2026, 20:4x UK, the third kit zip packs-class-v6-20261008T194045Z.zip, sha256 735e1411...): the packs are
|
||||
# generator 6 (class v6; ids hl-v6-all 4de7b836cc40a4ea, hl-v6-foldrw d7eba30115d26dd4) and the expected fingerprints are the
|
||||
# Mac's Metal and Apple OpenCL reading of them (all pack e8f4f3289c6ee1fc, partner 6ce3dc344a613500); the generator 5 zips' values
|
||||
# (59e6708e46f1e87c and 5a6ad122a71a888f) belong to the superseded packs and no longer match by construction.
|
||||
$ErrorActionPreference = 'Continue'
|
||||
$jobName = 'pc1-v6-bench'
|
||||
$kitId = $env:IGNEUM_V5_KIT_ID; if (-not $kitId) { $kitId = 'fetch-class-v6-kit-20261008' }
|
||||
$expected = '6ce3dc344a613500'
|
||||
$started = Get-Date
|
||||
function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') }
|
||||
function Summary([string] $status, [hashtable] $extra) {
|
||||
$o = [ordered]@{ job = $jobName; status = $status; duration_s = [int]((Get-Date) - $started).TotalSeconds; finished_at = (Stamp) }
|
||||
foreach ($k in $extra.Keys) { $o[$k] = $extra[$k] }
|
||||
'SUMMARY ' + ($o | ConvertTo-Json -Compress -Depth 4)
|
||||
}
|
||||
"RESULT start $(Stamp) job=$jobName machine=$env:COMPUTERNAME app_version=$env:IGNEUM_APP_VERSION expected_fingerprint=$expected"
|
||||
$jobs = Split-Path $env:IGNEUM_JOB_DIR
|
||||
$kit = Join-Path $jobs $kitId
|
||||
if (-not (Test-Path $kit)) { "RESULT error kit missing at $kit (the fetch job $kitId runs first; republish it after any app update)"; Summary 'failed' @{ error = 'kit missing' }; exit 2 }
|
||||
$exe = Join-Path $kit 'bin\windows\igneum-worker-opencl.exe'
|
||||
$packs = Join-Path $kit 'packs'
|
||||
if (-not (Test-Path $exe)) { "RESULT error worker missing at $exe"; Summary 'failed' @{ error = 'worker missing' }; exit 2 }
|
||||
"RESULT worker kit $exe sha256 $((Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower()) bytes $((Get-Item $exe).Length)"
|
||||
foreach ($pk in @('hl-v6-foldrw', 'hl-v6-all')) {
|
||||
$d = Join-Path $packs $pk
|
||||
if (-not (Test-Path (Join-Path $d 'kernel_bound.cl'))) { "RESULT error pack $pk missing at $d"; Summary 'failed' @{ error = "pack $pk missing" }; exit 2 }
|
||||
"RESULT pack $pk kernel_bound.cl sha256 $((Get-FileHash -Algorithm SHA256 (Join-Path $d 'kernel_bound.cl')).Hash.ToLower()) program.h sha256 $((Get-FileHash -Algorithm SHA256 (Join-Path $d 'program.h')).Hash.ToLower())"
|
||||
}
|
||||
# the class v6 kit's packs each carry their own leaves.bin (the class v5 script checked one pack by name; the 18:01 UK run on
|
||||
# PC 1 stopped on that name before the device list)
|
||||
foreach ($lp in @('hl-v6-foldrw', 'hl-v6-all')) {
|
||||
$leaves = Join-Path $packs ($lp + '\leaves.bin')
|
||||
if (-not (Test-Path $leaves)) { "RESULT error leaves.bin missing at $leaves (a class v5 pack without its leaves builds nothing)"; Summary 'failed' @{ error = 'leaves missing'; pack = $lp }; exit 2 }
|
||||
"RESULT leaves $lp $((Get-Item $leaves).Length) bytes sha256 $((Get-FileHash -Algorithm SHA256 $leaves).Hash.ToLower())"
|
||||
}
|
||||
# the OpenCL device index of the 9070 XT (the installed worker's list when present: the app's own indices)
|
||||
$inst = @("$env:LOCALAPPDATA\Programs\Igneum Miner", "$env:ProgramFiles\Igneum Miner") | Where-Object { Test-Path (Join-Path $_ 'igneum-app.exe') } | Select-Object -First 1
|
||||
$listExe = $exe
|
||||
if ($inst -and (Test-Path (Join-Path $inst 'igneum-worker-opencl.exe'))) { $listExe = Join-Path $inst 'igneum-worker-opencl.exe' }
|
||||
$list = @(& $listExe --list 2>&1 | ForEach-Object { "$_" })
|
||||
$list | ForEach-Object { "RESULT list $_" }
|
||||
$dev = $null
|
||||
foreach ($l in $list) { if ($l -match '^\s*\[(\d+)\].*gfx1102' -and $l -notmatch 'dup') { $dev = [int]$Matches[1]; break } }
|
||||
if ($null -eq $dev) { "RESULT error no gfx1102 device in --list (the RX 7600 is off the bus: the AMD class v6 row stays OWED)"; Summary 'failed' @{ error = 'no gfx1102' }; exit 2 }
|
||||
"RESULT device $dev gfx1102 (list from $listExe)"
|
||||
function Workers { @(Get-CimInstance Win32_Process -Filter "Name = 'igneum-worker-opencl.exe' OR Name = 'igneum-worker-cuda.exe'" -ErrorAction SilentlyContinue | ForEach-Object { "$($_.Name):$($_.ProcessId):[$($_.CommandLine -replace '\s+', ' ')]" }) }
|
||||
$w = @(Workers)
|
||||
$loaded = ($w | Where-Object { $_ -match "igneum-worker-opencl.*--device\s+$dev(\s|$)" }).Count -gt 0
|
||||
"RESULT workers_before $(Stamp) $($w -join ' ')"
|
||||
$state = if ($loaded) { 'loaded' } else { 'quiet' }
|
||||
"RESULT context card_state=$state (a fingerprint gate: the load changes the rate row, never the bytes)"
|
||||
$rows = @{}
|
||||
$fpOk = $false
|
||||
foreach ($pk in @('hl-v6-foldrw', 'hl-v6-all')) {
|
||||
$d = Join-Path $packs $pk
|
||||
$t0 = Get-Date
|
||||
"RESULT bench $pk start $(Stamp) cmd=igneum-worker-opencl.exe --bench-pack --pack $d --device $dev --batch-log2 24 --batches 5"
|
||||
$out = @(& $exe --bench-pack --pack $d --device $dev --batch-log2 24 --batches 5 2>&1 | ForEach-Object { "$_" })
|
||||
$code = $LASTEXITCODE
|
||||
$secs = [int]((Get-Date) - $t0).TotalSeconds
|
||||
foreach ($l in $out) { if ($l -match '^(pack |class v5|RESULT |FAIL|error|warm-up)') { "RESULT bench $pk out $l" } }
|
||||
$res = $out | Where-Object { $_ -match '^RESULT ' } | Select-Object -Last 1
|
||||
$fp = ''; $mhs = ''; $check = ''
|
||||
if ($res -match 'fingerprint=([0-9a-f]{16})') { $fp = $Matches[1] }
|
||||
if ($res -match 'mhs=([0-9.]+)') { $mhs = $Matches[1] }
|
||||
if ($res -match 'check=(\w+)') { $check = $Matches[1] }
|
||||
$rows[$pk] = [ordered]@{ exit = $code; seconds = $secs; fingerprint = $fp; mhs = $mhs; check = $check; card_state = $state }
|
||||
if ($pk -eq 'hl-v6-foldrw') {
|
||||
$fpOk = ($fp -eq $expected -and $check -eq 'PASS')
|
||||
"RESULT partner fingerprint=$fp expected=$expected match=$fpOk check=$check mhs=$mhs card_state=$state exit=$code seconds=$secs $(Stamp)"
|
||||
} else {
|
||||
# the all pack: with the window's OpenCL text (the second zip) a fingerprint, expected the CUDA reference e8f4f3289c6ee1fc
|
||||
$allOk = ($fp -eq 'e8f4f3289c6ee1fc' -and $check -eq 'PASS')
|
||||
"RESULT all-pack fingerprint=$fp expected=e8f4f3289c6ee1fc match=$allOk check=$check mhs=$mhs card_state=$state exit=$code seconds=$secs $(Stamp)"
|
||||
}
|
||||
}
|
||||
"RESULT workers_after $(Stamp) $((@(Workers)) -join ' ')"
|
||||
Summary $(if ($fpOk) { 'done' } else { 'failed' }) @{ expected = $expected; partner = $rows['hl-v6-foldrw']; all_pack = $rows['hl-v6-all']; device = $dev; kit = $kitId }
|
||||
exit $(if ($fpOk) { 0 } else { 1 })
|
||||
Loading…
Reference in a new issue