Об использовании утилиты wolfamdvolt для управления VRM видеокарт AMD в Linux
Для контроля и управления потреблением, вольтажом ядра и памяти, а также рядом других параметров видеокарт AMD Polaris/Vega в Linux широко используется “широко известная в узких кругах” утилита wolfamdcontol (она же ohgodatool).
Кроме этой прекрасной программы существует менее известная и популярная, но тоже хорошая утилита wolfamdvolt, доступная на Github-репозиториях Erica Garcia (snarkyerica) и OhGodAPet:
Программа wolfamdvolt предназначена для программного низкоуровневого детального контроля над работой фаз питания на графических ускорителях AMD. Она хороша тем, что работает не только с видеокартами с ядрами Polaris, Vega, но и другими, использующими поддерживающиеся контроллеры. Это позволяет более тонко управлять потреблением даже таких видеокарт, как AMD Radeon R9 290/390.
Учитывая то, что программа имеет открытый исходный код, можно внести в него изменения под любой желаемый контроллер, добавив поддержку ранее не поддерживавшейся модели видеокарты.
Как работает и что умеет программа wolfamdvolt?
Работа wolfamdvolt осуществляется через драйвер графического процессора видеокарты по его внутренней шине I2C. При этом используются регистры BAR, доступные по компьютерной шине PCI-E.
Программа позволяет осуществлять контроль и настройку некоторых параметров работы ШИМ-контроллеров фаз питания видеокарт на самом низком уровне. При этом можно контролировать и частично управлять значениями вольтажа, пределами тока / напряжения / температуры, калибровать линии нагрузки и многое другое.
wolfamdvolt работает с видеокартами AMD с ядром Polaris, RX Vega 56/64 и другими, в которых используются следующие чипы:
- Infineon/International Rectifier IR356XX и IR35217;
- ON Semi NCP81022;
- Realtek RT8894A;
- uPI Semiconductor uP1801 и uP9505P.
Пример вывода информации о видеокарте Radeon R9 290 при использовании утилиты wolfamdvolt без аргументов (xubuntu 16.04):
wolfamdvolt v0.95 GPU 0: Number of VRMs: 2 VRM 0: IR356XX Number of outputs: 2 Output 0: Voltage: 1.1562 Offset: 0.0000 Temp: 68C Amps: 108.00A Watts: 124.8750W Output 1: Voltage: 1.0078 Offset: 0.0000 Temp: 68C Amps: 108.00A Watts: 108.8438W VRM 1: IR356XX Number of outputs: 2 Output 0: Voltage: 1.2031 Offset: -0.7188 Temp: 49C Amps: 31.00A Watts: 37.2969W Output 1: Voltage: 1.2109 Offset: -0.7125 Temp: 49C Amps: 31.00A Watts: 37.5391W
Как использовать программу wolfamdvolt?
Для использования wolfamdvolt сначала нужно создать исполняемый файл из исходников командами:
git clone https://github.com/OhGodAPet/wolfamdvolt cd wolfamdvolt git submodule init git submodule update make
Файл запуска wolfamdvolt находится в одноименном каталоге:
Его можно переместить в более удобное место, из которого запускать с правами администратора:
sudo wolfamdvolt
Программа используется с аргументами, которые размещаются в следующем порядке:
wolfamdvolt [Global Options] [Selection Options] [Modification Options]
Секция Global Options обычному пользователю не нужна, так как использует только один параметр:
--debug
В секции Selection Options используется три типа аргументов:
-i (GPUIdx - номер видеокарты); -v (VRMIdx - номер VRM); -o (VRMOutputIdx - номер выхода контроллера).
Для изменения параметров напряжения в командной строке нужно указать номер GPU (-i) и следующие команды (modification options), в вольтах:
--vddc (желаемый вольтаж); --offset (минус от значения vddc).
Если запустить программу без указания опций vddc и offset, то программа отобразит только текущую информацию о вольтажах видеокарты.
Пример команды для снижения напряжения на GPU (VRM1) с 1.1562 до 1.05 V:
sudo ./wolfamdvolt -i 0 -v 0 -o 0 --vddc 1.05
Даунвольтинг памяти видеокарты AMD Radeon R9 290 на 0.15 вольт с помощью команды (GPU 0, VRM 0, output 1)
sudo ./wolfamdvolt -i 0 -v 0 -o 1 --offset 0.05
Выполнение этой команды сопровождается следующим текстом:
wolfamdvolt v0.95 Voltage offset is 0.0000. Attempting to set 0.0500... Voltage offset is 0.0500.
Ошибки, возникающие при использовании wolfamdvolt
Не следует злоупотреблять со слишком сильным понижением напряжения программой wolfamdvolt. Это связано с тем, что записанные ею значения прописываются в памяти контроллера и применяются даже после перезагрузки компьютера. Иногда это может быть полезно, а иногда приносит проблемы. Для восстановления ранее использовавшегося вольтажа нужно использовать команду с его исходными значениями.
Некоторые видеокарты не поддерживают прямое управление вольтажом VRM. В этом случае, при попытке запуска утилиты появляется ошибка:
Selected VRM does not support direct voltage setting. Try using an offset instead.
На таких видеокартах можно понижать напряжение с помощью аргумента offset, указывая, на сколько вольт нужно понизить штатное напряжение.
В этом случае можно использовать команду
sudo ./wolfamdvolt -i 0 -v 0 -o 0 --offset 0.05
Такой маневр на видеокарте AMD Radeon R9 290 снижает потребление по одной линии VRM, управляемой контроллером с 124.8 ватт:
до 115 ватт (с одновременным снижением частоты по таблице из BIOS):
Такое понижение потребления понижает температуру прожорливого GPU R9 290 на 5 градусов!
Если появляется ошибка
Unable to initialize MMIO for GPU - failed with -1. то нужно запустить программу с правами sudo
Программа wolfamdvolt дает возможность поиграться с режимом работы VRM видеокарт, но, к сожалению, в бета-версии ряд опций еще не проработан.
Например, понижение напряжения на видеокартах AMD Rafdeon R9 290 осуществляется в привязке к таблице, прописанной в BIOS видеокарты. Из-за этого одновременно понижается частота ее работы, что “не есть хорошо” для майнинга…
Один комментарий
Mir
is there any way to make it work in hiveos? I get “error 1” when using make