2021-06-09 Blender, OpenCL и Radeon ProRender

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
 +
Есть у меня такая традиция - раз в несколько лет с блендером и каким-нибудь радеоном трахаться.
 +
 
Получилось завести под линуксом Blender на радеоне с OpenCL и Radeon ProRender.
 
Получилось завести под линуксом Blender на радеоне с OpenCL и Radeon ProRender.
  
Строка 67: Строка 69:
 
** Barcelona Pavillion, CPU+GPU (128x128 tile) - 05:48
 
** Barcelona Pavillion, CPU+GPU (128x128 tile) - 05:48
  
572 секунды. Иными словами, немного побыстрее GTX 1660 и примерно на уровне GTX 1080. Вот [https://www.phoronix.com/scan.php?page=article&item=blender-281-optix&num=3 тут] GTX 1660 Super выдал 628 секунд, а GTX 1080 - 565 секунд. Ну, на самом деле, это можно считать успехом, т.к. расчётные показатели достигнуты - Radeon RX 5500M и считается примерным аналогом GTX 1660 / 1660 Ti. До RTX с OptiX, понятно, не дотягивает, но тот RTX стоит как весь этот ноут.
+
572 секунды. Иными словами, немного побыстрее GTX 1660 и примерно на уровне GTX 1080. Вот [https://www.phoronix.com/scan.php?page=article&item=blender-281-optix&num=3 тут на похорониксе] GTX 1660 Super выдал 628 секунд, а GTX 1080 - 565 секунд. Ну, на самом деле, это можно считать успехом, т.к. расчётные показатели достигнуты - Radeon RX 5500M и считается примерным аналогом GTX 1660 / 1660 Ti. Ну и то, что оно в принципе стабильно работает, само по себе уже успех. До RTX с OptiX, понятно, не дотягивает, но тот RTX стоит как весь этот ноут.
  
 
Отдельно стоит упомянуть Radeon ProRender:
 
Отдельно стоит упомянуть Radeon ProRender:

Версия 02:30, 9 июня 2021

Есть у меня такая традиция - раз в несколько лет с блендером и каким-нибудь радеоном трахаться.

Получилось завести под линуксом Blender на радеоне с OpenCL и Radeon ProRender.

За последние лет 10 пытался это сделать несколько раз, ни разу не получалось. OpenCL всегда был болью и страданием, и вообще возникает ощущение, что на него все положили с прибором, включая самих AMD. Я, правда, всё надеюсь на улучшения, так как монополизм нивидии не люблю по причине того, что они ставят палки в колёса разработчикам открытых драйверов.

Сейчас наконец получилось. Получилось на карточке Radeon RX 5500M («Navi 14»). Увы, не через Mesa — ей для работы на новых радеонах не хватает реализации libclc — не хватает файла /​usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc и подобных.

Но, по крайней мере, получилось без полного перехода на закрытый драйвер, то есть с использованием открытого модуля ядра.

В общих чертах — достаточно скачать драйвер AMDGPU-Pro, извлечь пакеты и поставить всё, что относится к OpenCL, не ставя всё остальное.

Для AMDGPU-Pro 20.40 это:

  • amdgpu-core, amdgpu-pro-core (пустые метапакеты)
  • opencl-amdgpu-pro-comgr
  • opencl-amdgpu-pro-icd
  • ocl-icd-libopencl1-amdgpu-pro

Для AMDGPU-Pro 20.50 и более новых (сейчас актуальная 21.10) это:

  • amdgpu-core, amdgpu-pro-core (пустые метапакеты)
  • comgr-amdgpu-pro
  • hsa-runtime-rocr-amdgpu
  • hsakmt-roct-amdgpu
  • ocl-icd-libopencl1-amdgpu-pro
  • opencl-rocr-amdgpu-pro
  • libdrm-amdgpu-amdgpu1, libdrm-amdgpu-common, libdrm2-amdgpu требуются по зависимостям, но по факту не нужны — можно поправить зависимости пакета hsakmt-runtime-rocr-amdgpu и эти пакеты не ставить. Можно поставить, вреда от них никакого.

Также стоит проверить, есть ли в /etc/ld.so.conf.d/ файл с содержимым

/opt/amdgpu-pro/lib/x86_64-linux-gnu
/opt/amdgpu-pro/lib/i386-linux-gnu

Но если установлены «пустые метапакеты», то должен быть (/etc/ld.so.conf.d/10-amdgpu-pro.conf). После чего выполнить sudo ldconfig.

Ещё понадобилось сделать adduser свой_юзер render, чтобы был доступ к устройству /dev/kfd.

Далее ставим clinfo, запускаем его в консоли и видим вроде-как рабочий OpenCL.

Как monkey-патчить зависимости Debian-пакета:

ar x hsakmt-roct-amdgpu_1.0.9-1234664_amd64.deb
tar -Jxf control.tar.xz
# нагло правим файл control прямо в текстовом редакторе и выпиливаем из него ненужную зависимость
tar -cJf control.tar.xz control md5sums shlibs triggers
ar r hsakmt-roct-amdgpu_1.0.9-1234664_amd64.deb control.tar.xz

И, наконец, как заставить заработать ProRender!

Я поставил сборку Blender 2.93 с официального сайта и Radeon ProRender 3.1.0 «для Ubuntu 20», скачав его и установив через Blender Addons -> Install… попробовал включить его и увидел какой-то мутный питоновый бэктрейс.

Оказывается, проблема в том, что в ProRender есть файлик _cffi_backend.cpython-37m-x86_64-linux-gnu.so — он для Python 3.7, а официальная сборка идёт с Python 3.9. Соответственно, вся задача — найти _cffi_backend.cpython-39-x86_64-linux-gnu.so. Найти его легче всего в пакетах (apt-get install python3-cffi), там как раз тоже python 3.9, и сделать

ln -s /usr/lib/python3/dist-packages/_cffi_backend.cpython-39-x86_64-linux-gnu.so ~/.config/blender/2.93/scripts/addons/rprblender/_cffi_backend.cpython-39-x86_64-linux-gnu.so

После этого ProRender завёлся. И даже Cycles с драйвером 21.10 завёлся, хотя с 20.40 падал.

Что по производительности Cycles: на 20.40 рендер на чистом GPU (Radeon RX 5500M) раза в 2 медленнее чистого CPU (Ryzen 4800 HS). На 20.50 гораздо лучше и скорость рендера на GPU и CPU примерно одинаковая, то есть на GPU+CPU вместе получается в 2 раза быстрее, чем просто на CPU.

Итог:

  • Cycles "Supported"
    • Barcelona Pavillion, GPU only (192x192 tile) - 10:23
    • Barcelona Pavillion, CPU+GPU (192x192 tile) - 06:22
  • Cycles "Experimental"
    • Barcelona Pavillion, GPU only (192x192 tile) - 09:32
    • Barcelona Pavillion, CPU+GPU (128x128 tile) - 05:48

572 секунды. Иными словами, немного побыстрее GTX 1660 и примерно на уровне GTX 1080. Вот тут на похорониксе GTX 1660 Super выдал 628 секунд, а GTX 1080 - 565 секунд. Ну, на самом деле, это можно считать успехом, т.к. расчётные показатели достигнуты - Radeon RX 5500M и считается примерным аналогом GTX 1660 / 1660 Ti. Ну и то, что оно в принципе стабильно работает, само по себе уже успех. До RTX с OptiX, понятно, не дотягивает, но тот RTX стоит как весь этот ноут.

Отдельно стоит упомянуть Radeon ProRender:

  • Barcelona Pavillion, GPU only - 05:02
  • Barcelona Pavillion, CPU+GPU - 07:00. O_o

А ещё пришлось таки патчить модуль ядра. Media:Amdgpu-dkms-5.10.diff