Merge amd-clock-25 aa2b8652 into release-0.3.25 (the RX 9070 XT's measured efficient point in the tuner's ceiling table: 149 W at 18.96 MH/s, clock offset -500 and power limit -30, 24 percent under stock; the grid playbook finds the rebuilt exe by itself; the kit input unchanged)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-08 11:26:23 +00:00
commit 8604e89b13
2 changed files with 23 additions and 3 deletions

View file

@ -37,7 +37,12 @@ pub const CLOCK_FINE_STEP_MHZ: u32 = 100;
/// 5090 for 575 W with proving on the same card): the tuner never requests more than the card's measured efficient point
/// unless Power control is on and the user raised the cap above the default; a card not in this table is held at the
/// cap it runs at. A point below the vendor's minimum limit clamps up to that minimum (the 5090 floors at 400 W).
pub const EFFICIENT_W: &[(&str, f64)] = &[("RTX 5090", 308.0), ("RX 9070 XT", 199.0)];
/// RX 9070 XT: 149 W from the first measured grid on the AMD knob (PC 1, 8 October 2026, 12:10 BST, run
/// run-ca3-pc1-amd-grid-9070-20261008-b, 24 of 24 rows ok): the rate is flat at 18.93 to 18.98 MH/s over the whole ladder,
/// the knob moves watts only, and the efficient point is both floors (clock offset -500, about 2,920 MHz, the ADLX clamp;
/// power limit -30): 149.3 W at 18.96 MH/s, 0.127 MH/W, 24 percent under stock's 195.8 W. The 199 W before it was the
/// 7 October read at stock.
pub const EFFICIENT_W: &[(&str, f64)] = &[("RTX 5090", 308.0), ("RX 9070 XT", 149.0)];
/// The app's cap when the user chose none (engine.rs requested_watts); a cap above it is one the user raised.
pub const DEFAULT_CAP_PCT: u32 = 80;
@ -1509,7 +1514,7 @@ mod tests {
assert_eq!(l.ceiling(), 403.0, "70% of 575 W, the card's own cap");
let zero = with_ceiling("NVIDIA GeForce RTX 4070", Point::default(), false);
assert_eq!(zero.ceiling(), 460.0, "no chosen cap: the app's default 80%");
assert_eq!(efficient_watts("AMD Radeon RX 9070 XT"), Some(199.0));
assert_eq!(efficient_watts("AMD Radeon RX 9070 XT"), Some(149.0), "the 8 October grid: both floors, 149.3 W at 18.96 MH/s");
assert_eq!(efficient_watts("gfx1036"), None);
}

View file

@ -11,7 +11,22 @@ $ErrorActionPreference = 'Continue'
function Say([string] $s) { Write-Output ('[' + (Get-Date -Format 'HH:mm:ss') + '] ' + $s) }
$install = Join-Path $env:LOCALAPPDATA 'Programs\Igneum Miner'
$tool = $env:IGNEUM_GRID_TOOL
if (-not $tool) { $cand = Join-Path (Get-Location) 'igneum-gpu-telemetry.exe'; if (Test-Path -LiteralPath $cand) { $tool = $cand } else { $tool = Join-Path $install 'igneum-gpu-telemetry.exe' } }
if (-not $tool) {
# the rebuilt tool (the AMD knob's, sha 1d8e055d...) lands on the PC by a fetch job under <data>\app\jobs\<id>\; the newest
# copy whose --tune prints a tune line wins over the installed exe (the 0.3.24 kit's has no --tune)
$cands = @()
$cands += Join-Path (Get-Location) 'igneum-gpu-telemetry.exe'
$jobsDir = Join-Path $env:LOCALAPPDATA 'igneum\app\jobs'
if (Test-Path -LiteralPath $jobsDir) { $cands += @(Get-ChildItem -LiteralPath $jobsDir -Recurse -Filter 'igneum-gpu-telemetry*.exe' -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | ForEach-Object { $_.FullName }) }
$cands += Join-Path $install 'igneum-gpu-telemetry.exe'
foreach ($c in $cands) {
if (-not (Test-Path -LiteralPath $c)) { continue }
$probe = @(& $c --tune 2>&1 | ForEach-Object { "$_" }) | Where-Object { $_ -match '^tune \d+ ' }
if ($probe) { $tool = $c; break }
Say ("no tune line from " + $c)
}
if (-not $tool) { $tool = Join-Path $install 'igneum-gpu-telemetry.exe' }
}
if (-not (Test-Path -LiteralPath $tool)) { Write-Output ('RESULT GRID error=no_tool ' + $tool); exit 1 }
Say ("tool: " + $tool + " sha256 " + (Get-FileHash -LiteralPath $tool -Algorithm SHA256).Hash.ToLower())
$hold = if ($env:IGNEUM_GRID_HOLD_S) { [int]$env:IGNEUM_GRID_HOLD_S } else { 75 }