I have several modern GPUs, both ATIs (lets take Polaris 480) and Nvidia(Lets take 1080) models. I am using them for various purposes, like mining, video rendering, physics processing. Each task is stable and fast at some specific values of four basic parameters - core and memory voltages and clocks.
I used to use a Windows and MSI Afterburner, to set up that mentioned parameters. Also i knew utilities like OverdriveNTool.exe, which has command line interface. That claims possibility of such control in Windows.
Also, I noted that GPU is a separate computer on its own, almost capable of operating independetly from PC. It has its own bios, RAM and core chip. And OS is not related to GPU operation, because OS is just a "firmware" that runs on CPU, trying to "ask" a GPU for doing something via OS-unrelated protocols. That claims GPU control protocol is OS-independent.
Joining together two mentioned claims, I may conclude that it is definetely possible, to modify GPU clocks and voltages on any OS at run time (programmaticaly).
I want to do so on Linux (I mean not some specific distro, like Ubuntu, but linux itself - some minimalistic enviroment:
kernel+glibc+busybox) What i found so far is:
amdgpu I found 2 things:
first is some odd craft (more like kids toy - who and why put it there? :), that is called powerplay file system and lives in
/sys/class/drm/card?/ mclk_odand allows to set 0-20% boost(It even has type of
intin kernel amdgpu sources!!!). It does not ever worked on my busybox build and not allowed to set exact parameters.
Things like this that utilized AMD ADL, but i failed to find where to download/build that ADL library, and even heard that it is outdated and not works.. Official amdgpu driver download for linux has no such library, idk where to get it.
nvidia I failed to find any way to control GPU parameters in a minimal enviroment like kernel+glibc+busybox
For now I'm hard-flashing desired frequencies and voltages directly in bios. But that wastes time, requires reboot and wears bios flash write cycles fast. Thus, I'm asking of simple way to set up clocks and voltages.
How could i set core clock and voltage in raw linux(no xorg, very little amount of 3rd party libs) for ATI RX 480 and NVidia 1080 video cards?