Skip to content

v0.0.5 — unit-level static partition (auto on matching GPUs), per-unit ledger, receiver checks - #6

Closed
alejandrogzi wants to merge 4 commits into
v0.0.4from
v0.0.5
Closed

alejandrogzi wants to merge 4 commits into
v0.0.4from
v0.0.5

Conversation

@alejandrogzi

Copy link
Copy Markdown
Member

Stacked on #5 (v0.0.4). Merge and tag v0.0.4 first; this PR then retargets to master.

Syncs the tested experimental tree (alejandrogzi/hspZ experimental @ 04d5985) into production with the production packaging kept (clap attribute, file headers). Sources are experimental HEAD's byte-for-byte except those headers.

What changes

  • Unit-level static partition, default on for matching GPUs. With W ≥ 2 the frozen plan's work units are split across workers by count quotas (whole bins first, then contiguous query slices of as few bins as possible; one extra reference build per split bin) instead of whole-bin ownership, when every executing device is the same class (equal SM count and L2, nominal clocks within 10%) and each worker has its own device. HSPZ_UNIT_PARTITION=0|1 forces either policy. Output bytes are unchanged.
  • Per-unit ledger under --time and schedule: lines on every run (policy, reason, per-worker visits).
  • Receiver checks: duplicate / out-of-plan work units are rejected; completeness is verified after joining the workers, so a worker's own error is reported first.
  • -B 0 automatic layout (opt-in measurement tool; changes the frozen plan) and autotune/ledger diagnostics from round 88.

Measurements (canonical hg38 × mm39, MAX_HITS=16,711,680, ABBA, same host, frozen output digest 68296b830fdef311 in every arm)

host whole-bin (a / b) partition (a / b) wall
2× RTX 4090, W=2 1,400.3 / 1,398.8 s 1,233.2 / 1,233.7 s −11.9%
4× RTX 4090, W=4 717.9 / 718.7 s 681.4 / 681.8 s −5.1%

Exactness: 138 unit tests (incl. a brute-force partition oracle), chr20 pair and a 5×3 two-worker ZLUDA plan byte-identical under auto / forced 0 / forced 1, Kaggle 2× T4 identity (four arms, frozen digest), and the two 4090 campaigns above. Reviews: grok-4.6 and codex gpt-6-astra, both PORT WITH FIXES, all fixes included. Caveat stated in the changelog: the static-attribute guard cannot detect same-model cards with different sustained clocks (on a heterogeneous T4 pair the balance depended on device order).

Release check: Cargo.toml version 0.0.5 (release.yml asserts tag == version).

🤖 Generated with Claude Code

alejandrogzi and others added 4 commits September 10, 2026 10:13
…rds (experimental rounds 88/90/90b)

Sync of experimental HEAD (alejandrogzi/hspZ @ 04d5985) into production. Sources
are experimental HEAD with the production packaging re-applied (file headers, clap
attribute, hspZ naming). No dependency changes.

- round 90: HSPZ_UNIT_PARTITION splits the frozen plan's work units by count quotas
  (whole bins first, then contiguous query slices of as few bins as possible, one
  extra reference build per split bin); --time gains the per-unit ledger, and every
  run prints schedule lines; the receiver rejects duplicate/out-of-plan units and
  verifies completeness after joining the workers, reporting a worker's own error
  first.
- round 90b: unset = auto — partition only with W>=2, one worker per device, and
  every used device the same class (equal SM count and L2, nominal clocks within
  10%); the reason is printed in the schedule line. 1/0 force.
- round 88 also lands here: v0.0.4 was synced from ce1de86 and cherry-picked
  b44cc04's window budget only, so -B 0 automatic layout (W>=2; W=1 is exactly the
  500 Mbp plan), the ref-buckets inconclusive-block bound, and the --time
  gap/phase attribution were never in production. Round 90 builds on that code.
- the round-89 find_hits overlap prototype (043bd30, reverted upstream) is absent.

Verified: cargo oxide build --release; 138 tests; chr20 digest 70152625c1a75cb3
(3,638 HSPs); schedule: policy=whole-bin W=1 ... (auto: W=1).
…ver checks

- version 0.0.5 in Cargo.toml and the hspZ entry of Cargo.lock only; features
  unchanged (default = simd-prelude, find-hits-warp, ref-loc-buckets) and no
  dependency changes (experimental's [dependencies] unchanged since b44cc04).
- changelog 0.0.5: unit-level static partition with the measured seed-and-filter
  numbers (-11.9% on 2x RTX 4090, 1,400 -> 1,233 s; -5.1% on 4x RTX 4090,
  718 -> 681 s at MAX_HITS=16,711,680; identical output), the auto rule (class
  match, 10% clocks, one worker per device), the per-unit ledger, and the
  receiver checks; the entry also records the -B 0 automatic layout, the
  inconclusive-block bound and the --time attribution that land with round 88.
- gpus.mdx: the runtime tuning knobs section is retitled (0.0.5) and gains the
  HSPZ_UNIT_PARTITION=auto|0|1 row (device-class guard, whole-bin at W=1,
  time-sliced workers and mixed classes; -11.9% on 2x RTX 4090 at MAX_HITS
  16,711,680, -5.1% on 4x RTX 4090). "Both knobs" -> "Every knob".
- docs/src/generated/cli-reference.txt regenerated from the 0.0.5 binary and
  byte-identical: no CLI text changed.
- docs validate (9 journeys, 43 slides) and astro build (16 pages) pass.
@alejandrogzi

Copy link
Copy Markdown
Member Author

Superseded: rounds 83-96 are collapsed into a single v0.0.4 release (one branch, one changelog entry, one PR). Nothing here is dropped — the replacement PR carries this branch's tree plus the on-disk reference index and multi-GPU batching.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant