Faster PoM v4 solver — chaseless tensor-core walk
The v4 walk no longer runs a separate offset-chase pass before every batch: each warp now derives its next tile offset from the snippet of the tile it just fetched, so the chase kernel's serial time, its duplicate snippet reads, and the per-batch offsets buffer are all gone. The kernel is byte-exact vs the previous solver and the host walk (verified on every supported architecture; identical winners on all cards tested).
Measured gains (fixed 6 GiB walk table, stock clocks):
| Card | v0.11.16 | v0.11.17 | gain |
|---|---|---|---|
| RTX 5090 | 5.47 Mh/s (live) | 5.91 Mh/s (live, pool-verified) | +8% |
| RTX 5080 | 3.05 | 3.40 | +11% |
| RTX 5070 Ti | 2.81 | 3.06 | +9% |
| RTX 3070 | 1.34 | 1.53 | +14% |
Small batches gain the most (the chase's fixed cost bit hardest there — +24% at batch 8192 on a 5090), which particularly helps smaller cards.
HBM cards (A100-class / CMP 170HX, H100): the chaseless walk is measurably slower there, so these parts keep the previous chase+pipeline solver — the per-card autotune now measures all three walk kernels (classic / tensor-core / chaseless) and picks the fastest; HBM parts also default to the previous solver when tuning is skipped. Every card re-tunes once on first start after the upgrade (~6-8 s).
Knobs: KERYX_POM_V4_NCF=0 forces the previous chase+tensor-core path; KERYX_POM_V4_TC=0 still forces the classic kernel. The chaseless solver is probe-gated like the tensor-core one: a stub or incompatible image demotes loudly to the previous path, never silently.
No consensus, proof-format, stratum, or model changes — proofs are identical; this is purely a solver-throughput release.