Roch GPU 1.0.3
Over-current limits you can actually set, telemetry that measures current instead of dividing it out,
and longer travel on the sliders that had run out.
Getting it
Download RochGPU.exe below and run it. Nothing to install — no .NET runtime, no DLLs beside it.
It is unsigned, so SmartScreen will warn on first run ("More info" → "Run anyway").
SHA-256 47fc121a79009bbd2afd407ebe03964551f87a2a285bda3c647a756dda365c69
OCP current limits
The NVVDD and MSVDD over-current limits, in amps, are now levers in the XOC window — armed
individually like everything else there, and restored to stock when disarmed rather than left
standing, because an OCP limit survives a reboot and a card quietly running without its protection is
a state nobody chose.
The window each slider offers is read from the card, not derived. A 5070 Ti reports 250–350 A for
the core rail, and that is what the slider gives; where the driver declines to constrain a limit —
which it does for MSVDD, answering 1 A to 5001 A — the slider falls back to half the stock figure to
half again above it. Every card reports its own, which is the point.
--nvvdd-ocp and --msvdd-ocp do the same from the command line.
Raising one of these makes nothing faster. It moves the current at which the card stops itself out
of the way, and the reason that limit exists is the hardware behind it.
Telemetry
The hardware monitor is now the Telemetry window, and it carries measured rail current —
seven 12 V channels straight from the card's own power monitor: board total, PCIe slot, NVVDD input,
Misc0 input, and three the driver names only by number. Measured, not divided out of the board watts,
with min/max/average like every other row.
More travel where it ran out
- Core and crossbar offsets to +750 MHz (from +495). These are the offsets a card reaches once
the rails are raised and the boost is wound open, and the sliders were stopping before the card
did. - Rail ceilings to 1200 mV (from 1170). Deliberately more than air cooling can use; the reason to
offer it is water and LN2. - Clock range floor from the driver — 180 MHz on a 5070 Ti, where 210 used to be compiled in as a
guess. Tested: the driver accepts 180 as a floor.
Every one of these is a slider end, not a measurement. Nothing up there is known to be stable.
Smaller things
- Reset to Defaults replaces Reset and Revert. It writes the driver's defaults to the card and
loads them into the sliders — which it always did, but the one-word label undersold it. - XOC is what the window is called now, matching the button that opens it, with one warning for
the whole window instead of a note that predated half its levers. - The clock range forgets a lock the driver has cleared. NVML will not report a lock —
GetClock
answers NOT_SUPPORTED and the event reasons read zero whether one is set or not, both measured — so
that row shows what was asked for. A display driver reset clears the lock, and is the only thing
that makes NVML reopen its session, so the window now notices and stops claiming a range nothing
holds. - A driver reset no longer strands the app. An NVML session does not survive one; a failure whose
code says so now reopens it and retries. - Private call buffers carry 8 KB of slack. These structures are described by sizes worked out
rather than published, and a size too small lets the driver write past the end — which corrupts the
heap and kills the process later, somewhere unrelated.
Warning
Writing clocks and voltages to a GPU can crash the machine, corrupt work in progress, and in the
extreme damage hardware. The XOC levers can brown a card out rather than merely fail. Nothing here is
endorsed by NVIDIA or AMD. Read the warning in the README before using it.
Licence
GPL-3.0-or-later, the same licence as Roch Viewer.
The complete corresponding source for this binary is this repository at tag v1.0.3; build.ps1
rebuilds it with one command. Bundled third-party components keep their own licences — see
THIRD-PARTY-NOTICES.md.