LINUX.ORG.RU

Помогите разобраться в джунглях драйверов AMD

 ,


3

3

Все мои знания по драйверу AMD ограничиваются этими. «run-файл можно конвертнуть в DEB, а после установки надо выполнить „aticonfig --initial -f“, чтобы „иксы“ не пытались использовать драйвер radeon вместо fglrx, а ещё нужно грузиться с опцией nomodeset или radeon.modeset=0 (или добавить это в /etc/modprobe.d/любой_файл.conf)».

Сейчас всё стало сложно и запутанно. Драйвер radeon я понимаю: драйвер в ядре, драйвер в libdrm, драйвер в Mesa, и драйвер в «иксах». А с amdgpu какие-то дебри и джунгли.

Mesa 20.1-dev RADV vs. RADV+ACO vs. AMDVLK vs. AMDGPU-PRO Vulkan Radeon Linux Gaming Performance

4 реализации Vulkan! Долбануться можно, 4 реализации Vulkan... А сколько реализаций OpenGL и OpenCL? Объясните, пожалуйста, как начать пользоваться драйвером amdgpu. И, если можно, описание каждой из реализаций Vulkan, OpenGL и OpenCL.

И ещё такой вопрос. Как разгонять? На примере Radeon HD RX580. Раньше было просто, например так: aticonfig --odsc=600,900, где нужно подставить нужные частоты GPU и памяти.

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 1)

В ядре два свободных драйвера: radeon для старых видеокарт AMD, и amdgpu для новых карт AMD. Ядро, учитывая модель видеокарты, автоматически подгружает и использует нужный драйвер.

Mesa, используя ядерный драйвер, релизует в юзерспейсе OpenGL (radeonsi) и Vulkan (radv).

Помимо реализации Vulkan, встроенной в Mesa, есть еще сторонняя свободная реализация от AMD - называется AMDVLK. Могу сказать, что производительность AMDVLK и RADV примерно идентична, так что какого-то особо смысла использовать AMDVLK вместо RADV нет. Но при желании можно установить AMDVLK рядом с Mesa и использовать при необходимости.

Проприетарный драйвер AMDGPU-PRO содержит собственную реализацию OpenGL и Vulkan (которая, думаю, примерно идентична AMDVLK). Также он содержит OpenCL. AMDGPU-PRO так же, как и Mesa, использует ядерный драйвер.

Как начать пользоваться amdgpu, имея достаточно свежую видеокарту? Достаточно установить свежее ядро, свежие прошивки (linux-firmware) и свежую Mesa и все будет работать. В дистрибутивах это, как правило, уже установлено из коробки.

4 реализации Vulkan! Долбануться можно, 4 реализации Vulkan… А сколько реализаций OpenGL и OpenCL?

По факту, реализации Vulkan всего две: RADV и AMDVLK. RADV+ACO - это тот же RADV, только в качестве компилятора шейдеров используется ACO (новый, более быстрый бэкенд) вместо LLVM. Реализации OpenGL тоже две: RadeonSI и проприетарная реализация из AMDGPU-PRO. В Mesa есть еще реализации OpenGL для старых карт (r300, r600…), но их можно не учитывать, если речь не о древних видеокартах.

В общем, как-то так, хотя могу ошибаться в некоторых моментах.

p.s. Интересное чтиво на Reddit на эту тему.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 9)

Объясните, пожалуйста, как начать пользоваться драйвером amdgpu

Искаропки. amdgpu подхватывается из ядра. mesa в нормальных дистрах предустановлен, большего не надо.

4 реализации Vulkan!

Из них нужен только mesa (radv).

xDShot ★★★★★
()

Ядерная часть для всех GCN 1.x одна - amdgpu

   __________________________ 
  | Direct Rendering Manager |
  |          amdgpu          <--- Ванильный DRM во всех ядрах
  |_____________A____________|
                |                Kernel space
----------------|-----------------------------
           _____|_____           User Space
          |  libdrm   |
          |_____A_____|
                |
                |_________________,
   _____________|____________     |
  |             |       Mesa |    |         <-- Открытые драйвера
  |      ______/ \_____      |    |
  |     |              |     |    |
  |  RadeonSI         RADV   |  AMDVLK
  |  (OpenGL)       (Vulkan) | (Vulkan)
  |__________________________|      \
                              Открытый драйвер от AMD.
                              AMD долго обещала открытый драйвер.
                              не все оказались ждунами,
                              кто-то решил запилить RADV, 
                              и буквально через пару лет после 
                              этого AMD таки его выпустила.

Открытая реализация OpenGL - ROCm, только я подробности про нее не знаю. А проприетарными дайрверами AMD почти никто не пользуется.

anonymous
()

оффтоп: в амд вообще сложно со спеками, трудно найти, в отличие от интел.

Deleted
()

Kron4ek, xDShot, anonymous, спасибо за исчерпывающий ответ! А какие реализации OpenCL есть? Я слышал что лучше выдрать из amdgpu-pro (кстати, как это сделать? Есть ссылка на статью?).

ZenitharChampion ★★★★★
() автор топика

Если кратко: в этом нельзя разобраться. Во всяком случае, простому человеку. Я вожусь с этими драйверами уже несколько лет, но до сих пор озарение меня не посетило.

Если длинно: перечисленные тобой компоненты просто разные сорта говна.

По компонентам:

Драйвер ядра amdgpu - условно, их 2 разновидности. Та, что в ходит в состав релизов на kernel.org, и вторая, поддерживаемая АМД которая входит в пакет драйверов, который условно называют AMDGPU-PRO.
Отличаются тем, что в верссии от АМД есть патчи, которые нельзя принять в апстрим из-за кривого кода, или просто потому, что они нужны только для работы проприетарных компонентов драйвера. Вроде как ограниченно совместимы.

libdrm - опять же, 2 версии. Апстим и с патчами от АМД. Вторая нужна для работы проприетарного OpenGL.
DDX-драйвер amdgpu - их тоже 2 версии, по аналогии с libdrm. Чем именно отличаются не знаю.

Драйвер opengl, libGL1.
Их два. Первый - проприетарный от AMD. Собран из старого кода fglrx. Медленный и глючный, но согласно слухам существуют некоторые секретные ынтерпрайзные программы, которые работают только с ним. Второй свободный, называется radeonsi и входит в состав Mesa. Работает быстро, официально поддерживается АМД. Зависит от libLLVM, по этому для сборки нужна свежая версия LLVM.

OpenCL
Тут драйверов целых 4, но я в них плохо разбираюсь.
Есть 2 проприетарных драйвера, один на основе старого кода от fglrx, второй вроде как написанный с нуля. Старый драйвер поддерживает только старые видеокарты, до GCN 1.2. Новый все, начиная с GCN 1.0.
Далее идет ROCm. Это целый свободный фреймворк для разработки, в состав которого и opencl-драйвер. Я не осилил установку этой фигни, т.к. мне не надо. Проприетарный opencl ставится копированием 4 файлов в нужные места, а ROCm это монстр на сотни мегабайт.
Еще есть свободный clover из Мезы, но про него лучше сразу забыть, т.к. оно не работает толком.

Vulkan
Опять же, сорта говна. RADV и RADV+ACO это одно и тоже, просто используются разные компиляторы шейдеров. Все находится в одном бинарнике, по этому переключаться между ними можно с помощью переменной окружения. Свободный драйвер, входит в Мезу.
AMDVLK - свободный драйвер от AMD. Когда-то давно они обещали сделать свободный драйвер, но пока обещали, разработчики из Valve написали RADV. Так что теперь непонятно, зачем нужен AMDVLK.
Дайвер из AMDGPU-PRO - проприетарная реализация, на основе общего кода с windows. Скорее всего, это старые наработки еще со времен Mantle Возможно, имеет какое-то отношение к AMDVLK, но сами разработчики говорят что нет.

Кроме всего этого, есть еще драйверы libva, но я в их сортах не разбирался, т.к. пользуюсь только свободными драйверами из Mesa, т.к. это проще, чем следить за зоопарком проприетарных компонентов.

Khnazile ★★★★★
()
Последнее исправление: Khnazile (всего исправлений: 1)
Ответ на: комментарий от Khnazile

Ого. Тут всё систематизировано и в одном месте. Спасибо.

ZenitharChampion ★★★★★
() автор топика
Ответ на: комментарий от Khnazile

в этом нельзя разобраться

извиняюсь за оффтоп. у меня невидия (какая-то), потратил энное количество человеко-сил, но так и не запустил её под фряхой в режиме полного функционала.

Deleted
()

Объясните, пожалуйста, как начать пользоваться драйвером amdgpu.

Поставить любую видеокарту поколения GCN2+ и любой современный мейнстримный дистр линукса. Получишь из коробки мейнстримный стек amdgpu с реализациями OpenGL и Vulkan от mesa. Остальное тебе не нужно, если ты не знаешь, зачем. Кроме OpenCL, с которым сложнее - в mesa вроде бы кривая недопиленная реализация на базе clover, которую забросили т. к. все вендоры кинулись пилить свои суверенные стеки, а AMD ROCm сложно собирается и имеет замороченные требования к PCIe контроллеру.

shatsky ★★
()
Ответ на: комментарий от ZenitharChampion

А какие реализации OpenCL есть?

Есть, так сказать, «от производителя», которая ставится вместе с AMDGPU-PRO, но которую можно «выдернуть» и «прикорчевать» к свободной реализации «дров».

А есть ROCm, но он работает только с ограниченным числом дистрибутивов и ядер (с 5.5 на «арче» не заведётся, как не искривляйся). Да и «корчевать» его при этом надо так, что проще вытащить из блоба.

Korchevatel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.