GPU experiment runbook: everything the free tier could not settle - #191
Merged
Conversation
Everything achievable without a card is now done -- Tier 0 (E1-E4) measured, E5's
chunk half measured, E10 closed, E11's segment half measured. This collects what
is left, in an order that respects what produces what.
The ordering is the point. Three later experiments consume chunk RECEIPTS, which
only exist after proving, so §1 produces them first and says to keep them --
regenerating is the expensive part. §2 (E6) comes before §6 (E9) because E6
DECIDES whether E9 is worth attempting: if worker processes fill the 65% GPU idle
then E9 is dead, and if VRAM caps them at one process at po2 22 then only
pipelining can fill it.
Records the guards that made the free tier trustworthy, because each one caught a
real false result today:
- read METHOD_ID with `host method-id`, never by scraping the binary --
`strings | grep -oE '[0-9a-f]{64}'` returns the BITCOIN GENESIS HASH, which is
64 hex characters and entirely plausible
- record METHOD_ID per arm: a build that silently did not happen returns
identical numbers and reads as "no effect"
- run check-versions.sh only AFTER `git add` -- it enumerates with `git ls-files`
and cannot see an unstaged file, so it passes by not looking
Also names what NOT to spend the card on, with the reason each is closed: faster
cards, cheap-card tiers, wire compression, NDEBUG, ECMULT_WINDOW, C/C++ LTO, and
a newer risc0.
And flags that #139's packer refit is arguably ahead of E9 in value: worth 2.36x,
host-only, no METHOD_ID, no fidelity cost, and a prerequisite for #139 rather than
a follow-up -- without it #139 delivers 2.95x instead of 6.95x and the fidelity is
spent either way.
Chunking is free ALL THE WAY to the aggregate, not merely at the execute level. Total segments (3,411 vs ~3,404) and total wire bytes (949.9 MB vs ~949 MB) are invariant between N=4 and N=16, alongside the exactly-invariant cycle count and a straggler that holds at 1.00x through N=64. The N=4 total is measured across all four chunks. Extrapolating from chunk 0 alone gives 3,220 and is WRONG -- chunk 0 is the smallest of the four (805 against 864/871/871) -- which is the second time today that extrapolating a block total from chunk 0 produced a trend that was not there. That isolates E11's GPU half to a single unknown: whether assumption resolution cost grows sublinearly in N.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Everything achievable without a card is now done — Tier 0 (E1–E4) measured, E5's chunk half
measured, E10 closed, E11's free half measured. This collects what's left, ordered so nothing
gets wasted.
The ordering is the point
is the expensive part.
processes fill the 65% GPU idle, E9 is dead; if VRAM caps them at one process at po2 22, only
pipelining can fill it.
first, or the result means nothing.
E11's free half came back clean, and isolates the GPU question
Chunking is free all the way to the aggregate. Segments per chunk halve almost exactly on every
doubling (805 → 426 → 213 → 104 → 49), and
HAZYNC_CHUNKS=16is confirmed as a default nobodyrevisited — the code says so outright.
That leaves E11's GPU half with a single unknown: does assumption resolution cost grow
sublinearly in N? If so, more chunks is close to free throughput and 16 is leaving parallelism
unused.
⚠ The N=4 total is measured across all four chunks. Extrapolating from chunk 0 gives 3,220 and
is wrong — chunk 0 is the smallest (805 against 864/871/871).
Guards, because each caught a real false result today
METHOD_IDwithhost method-id, never by scraping the binary —strings | grep -oE '[0-9a-f]{64}'returns000000000019d668…, the Bitcoin genesis hash,which is 64 hex characters and entirely plausible.
METHOD_IDper arm. A build that silently didn't happen returns identical numbers andreads as "no effect".
check-versions.shonly aftergit add— it enumerates withgit ls-filesand cannotsee an unstaged file, so it passes by not looking.
(hazync#88 — the build path is baked into panic metadata).
What NOT to spend the card on
Faster/bigger cards, cheap tiers, wire compression,
NDEBUG,ECMULT_WINDOW, C/C++ LTO, a newerrisc0 — each closed, each with the number that closed it.
And one item that may outrank E9
#139's packer refit — worth 2.36×, host-only, no
METHOD_ID, no fidelity cost, and aprerequisite for #139 rather than a follow-up. That's now built in #190.
Docs only.