Майнинг,  Обзоры,  Статьи

Сравнение производительности видеокарт с официальными драйверами AMD разных версий в Linux

Старый конь борозды не испортит...
Народная мудрость

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

  • Mesa 3D Clover (поддерживает OpenCL 1.2);
  • Mesa 3D Rusticl (OpenCL 3.0);
  • AMD ORCA (видеокарты AMD GCN 1 – GCN 4, поддерживает OpenCL 1.2);
  • AMD PAL (OpenCL 2.0, AMD GPU GCN 2 – GCN 5 и RDNA 1, содержит библиотеки ROCm-OpenCL для архитектур GCN5 и новее, не требует DKMS);
  • AMD ROCm для OpenCL (OpenCL 2.x, видеокарты AMD GCN 5 и RDNA 1–3). Эти драйвера предлагаются компанией AMD для своих видеокарт в составе deb-пакетов amdgpu.

Для новых видеокарт AMD при проведении OpenCL-вычислений лучше всего использовать драйвера, включающие библиотеки AMD ROCm.

Что такое ROCm?

ROCm (Radeon Open Compute) — это программная платформа с открытым исходным кодом, созданная компанией AMD для использования вычислительных возможностей графических ускорителей своего производства.

В состав ROCm входят библиотеки драйвера, API, инструменты разработчика, а также интерфейс гетерогенных вычислений для переносимости HIP (от англ. Heterogeneous-Compute Interface for Portability).

Компоненты ROCm, среди прочего, обеспечивают возможность проведения параллельных вычислений на GPU AMD по стандарту OpenCL (Open Computing Language).

Использование более новой версии ROCm теоретически может увеличить производительность вычислений на видеокартах AMD, в том числе хешрейт при майнинге. Это достигается за счет оптимизации работы драйверов, применения улучшенного программного кода в библиотеках, а также использования новых функций ROCm.

Например, в релиз ROCm пятой версии (выпущен в начале 2022 года) добавлен следующий функционал:

  • интегрирована поддержка новых графических ускорителей (среди них AMD Instinct MI210 и AMD Radeon Pro W6800);
  • оптимизирована производительность матричных FP64 операций;
  • улучшено управление кэшем;
  • улучшена латентность ядра и среды выполнения (runtime);
  • внесены улучшения, упрощающие работу разработчиков.

В то же время необходимо отметить, что не всегда обновение драйверов приводит к улучшению работы видеокарты. Это связано со многими факторами, включая желание производителя принудить лохов потенциальных покупателей к покупке новой продукции.

Чтобы в полной мере использовать вычислительные возможности видеокарт AMD, на компьютере нужно корректно установить драйвер AMD с пакетом ROCm, а также использовать совместимый майнер/программу.

Рассмотрим подробнее, как установить, узнать/обновить версию ROCm драйвера AMD и как ее обновление влияет на производительность при майнинге, а также стабильность работы.

Как узнать версию ROCM, установленную на компьютере?

Чтобы узнать установленную на компьютере версию платформы ROCM, нужно посмотреть название каталога, в котором установлен инструмент ROCm System Management Interface (rocm-smi).

Для поиска каталога rocm-smi в операционной системе ubuntu, можно использовать команду

locate rocm-smi

Согласно информации из картинки, приведенной в качестве примера, на компьютере установлена плафторма версии 5.2.5.

Утилита rocm-smi может быть полезна для настройки видеокарт, установленных на компьютере.

Полную информацию о видеокарте, установленном драйвере, производителе памяти и т. д. можно посмотреть, запустив rocm-smi с ключом showallinfo, например:

/opt/rocm-5.2.5/bin/rocm-smi --showallinfo

Посмотреть точные версии всех rocm-библиотек, установленных на компьютере, можно также командой

dpkg -l | grep rocm

Как видно из примера, на подопытном компьютере установлены следующие пакеты rocm:

  • rocm-core, rocm-language-runtime, rocm-opencl-runtime и rocm-smi-lib версии 5.0.0.50205-186;
  • rocm-ocl-icd и rocm-opencl версии 2.0.0.50205-186.

Эти пакеты устанавливаются после установки драйвера AMD согласно шпарагалке.

Кроме того, на компьютере желательно установить пакет rocm-dkms командой:

sudo apt install rocm-dkms

rocm-dkms обеспечивает интеграцию драйверов с ядром операционной системы, позволяя автоматически обновлять и собирать модули ядра ROCm при каждом kernel-обновлении.

После установки rocm-dkms количество пакетов rocm в системе увеличится до 18:

Согласно официальной информации, по состоянию на 31.05.2023 самая новая версия ROCm — это релиз под номером 5.5.1:

Он офифицально поддеживается операционными системами на базе ubuntu 20.04.5 (ядро 5.15+) и 22.04.2 (ядро 5.19+):

Функционал ROCm 5.5.1 официально доступен только на видеокартах AMD с архитектурой GFX9 (Vega 20), RDNA (Navi 21) и CDNA (GFX ID gfx908, gfx90a):

После выпуска релиза rocm-5.2.5 на платформу были добавлены ряд улучшений. По состоянию на конец мая 2023 года последний релиз rocm — это версия 5.5.1. Благодаря его использованию можно получить следующие «плюшки»:

  • увеличить в 8 раз лимит размера стека (Stack Size Limit) — с 16k до 128K;
  • улучшить алгоритм работы с видеопамятью;
  • использовать различные новые функции, например, wall_clock64, регистр GPU_MAX_HW_QUEUES и другие;
  • оптимизировать работу библиотек за счет использования оптимизированного компилятора.

Все эти изменения должны положительно сказаться на производительности при проведении многопотоковых вычислений на видеокартах.

Так ли это на самом деле?

Для проверки производительности видеокарты с различными версиями rocm можно сравнить хешрейт при майнинге на различных версиях этой платформы.

Как установить более новую версию пакета rocm для видеокарт AMD?

Чтобы установить самую последнюю версию драйвера и пакета rocm для видеокарт AMD можно использовать новейший инсталлятор драйверов AMD, например, amdgpu-install_5.4.50405-1_all.deb от 12.05.2023 (Radeon Software for Linux version 22.40.6 for Ubuntu 20.04.5 HWE):

Установку можно произвести разными способами, но лучше сначала удалить старый драйвер AMD.

Затем копируем ссылку на файл-инсталлятор (адрес нужен для использования вместе с командой wget), и устанавливаем драйвер 5.4.50405-1:

sudo amdgpu-uninstall -y
sudo apt-get purge amdgpu-install
sudo apt autoremove && sudo apt clean && sudo apt-get autoremove && sudo apt clean
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove
wget https://repo.radeon.com/amdgpu-install/22.40.5/ubuntu/focal/amdgpu-install_5.4.50405-1_all.deb
sudo apt install ./amdgpu-install_5.4.50405-1_all.deb
sudo amdgpu-install -y --accept-eula --usecase=graphics,opencl --opencl=rocr,legacy
sudo usermod -a -G video $LOGNAME && sudo usermod -a -G render $LOGNAME

Еще раз отметим, что на этапе установки драйверов AMD в Linux может произойти сбой (например, появится ошибка WARNING: amdgpu dkms failed for running kernel), так используемая видеокарта/другое железо, ядро системы не совместимы с устанавливаемым пакетом.

В этом случае нужно установить более старую, совместимую версию драйверов и/или поменять версию ядра Linux.

В случае «корявой» установки пакета rocm-5.4.5 teamredminer на некоторых алгоритмах успешно запускается, srbminer подвисает, а wildrig выдает ошибку Error CL_OUT_OF_HOST_MEMORY when calling clCreateCommandQueueWithProperties, Failed to start OpenCL threads.

При корректной установке драйвера все майнеры запускаются без проблем.

Что делать, если появляется ошибка Could not locate dkms.conf file?

При появлении ошибки

Error! Could not locate dkms.conf file.
File: /var/lib/dkms/amdgpu/5.16.9.22.20-1511377~20.04/source/dkms.conf does not exist.
WARNING: amdgpu dkms failed for running kernel

нужно вручную удалить поврежденные символьные ссылки, по которым безуспешно производится поиск файла dkms.conf.

Их можно найти командой

for i in /var/lib/dkms/*/[^k]*/source; do [ -e "$i" ] || echo "$i";done

Пример вывода указанной выше команды при проблемной установке драйвера AMD (не находится файл dkms.conf):

/var/lib/dkms/amdgpu/5.16.9.22.20-1511377~20.04/source
/var/lib/dkms/amdgpu/6.0.5-1593694.20.04/source

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

sudo rm /var/lib/dkms/amdgpu/5.16.9.22.20-1511377~20.04/source
sudo rm /var/lib/dkms/amdgpu/6.0.5-1593694.20.04/source

После этого нужно снова произвести чистую установку драйвера либо повторить конфигурирование драйвера amdgpu командой

sudo dpkg-reconfigure amdgpu-dkms

В конце концов, в случае успеха в консоли появится строка DKMS: install completed, должна корректно заработать утилита clinfo.

Команда

dkms status

должна отображать информацию об установленном модуле amdgpu и версии ядра системы например (xubuntu 20.04, драйвер 22.40.6/rocm 5.4.5):

amdgpu, 5.18.13-1577590.20.04, 5.15.0-73-generic, x86_64: installed

Сравнение хешрейта видеокарты AMD Radeon RX 5500 XT с разными версиями rocm

С драйвером 5.4.50405-1 из коробки идет rocm версии 5.4.5:

Чтобы установить самую новую версию (rocm 5.5.1) необходимо дополнительно потанцевать с бубном, но это отдельная тема…

Для того, чтобы сделать вывод о разнице в производительности и стабильности, достаточно сравнить драйвера 22.20.5 (выпущены в ноябре 2022 года) и 22.40.6 (май 2023 года).

Проверим разницу в хешрейте между версиями rocm 5.2.5 и 5.4.5 (драйвера amdgpu 22.20.5 и 22.40.6 соответственно).

Видеокарта AMD Radeon RX 5500 XT (gfx1012) на драйвере 22.20 с пакетом rocm-5.2.5 в десктопной xubuntu 20.04 (kernel 5.15.0-72) демонстрирует следующую производительность при майнинге (Fvram=990MHz, Fcore=1550MHz, подключен монитор):

  • dynexsolve — 1.01 KH/s (gpu-intensity 320, SRBMiner-Multi 2.2.8);
  • DNX+RAD+ZIL — 0.97 KH/s + 92 MH/s + 28.11 MH/s (srbminer-multi 2.2.8);
  • ethash — 28.09 MH/s (монета Altcoinchain (ALT), DAG 1.3 GB, teamredminer 0.10.12, включен R-Mode);
  • equihash192.7 (ZcashPoW) — 18-19 sol/s (lolminer 1.76);
  • evrprogpow — 10.7 MH/s (DAG 3.27 GB, SRBMiner-Multi 2.2.8);
  • kaspa — 151.6 MH/s (SRBMiner-Multi 2.2.8);
  • kawpow — 12.23 MH/s (teamredminer 0.10.12);
  • heavyhash — 178.36 MH/s (wildrig-multi 0.36.6);
  • memehash + ZIL — 15.9 MH/s + 28.11 MH/s (SRBMiner-Multi 2.2.8);
  • progpowz — 9.23 MH/s (DAG 1.59 GB, SRBMiner-Multi 2.2.8);
  • sha256dt — 758 MH/s (SRBMiner-Multi 2.2.8);
  • sha512256d — 256.6 MH/s (SRBMiner-Multi 2.2.8);
  • ubqhash — 28.11 MH/s (Epoch: 127, lolminer 1.76);
  • verthash — 28-29 MH/s (teamredminer 0.10.12 ).

Хешрейт на драйвере 22.40.6 в xubuntu 20.04 (kernel 5.15.0-73) с пакетом rocm-5.4.5 изменяется в лучшую сторону, но незначительно (прирост 1-3%, в пределах погрешности).

При этом, при той же нагрузке, ухудшилась стабильность работы компьютера. Возможно, для этой версии драйвера нужно снижать разгон?

Исходя из изложенного выше можно сделать вывод, что не стоит гнаться за установкой самых новых драйверов AMD, так как в ряде случаев это не дает прироста хешрейта/FPS, а лишь приводит к появлению головной боли…

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

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