Skip to content

fix: refuse runs and the logon apply on a PC with more than one NVIDIA GPU - #65

Merged
Rovey merged 4 commits into
mainfrom
fix/refuse-several-gpus
Nov 2, 2026
Merged

Rovey merged 4 commits into
mainfrom
fix/refuse-several-gpus

Conversation

@Rovey

@Rovey Rovey commented Oct 31, 2026

Copy link
Copy Markdown
Owner

Why

The app takes "the first NVIDIA card" three times, from three lists with their own order: NVML device 0 (power limit, telemetry), NVAPI's first physical GPU (offsets, curve) and DXGI's first NVIDIA adapter (stress load, bandwidth). With two NVIDIA cards the card that is tuned and the card that is tested can differ: the tuned card idles, every step reads as stable, and the run saves a tune that was never tested. The read-back does not catch it.

What

  • several_gpus() in src/core/boot.hpp: more than one NVML device refuses; 0, 1 or an unknown count (-1) does not. NVML counts NVIDIA devices only, so an Intel or AMD iGPU is not affected (seen on an RTX 5070 next to an AMD Radeon iGPU: GPUs: 1).
  • Optimize, Undervolt, All in one and Retest stop before they touch the card.
  • decide_boot returns SeveralGpus at logon, before the strike.
  • The refusal ends with a request to open an issue, with the link.
  • The tray balloon for it at logon is short (a balloon holds 255 characters); a click opens the window, whose log has the whole refusal.
  • A row in docs/development.md explains the choice, and what is not refused yet: the Apply button, gao --apply and the watchdog's re-apply.

Tests

core_tests 460/460, app_tests 24/24 at this branch (count, logon order, refusal text, balloon length).

On hardware

Not run on a PC with two NVIDIA cards. On the RTX 5070 with a build forced to count two: boot.log got the full refusal, the short balloon appeared, the window's log had the full text, and the tune was not applied. A run from the window was refused but showed nothing; that is fixed in the stacked PR on top of this one.

🤖 Generated with Claude Code

Rovey and others added 4 commits October 31, 2026 09:59
…A GPU

NVML, NVAPI and DXGI each take their first NVIDIA card, in their own
order. With two cards the tuned card and the stress-tested card can
differ, and every step then reads as stable. A run now stops before it
starts, and apply at logon applies nothing, when NVML counts more than
one device. NVML counts NVIDIA devices only, so an integrated Intel or
AMD GPU next to one NVIDIA card is not affected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…A GPU

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A balloon holds 255 characters and the refusal is longer, so the link
to the issues was cut off. The balloon now only says what happened;
a click opens the window, whose log has the whole refusal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Rovey
Rovey merged commit dcdcc6b into main Nov 2, 2026
2 checks passed
@Rovey
Rovey deleted the fix/refuse-several-gpus branch November 2, 2026 23:18
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