Hardware,  Статьи

Об использовании утилиты 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 видеокарты. Из-за этого одновременно понижается частота ее работы, что “не есть хорошо” для майнинга…

Один комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *