Skip to content

Commit 52b165c

Browse files
vupleaclaude
andcommitted
Tighten the boost-settle notes to the measurements that matter
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017bNKonjifgKN2zykAGFNq4
1 parent 9ae59a7 commit 52b165c

1 file changed

Lines changed: 21 additions & 35 deletions

File tree

‎DEVELOPMENT.md‎

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -90,41 +90,27 @@ The core-domain point slots come first (a per-entry type word says which domain
9090

9191
## Where the boost settles
9292

93-
A flatten pins the boost by curve shape alone, so the plan is built on how the boost algorithm
94-
picks its operating point. NVIDIA doesn't document this; the following is measured on an RTX 5090
95-
under a sustained FurMark load, comparing written curve shapes against `watch` and `curve`
96-
read-backs:
97-
98-
- **The settle voltage is one 5 mV step below the flat top's first anchor.** A flat from 910 mV
99-
runs the card at 905 mV; a flat from 900 mV runs it at 895 mV. It never runs on the flat itself.
100-
- **The driver's curve is finer than the anchor table.** Table anchors sit 5 or 10 mV apart
101-
(Blackwell cycles 5-5-5-10, with the 10 mV gap right after every multiple of 25 mV), but the
102-
settle voltage exists at 5 mV granularity regardless: a flat from 910 mV settles at 905 mV,
103-
where no anchor exists — the clock there interpolates between the 900 and 910 anchors.
104-
- **The realized clock tracks the middle of the cap→flat segment, within one bin.** Clocks
105-
quantize to ~7.5 MHz bins on Blackwell (~15 MHz read-back steps on older generations). Measured
106-
at a 900 mV cap: a segment written 2880→2903 settles at 2887–2895; written 2872→2888 it settles
107-
at 2880; written 2880→2896 it settles at 2887. "Mid-segment" and "one bin below the flat" fit
108-
every measurement equally — indistinguishable at bin granularity.
109-
- **The driver re-shapes written anchors by a bin or two.** A pair written 2872/2888 reads back
110-
2880/2887 from the status curve, and neighbouring anchors of the same write shift by anything
111-
from 0 to +15 MHz. Aiming the shape finer than a bin is therefore meaningless.
112-
- **A cap→flat rise below ~2 bins folds.** Written 8 MHz apart, the driver snaps the pair into one
113-
plateau: the flat's first anchor becomes the cap anchor itself and the settle drops 5 mV lower,
114-
landing a stock-slope step below the request. Written 16 MHz apart, the pair stays distinct. On
115-
generations whose clocks step ~15 MHz, 16 MHz is a single bin and folding is plausible but
116-
unmeasured; a fold degrades to the settle-a-step-lower shape (less clock at less voltage — the
117-
safe direction), and the post-apply report flags a cap→flat rise that reads back collapsed.
118-
119-
`GpuTuning.BuildCurvePlan` encodes the consequences: the cap→flat segment is a straight line
120-
through (settle voltage, requested clock) with a fixed 16 MHz rise — the smallest the driver
121-
reliably keeps, which also bounds the realized-clock miss at half the rise, inside the bin noise.
122-
Where the gap above the cap anchor is 5 mV, the settle point *is* the cap anchor and holds the
123-
request outright; where it is 10 mV, the segment straddles the request 8 MHz each side and the
124-
card operates 5 mV above the named cap (`--mv 900` runs at 905 mV). The alternative — starting the
125-
plateau at the cap anchor so the card stays at or under the named voltage — realizes a clock a
126-
stock-slope step below the request; running one step higher in voltage at the requested clock is
127-
the safe side of that trade.
93+
A flatten pins the boost by curve shape alone, so the plan rests on where the boost algorithm
94+
settles. NVIDIA doesn't document this; measured on an RTX 5090 under sustained load:
95+
96+
- **One 5 mV step below the flat top's first anchor** — never on the flat itself. A flat from
97+
910 mV runs the card at 905 mV even where no 905 mV anchor exists (Blackwell anchors cycle
98+
5-5-5-10 mV): the driver's curve is finer than the table, interpolating inside the gap.
99+
- **The realized clock tracks the middle of the cap→flat segment, within one ~7.5 MHz bin**
100+
(read-backs step ~15 MHz on older generations). At a 900 mV cap: written 2880→2903 settles at
101+
2887–2895; written 2872→2888 at 2880 exactly.
102+
- **The driver re-shapes written anchors by a bin or two** (2872/2888 read back 2880/2887), so
103+
aiming finer than a bin is meaningless.
104+
- **A rise below ~2 bins folds**: written 8 MHz apart, the pair snaps into one plateau and the
105+
settle drops 5 mV lower; 16 MHz holds. On generations with ~15 MHz bins, 16 MHz is one bin and
106+
may fold — degrading to less clock at less voltage (the safe direction), which the post-apply
107+
report flags when the rise reads back collapsed.
108+
109+
`GpuTuning.BuildCurvePlan` therefore writes the cap→flat segment as a straight line through
110+
(settle voltage, requested clock) with a fixed 16 MHz rise: the smallest the driver keeps, and a
111+
bound on the realized miss at half of it. On a 10 mV gap this operates the card 5 mV above the
112+
named cap (`--mv 900` runs at 905 mV); keeping the voltage at or under the cap would cost a
113+
stock-slope step of clock, the worse side of the trade.
128114

129115
## Generations
130116

0 commit comments

Comments
 (0)