Ember: a power step on a card with no limit readback (AMD through ADLX reports an offset, never watts) is applied on the acknowledgement; run 6 aborted the 9070 XT's ladder at its first step on "card reports 0 W"; test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
12e045b64e
commit
57de3112b8
1 changed files with 17 additions and 1 deletions
|
|
@ -774,8 +774,13 @@ impl Run {
|
||||||
let power_changed = (step.watts - before_w).abs() >= 1.5;
|
let power_changed = (step.watts - before_w).abs() >= 1.5;
|
||||||
if step.point.clock_mhz > 0 || step.point.mem_mhz > 0 || !power_changed {
|
if step.point.clock_mhz > 0 || step.point.mem_mhz > 0 || !power_changed {
|
||||||
rb.acked && power_ok
|
rb.acked && power_ok
|
||||||
|
} else if rb.limit_w <= 0.0 {
|
||||||
|
// a card with no limit readback at all (AMD through ADLX reports an offset, never watts; run 6 on
|
||||||
|
// 6 October 2026 aborted the 9070 XT's ladder at its first step on "card reports 0 W"): the
|
||||||
|
// acknowledgement is the proof
|
||||||
|
rb.acked
|
||||||
} else {
|
} else {
|
||||||
rb.limit_w > 0.0 && power_ok
|
power_ok
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -976,6 +981,17 @@ mod tests {
|
||||||
assert!(Plan::full(&Limits::default(), Point::default(), 1.0).is_empty());
|
assert!(Plan::full(&Limits::default(), Point::default(), 1.0).is_empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn a_power_step_on_a_card_without_a_limit_readback_is_applied_on_the_acknowledgement() {
|
||||||
|
// AMD through ADLX: the limit reads back as an offset, never watts (run 6, 6 October 2026)
|
||||||
|
let step = Step { point: Point { clock_mhz: 0, power_pct: 90, mem_mhz: 0 }, watts: 90.0, kind: Kind::Power };
|
||||||
|
assert!(Run::applied(&step, Readback { limit_w: 0.0, acked: true }, 100.0));
|
||||||
|
assert!(!Run::applied(&step, Readback { limit_w: 0.0, acked: false }, 100.0));
|
||||||
|
// NVIDIA: the watts must read back
|
||||||
|
assert!(!Run::applied(&step, Readback { limit_w: 100.0, acked: true }, 100.0));
|
||||||
|
assert!(Run::applied(&step, Readback { limit_w: 90.0, acked: false }, 100.0));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn limits_never_exceed_the_vendor_or_undercut_the_floor() {
|
fn limits_never_exceed_the_vendor_or_undercut_the_floor() {
|
||||||
let l = l5090();
|
let l = l5090();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue