How is it supposed to control GPU clocks and voltages on Linux?

0

1

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:


With 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_od and allows to set 0-20% boost(It even has type of int in 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.


With 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?

xakepp35

Posted 2018-11-09T04:41:25.037

Reputation: 287

You're conflating things: the possibility that something can be done, and whether a tool has been made to do it. First, it's NOT common for even power users to manually manipulate their GPUs the way you propose. There is nothing inherent to the command line or a UI to determines what can or cannot be done within it. This is a function of the abilities of the software to interact with the hardware, not how that software is architected. Third, just because a tool exists for Windows does NOT mean an exact analog will exist in another OS. – music2myear – 2018-11-09T19:49:48.210

@music2myear It is not common for power users, but is very common among mining farm administrators. For instance - every ambient temperature, room coolability and particular hashing algorithm (along with gpu asic quality, thermal grease condition, fan condition, dust in the air, humidity, so on..) would require fine tuning the parameters, in order to maximize outcome/consumption ratio, and to prolong gpu life. Second - GPU is unrelated to OS: it is a computer itself, with its own bios, ram and core chip. If a tool exists in to control GPU, then it is definetely possible to control from any OS! – xakepp35 – 2018-11-09T21:14:59.763

No answers