Статьи

Об установке драйверов для видеокарт 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

ROCM нужен для того, чтобы использовать более новую технологию OpenCL 2.0 и получить полный контроль над видеокартами, хотя работу с rocm поддерживают не все майнеры. Без rocm система также будет работать, но возможно ухудшение хешрейта и появление некоторых ошибок.

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

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.

Можно вообще удалить из системы драйвера radeon командой:

sudo apt-get remove --purge xserver-xorg-video-radeon

Для коррекции 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

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

  • Алексей

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

  • cryptoprofi

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

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

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