Статьи

Об установке драйверов для видеокарт AMD в Ubuntu

Операционные системы семейства linux практически всегда стоят на голову выше своих «оконных партнеров» производства Microsoft.

Это связано с тем, что Windows начала свой путь на базе старого и доброго MS-DOS, который долгое время ограничивал ее развитие, а также в связи с нацеленностью разработчиков Винды на получение максимальной прибыли от пользователей, а не на их удобство. Именно поэтому каждый новый дистрибутив Виндовс становится все более громоздким и требует апгрейда железа компьютера.

ОС семейства Linux в большинстве случаев бесплатны и развиваются энтузиастами, нацеленными на достижение максимальной производительности на уже имеющемся оборудовании. Поэтому все дистрибутивы, работающие на ядре Линукса очень стабильны и не требовательны к ресурсам.

БОльшие требования к аппаратному обеспечению для линукс-подобных систем появляются в случае их использования для майнинга. В этом случае особенно важно достичь максимальной производительности подсистемы видео, которая обычно используется для проведения вычислений при майнинге. Кроме того, правильная установка и настройка драйверов для видеокарт в Linux требуется для полноценного использования рабочих станций (домашних компьютеров) под управлением этой системы.

Обычно установка драйверов для видеокарт nvidia в LINUX-подобных системах не вызывает затруднений.

Для видеокарт АМД часто приходится «танцевать с бубнами», но овчинка стоит выделки. Использование правильно настроенных драйверов АМД может дать серьезный прирост производительности видеокарт, например позволяет выжать до 30 mh/s на старых картах типа Радеон R9 290/390 при майнинге на алгоритме Ethash даже на поздних эпохах DAG.

Рассмотрим подробнее особенности работы графической подсистемы с видеокартами amd под управлением ubuntu, а также особенности установки и настройки драйверов для компьютеров с GPU AMD в ОС на основе Убунту.

Тема установки драйверов АМД в linux очень сложная и зависимая от конкретной конфигурации системы, а также версии drivers. Поэтому данная статья не претендует на полноту изложения всех проблем по затронутой тематике, а является попыткой систематизировать какую-то часть информации по работе с драйверами АМД в ubuntu.

Какие драйвера нужны для майнинга на видеокартах АМД в ubuntu

Для работы видеокарт в ubuntu обычно используются такие виды драйверов:

  • AMDGPU-PRO – проприетарные, включают драйвера AMDGPU и разные надстройки, в том числе OPENCL, OpenGL 4.5, GLX, VDPAU, Vulkan;
  • AMDGPU – открытые фирменные АМД (лучше всего подходят для майнинга пр иусловии дополнительной установки пакетов для OPENCL);
  • Mesa — интегрированные в ядро системы Linux открытые драйвера radeon (устаревшие);
  • rocm (Radeon Open Compute) — реализация OpenCL от компании AMD, также входят в пакет драйверов AMDGPU-PRO последних версий.

Для майнинга обычно применяется версия AMDGPU-PRO, так как она позволяет в полной мере использовать технологию параллельных вычислений на видеокартах АМД в Линуксе.

Открытые драйвера radeon Mesa не поддерживают в полной мере технологии OpenCl, поэтому не подходят для майнинга. Для работы видеокарт AMD поколения CGN2 (например, r9 290) эти драйвера нужно принудительно отключать.

Фирменные драйвера АМД отличаются между собой поддержкой разных версий OpenCL, а также списком поддерживающихся видеокарт.

Для майнинга в ОС Ubuntu 16.04 лучше использовать фирменные драйвера версии 17.40 (рекомендованные АМД (версия 514569) — для RX-ов или эти (версия 492261) — на AMD R9 290 и других картах поколения CGN2).

Для Ubuntu 18.04 на RX-ах хорошо работали драйвера версии 18.50.

Драйвера версии 17.40 имеют поддержку окружения для высокопроизводительных параллельных вычислений OpenCL версии 1.2, а релиз 18.50 – OpenCL 2.1.

Теоретически OpenCL 2.1 должен обеспечивать более высокую производительность и порядок работы с памятью, но, к сожалению, последние драйвера АМД могут не корректно работать со всеми, даже официально поддерживаемыми картами.

В особенности это касается поддержки еще не очень старых карт с микроархитектурой Graphics Core Next 2. К ним относятся видеокарты с чипами Bonaire и Hawaii: AMD Radeon HD 7790, HD 8770, R7 260/260X, R9 290/290X, R9 295X2, R7 360, R9 390/390X.

Подготовка к установке драйверов АМД в Убунту

Для установки драйверов и всех необходимых пакетов нужно иметь права суперпользователя (root), либо получать эти привилегии, выполняя каждую команду с sudo.

Перед установкой драйверов АМД нужно обновить систему.

Это можно сделать, выполнив команду:

sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove

После обновления ОС нужно перезагрузить компьютер:

sudo reboot

На некоторых компьютерах с видеокартами поколения CGN2 (например, R9 290) сначала нужно установить драйвера  версии 492261 и только потом устанавливать обновления (это возможно сделать только на ubuntu 16.04 с первыми версиями ядра). В противном случае система крашится.

Установка драйверов AMD в ОС ubuntu

Для установки драйверов amdgpu-pro 17.40 в терминале, открытом из папки с разархивированными файлами драйвера, выполняют команду:

sudo ./amdgpu-pro-install -y --compute

где:

-y — автоматически подтверждает выполнение скрипта установки (нет необходимости вводить Да на каждый запрос установщика);

--compute — включает режим вычислений для майнинга (если поддерживается драйвером, для каждой версии drivers нужно смотреть его readme).

При появлении ошибок доступа к amdgpu-pro-install нужно дать файлу необходимые права командой:

sudo chmod a=rwx amdgpu-pro-install

Кроме того, в дополнение к драйверам 17.40, желательно установить компонент ROCM командами:

sudo apt install -y rocm-amdgpu-pro

echo ‘export LLVM_BIN=/opt/amdgpu-pro/bin’ | sudo tee /etc/profile.d/amdgpu-pro.sh

Этот пакет является платформой для GPU Enabled HPC и UltraScale Computing.

Для установки более новых драйверов (17.50+) используется команда:

sudo ./amdgpu-pro-install -y --opencl=pal,legacy --headless

где:

--opencl=pal,legacy — комбинированная поддержка OpenCl в версиях драйверов pal и legacy, используется вместо --compute в новых драйверах.

pal-версия отличается от legacy списком поддерживаемых видеокарт. Legacy drivers для видеокарт до Vega10, для боле новых нужны драйвера pal.
Опция --opencl=rocm включает драйвер ROCm для OpenCL.

--headless устанавливает только компоненты, необходимые для Opencl, что в последующем уменьшает вероятность сбоев.

Если при установке драйверов возникают ошибки с правами доступа, то нужно попробовать предоставить права выполнения файлу amdgpu-pro-install как программы с помощью контекстного меню или командой:

chmod +x amdgpu-pro-install

Для установки в серверной версии системы 18.04 только средствами командной строки используют команды (для драйверов 19.30):

wget https://drivers.amd.com/drivers/linux/amdgpu-pro-19.30-934563-ubuntu-18.04.tar.xz --referer http://support.amd.com/en-us/kb-articles/Pages/Radeon-Software-for-Linux-Release-Notes.aspx
tar -Jxvf amdgpu-pro-19.30-934563-ubuntu-18.04.tar.xz
cd amdgpu-pro-19.30-934563-ubuntu-18.04
sudo ./amdgpu-pro-install -y --opencl=pal,legacy --headless

После процедуры стандартной установки драйверов для видеокарт amd нужно также инсталлировать дополнительные пакеты:

sudo apt install amdgpu-dkms libdrm-amdgpu-amdgpu1 libdrm-amdgpu1 libdrm2-amdgpu opencl-amdgpu-pro opencl-amdgpu-pro-dev

Этим, среди прочего, лечится ошибка WARNING: amdgpu dkms failed for running kernel mining.

После инсталляции драйверов нужно добавить пользователя в группу видео. Это осуществляется командой:

sudo usermod -a -G video $LOGNAME

Проверка пользователей, включенных в группу video делается командой:

groups

Проверить правильность устанвоки драйверов можно командами:

sudo update-pciids

lspci -nn | grep -E 'VGA|Display'

После этого нужно откорректировать загрузчик, где нужно включить поддержку больших страниц видеопамяти (режим compute), а также отключить загрузку драйвера radeon для видеокарт поколения CGN 2.

Корректировка загрузчика ядра GRUB

Отредактировать GRUB можно с помощью редактора nano командой:

sudo nano /etc/default/grub

В редакторе нужно отредактировать строку GRUB_CMDLINE_LINUX=””, приведя ее к виду:

GRUB_CMDLINE_LINUX="amdgpu.vm_fragment_size=9"

где amdgpu.vm_fragment_size=9 — это включение поддержки больших страниц памяти (аналог compute mode).

После корректирования grub нужно сохранить изменения, нажав control+o , подтвердить изменения, нажав Y, нажать Enter для сохранения файла, выйти из редактора (control+x) и затем выполнить команды:

sudo update-grub
sudo reboot

Для справки:

В выражении amdgpu.vm_fragment_size=X значение фрагментирования видеопамяти X вычисляется по формуле 4KB*2^X. По умолчанию X=4, что соответствует страницам памяти величиной 64KB. Установка значения X=9 делает размер страниц памяти равным 2MB ,что значительно уменьшает фрагментацию и увеличивает быстродействие.

Отключение загрузки устаревшего драйвера Radeon в ядре Linux

Для видеокарт с микроархитектурой CGN второго поколения (CGN 2), нужно обязательно привести строку параметров загрузчика ядра GRUB_CMDLINE_LINUX_DEFAULT к такому виду:

GRUB_CMDLINE_LINUX_DEFAULT="radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=1"

где:

radeon.si_support=0 — это отключение поддержки radeon.si;

radeon.cik_support=0 — отключение поддержки radeon.cik;

amdgpu.si_support=1 — включение поддержки amdgpu.si;

amdgpu.cik_support=1 — включение поддержки amdgpu.cik.
Для коррекции grub можно использовать редактор nano:
sudo nano /etc/default/grub

После корректирования grub нужно сохранить изменения, нажав control+o , подтвердить изменения, нажав Y, нажать Enter для сохранения файла, выйти из редактора (control+x) и затем выполнить команды:

sudo update-grub
sudo reboot

Установка пакета AMD APP SDK

Пакет AMD APP SDK позволяет использование технологии OpenCL. Его нужно устанавливать для старых версий драйверов. Например, уже для amdgpu-pro-17.40-514569 этот пакет ставить не нужно.

В новых драйверах AMDGPU-Pro и ROCm инсталлировать AMD APP SDK не нужно (AMD уже официально даже не распространяет этого пакета).

Для старых драйверов скачать пакет APP SDK можно с GitHub repo или на сайте sourceforge.

Как проверить версию установленных драйверов AMD в ubuntu?

Для изучения устройств, установленных в системе и поддерживающих технологию OpenCL, используют команду:

clinfo

Пример вывода информации о видеокарте командой clinfo:

Кроме того, проверить, какой драйвер используется системой можно командой:

lspci -k | grep -EA3 "VGA|3D|Display"

Скриншот видеокарт R9 290/290x, работающих в xubuntu 16.04 с драйверами amdgpu (вывод по команде lspci -k | grep -EA3 “VGA|3D|Display”):

Полную информацию о процессе загрузки всех драйверов в системе, режиме работы со страницами памяти и другую важную информацию о видеокартах (и не только) можно посмотреть в логах командой:

journalctl -b | grep drm

Выдача информации,касающейся подсистемы ядра Direct Rendering Manager (DRM), которая отвечает за взаимодействие с видеокартами:

Здесь есть информация о таких важных для майнинга элементах, например:

  • initializing kernel modesetting (HAWAII 0x1002:0x67B0 0x174B:0xE285 0x00) — инициализация установок ядра для видеокарты HAWAII с указанием BIOS;

(для rx-ов отображается: initializing kernel modesetting (POLARIS10 0x1002:0x67DF 0x174B:0xE353 0xCF);

  • memory usable by graphics device = 4096M — количество доступной видеопамяти;
  • Detected VRAM RAM=4096M, BAR=256M — количество видеопамяти,
  • RAM width 512bits GDDR5 — тип видеопамяти и разрядность шины и т.д.

При наличии проблем с установкой драйверов amd именно здесь стоит искать ошибки.

Для просмотра информации обо всех устройствах в системе можно использовать команду:

sudo lshw

P.S. Ошибка Sub-process /usr/bin/dpkg returned an error code (1) или dpkg: ошибка при обработке пакета amdgpu-dkms, возникающая при установке некоторых драйверов AMD в x(ubuntu) 20.x лечится полным удалением драйверов и проблемного ядра (обычно это версия 5.8.0-45) и переходе на совместимую версию ядра (например, 5.4.0-58-generic) и драйверов (например, amdgpu-pro-20.40-1147286-ubuntu-20.04) командами:

sudo amdgpu-uninstall -y
sudo amdgpu-pro-uninstall -y
sudo apt autoremove
sudo apt clean
sudo apt-get autoremove
sudo rm /var/crash/amdgpu-dkms.0.crash
dpkg --list | grep linux-image | grep ^ii (по этой команде будут отображены установленные версии ядра, их нужно записать)
sudo apt-get install linux-image-5.4.0-58-generic
sudo apt-get install linux-modules-5.4.0-58-generic
sudo apt-get install linux-modules-extra-5.4.0-58-generic
перезагрузиться и выбрать загрузку с ядром 5.4.0-58 (для этого перед загрузкой нужно удерживать кнопку ESC или использовать программу grub-customizer)
удалить записанные ранее сбойные ядра, например, 5.8.0-45, командами:
sudo apt remove linux-modules-extra-5.8.0-45-generic
sudo apt remove linux-modules-5.8.0-45-generic
sudo apt remove linux-image-5.8.0-45-generic
перезагрузиться, проверить версию ядра (должна быть версия 5.4.0-58-generic) командами
uname -r
dpkg --list | grep linux-image | grep ^ii
установить headers командой
sudo apt install linux-headers-$(uname -r)

установить драйвера amdgpu-pro-20.40-1147286-ubuntu-20.04. Проблема должна быть решена.

P.S. Актуальная информация об установке драйверов AMD в Linux в статье Шпаргалка по установке драйвера видекарт AMD на ubuntu.

2 комментария

  • Алексей

    У меня ругается на аргумент “-у”, так что комм строка должна иметь вид:
    “sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y && sudo apt autoremove -y”
    В таком виде никаких ругательств.

  • cryptoprofi

    В xubuntu 16.04 на двух компах обновление нормально работает по синтаксису, указанному в статье. Чем больше разных дистрибутивов, тем больше разных заморочек…

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

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