2021-06-09 Blender, OpenCL и Radeon ProRender

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
Есть у меня такая традиция - раз в несколько лет с блендером и каким-нибудь радеоном трахаться.
+
Есть у меня такая традиция — раз примерно в год с блендером и каким-нибудь радеоном трахаться.
  
Получилось завести под линуксом Blender на радеоне с OpenCL и Radeon ProRender.
+
В этот раз меня, в принципе, ждал успех. Получилось, во-первых, завести Cycles на OpenCL с Radeon RX 5500M (Navi 14) под Linux-ом, а во-вторых, даже получить расчётные показатели производительности! Расчётные — это немного быстрее нивидии GTX 1660 Ti и примерно на уровне GTX 1080 (да, она быстрее 1660), именно так, как и заявляется про данный GPU.
  
За последние лет 10 пытался это сделать несколько раз, ни разу не получалось. OpenCL всегда был болью и страданием, и вообще возникает ощущение, что на него все положили с прибором, включая самих AMD. Я, правда, всё надеюсь на улучшения, так как монополизм нивидии не люблю по причине того, что они ставят палки в колёса разработчикам открытых драйверов.
+
Бонусом завёлся и Radeon ProRender, но на конкретном демо-файле толку от него оказалось мало.
  
Сейчас наконец получилось. Получилось на карточке Radeon RX 5500M («Navi 14»). Увы, не через Mesa — ей для работы на новых радеонах не хватает реализации libclc — не хватает файла /​usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc и подобных.
+
Итак, что я сделал…
  
Но, по крайней мере, получилось без полного перехода на закрытый драйвер, то есть с использованием открытого модуля ядра.
+
==== Сначала протестировал Mesa + libclc ====
  
В общих чертах — достаточно скачать драйвер AMDGPU-Pro, извлечь пакеты и поставить всё, что относится к OpenCL, не ставя всё остальное.
+
Чтобы Blender вообще увидел Mesa-девайс, нужно его запускать с <tt>CYCLES_OPENCL_TEST=1 blender</tt>.
  
Для AMDGPU-Pro 20.40 это:
+
Далее обнаруживается, что Mesa до сих пор показывает версию OpenCL 1.1, потому что (лол) у них не реализована функция printf. Всё остальное реализовано (лол). Проблему можно обойти, запуская Blender с переменными окружения <tt>CLOVER_PLATFORM_VERSION_OVERRIDE=1.2 CLOVER_DEVICE_VERSION_OVERRIDE=1.2 CLOVER_DEVICE_CLC_VERSION_OVERRIDE=1.2 CYCLES_OPENCL_TEST=1 blender</tt>.
* amdgpu-core, amdgpu-pro-core (пустые метапакеты)
+
* opencl-amdgpu-pro-comgr
+
* opencl-amdgpu-pro-icd
+
* ocl-icd-libopencl1-amdgpu-pro
+
  
Для AMDGPU-Pro 20.50 и более новых (сейчас актуальная 21.10) это:
+
И, наконец, выясняется, что на новые радеоны нет libclc, что выражается отсутствием файла <tt>/​usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc</tt>. Я попробовал вместо него подложить другой, от tahiti, ничем хорошим это не увенчалось. Рендер запустился, но рендерил белый шум вместо картинки. На встроенный Renoir, кстати, тоже libclc нет, там нужен файл <tt>gfx902-amdgcn-mesa-mesa3d.bc</tt>.
* 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/ файл с содержимым
+
На этом эксперименты с Mesa завершились.
<pre>
+
/opt/amdgpu-pro/lib/x86_64-linux-gnu
+
/opt/amdgpu-pro/lib/i386-linux-gnu
+
</pre>
+
  
Но если установлены «пустые метапакеты», то должен быть (/etc/ld.so.conf.d/10-amdgpu-pro.conf). После чего выполнить sudo ldconfig.
+
==== Потом решил попробовать закрытый драйвер ====
  
Ещё понадобилось сделать <tt>adduser свой_юзер render</tt>, чтобы был доступ к устройству /dev/kfd.
+
К счастью, выяснилось, что у AMD всё достаточно хорошо и ядерная часть закрытого и открытого драйверов совпадает, поэтому OpenCL-ные драйвера можно пробовать запускать, не ставя никаких дополнительных модулей ядра и не переходя на закрытый драйвер для графики
  
Далее ставим clinfo, запускаем его в консоли и видим вроде-как рабочий OpenCL.
+
Скачал драйвер AMDGPU-Pro 20.40 и поставил пакеты opencl-amdgpu-pro-comgr, opencl-amdgpu-pro-icd, ocl-icd-libopencl1-amdgpu-pro, ну и почти пустые amdgpu-core и amdgpu-pro-core, требующиеся по зависимостям.
  
Как monkey-патчить зависимости Debian-пакета:
+
Всё брал для Ubuntu 20 — вообще я юзаю Debian Sid, но он достаточно похож на убунту, чтобы всё завелось.
<code-bash>
+
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
+
</code-bash>
+
  
И, наконец, как заставить заработать ProRender!
+
Проверил, как рекомендовали в интернете, файлик /etc/ld.so.conf.d/10-amdgpu-pro.conf на предмет наличия строк <tt>/opt/amdgpu-pro/lib/x86_64-linux-gnu</tt> и <tt>/opt/amdgpu-pro/lib/i386-linux-gnu</tt> и выполнил sudo ldconfig.
  
Я поставил сборку Blender 2.93 с официального сайта и Radeon ProRender 3.1.0 «для Ubuntu 20», скачав его и установив через Blender Addons -> Install… попробовал включить его и увидел какой-то мутный питоновый бэктрейс.
+
На этом этапе у меня уже завёлся OpenCL 2.0 (появились девайсы в clinfo) и Blender их увидел. И даже тестовая сценка, которая валялась где-то под рукой (не с сайта блендера), успешно отрендерилась.
  
Оказывается, проблема в том, что в ProRender есть файлик <tt>_cffi_backend.cpython-37m-x86_64-linux-gnu.so</tt> — он для Python 3.7, а официальная сборка идёт с Python 3.9. Соответственно, вся задача — найти <tt>_cffi_backend.cpython-39-x86_64-linux-gnu.so</tt>. Найти его легче всего в пакетах (<tt>apt-get install python3-cffi</tt>), там как раз тоже python 3.9, и сделать
+
Далее я скачал с сайта блендера Barcelona Pavillion и решил проверить рендер на нём. Увы, нет — на нём рендер стал падать.
<code-bash>
+
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
+
</code-bash>
+
  
После этого ProRender завёлся. И даже Cycles с драйвером 21.10 завёлся, хотя с 20.40 падал.
+
==== Далее решил попробовать версию закрытого драйвера 20.50, ибо 20.40 — явно не последняя ====
  
Что по производительности Cycles: на 20.40 рендер на чистом GPU (Radeon RX 5500M) раза в 2 медленнее чистого CPU (Ryzen 4800 HS). На 20.50 гораздо лучше и скорость рендера на GPU и CPU примерно одинаковая, то есть на GPU+CPU вместе получается в 2 раза быстрее, чем просто на CPU.
+
…и обнаружил, что в нём изменился состав пакетов.
  
Итог:
+
Но процедуре установки «только OpenCL» это не помешало, только устанавливаемых пакетов стало больше: 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 и те же amdgpu-core с amdgpu-pro-core.
  
* Cycles "Supported"
+
libdrm-* на самом деле не нужны, их приходится ставить только из-за зависимостей. Но вреда они не несут, так что можно ставить смело. Хотя на первом заходе я ещё поизвращался и поправил зависимости в deb пакете hsakmt-roct-amdgpu, убрав оттуда этот libdrm, перед установкой.
** 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. Вот [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 стоит как весь этот ноут.
+
После установки clinfo показало отсутствие девайсов в системе, однако, через strace стало понятно, что оно обращается к /dev/kfd, а /dev/kfd по дефолту доступно только группе render. Поэтому пришлось сделать <tt>adduser me render</tt> и добавить себя в группу, после чего перелогиниться.
  
Отдельно стоит упомянуть Radeon ProRender:
+
clinfo снова показал девайсы, а Blender стал успешно рендерить Barcelona Pavillion… но стал зависать на рендере тестовой сценки, которая на 20.40 успешно рендерилась.
* Barcelona Pavillion, GPU only - 05:02
+
* Barcelona Pavillion, CPU+GPU - 07:00. O_o
+
  
А ещё пришлось таки патчить модуль ядра. [[Media:Amdgpu-dkms-5.10.diff]]
+
Здесь я уже замерил рендер Barcelona Pavillion-а — получилось 16:40 на GPU и примерно 8:50 на CPU+GPU. Не очень хороший результат, прямо скажем.
 +
 
 +
==== Решил попробовать снова обновиться ====
 +
 
 +
Поискал получше и обнаружил, что последняя версия драйвера на самом деле 21.10, а не 20.50.
 +
 
 +
А кроме того, всё это происходило на ядре 5.8, а в дебиане уже было в наличии как минимум 5.10.
 +
 
 +
ОК. Скачал 21.10, провёл ту же процедуру установки пакетов. К счастью, в 21.10 пакеты от 20.50 уже не отличаются. Установил 5.10-е ядро.
 +
 
 +
Перезагрузился и… у меня вообще перестала нормально работать графическая среда. X-ы стали виснуть, в dmesg появились сообщения о GPU reset и всё такое прочее. Причём OpenCL-драйвер тут был никак не виноват, это были просто регрессии драйвера amdgpu в более новом ядре.
 +
 
 +
Что ж, пришлось пробовать ставить модуль ядра из комплекта поставки AMDGPU-Pro… Модуль, как я уже сказал, там тот же самый открытый, что и в обычном ядре — просто версия, видимо, поставляется сразу более новая.
 +
 
 +
Ну ок. Ставим заголовки ядра (linux-headers-5.10.0-7-amd64), сам dkms и пакеты amdgpu-dkms-firmware и amdgpu-dkms… и обламываемся, потому что модуль из AMDGPU-Pro отказывается собираться с ядром 5.10.
 +
 
 +
К счастью, мы всё-таки не лыком шиты и тривиальные ошибки вида «добавился/удалился параметр функции» в модуле ядра поправить можем. Ошибок оказывается немного — всего 3 — и после вот таких вот исправлений: [[Media:Amdgpu-dkms-5.10.diff]] — модуль успешно собирается и устанавливается.
 +
 
 +
Вуаля! После перезагрузки графика снова работает, а Blender наконец-то '''работает стабильно'''. Не виснет и не падает.
 +
 
 +
==== Наступает время прогнать тесты ====
 +
 
 +
Снова рендерим Barcelona Pavillion:
 +
* Cycles «Supported»
 +
** GPU only (192x192 tile) — 10:23
 +
** CPU+GPU (192x192 tile) — 06:22
 +
* Cycles «Experimental»
 +
** GPU only (192x192 tile) — 09:32
 +
** CPU+GPU (128x128 tile) — 05:48
 +
 
 +
И это уже таки считать успехом, ибо вот тут на похорониксе: https://www.phoronix.com/scan.php?page=article&item=blender-281-optix&num=3 - есть данные по рендеру на различных Nvidia-х. GTX 1660 Super выдал 628 секунд, GTX 1080 успел за 565, а у нас 572. Вполне неплохо, Radeon RX 5500M и считается примерным аналогом GTX 1660 / 1660 Ti, даже по числу транзисторов. Ну и то, что оно в принципе стабильно работает, само по себе уже успех. До RTX с OptiX, понятно, не дотягивает, но тот RTX стоит как весь этот ноутбук, так что по Сеньке шапка.
 +
 
 +
==== Отдельно расскажу про Radeon ProRender ====
 +
 
 +
Я пробовал его завести на винде с Radeon R9 270, но ни разу не получалось — при попытке включения плагина Blender всегда падает. Как это решить я не понял, вопросы такие в интернете есть, а ответов — нет.
 +
 
 +
А что на линуксе? А на линуксе — берём сборку Blender 2.93 с официального сайта и Radeon ProRender 3.1.0 опять же «для Ubuntu 20», скачивая его и устанавливая через Blender Addons -> Install… пробуем включить и получаем какой-то питоновый стектрейс со странной, не особо о чём-то говорящей, ошибкой.
 +
 
 +
Гуглением выясняется, что проблема в том, что в ProRender есть файлик <tt>_cffi_backend.cpython-37m-x86_64-linux-gnu.so</tt> — он для Python 3.7, а официальная сборка блендера идёт с Python 3.9.
 +
 
 +
Соответственно, вся задача — найти <tt>_cffi_backend.cpython-39-x86_64-linux-gnu.so</tt>. Найти его легче всего в пакетах (<tt>apt-get install python3-cffi</tt>), там как раз тоже python 3.9, и сделать <tt>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</tt>. Этого хватает, чтобы ProRender таки завёлся.
 +
 
 +
А что же умеет этот ProRender? Ну, ситуация следующая: первую тестовую сценку он рендерит с вполне неплохим качеством всего лишь за 20 секунд (Cycles тратит на неё примерно 1:20). Но если взять Barcelona Pavillion, то на нём, во-первых, результат рендера слегка отличается от Cycles (ну ладно, понятно, что движки разные), а во-вторых, и производительность не выдающаяся:
 +
* GPU only — 05:02
 +
* CPU+GPU — 07:00
 +
 
 +
То есть CPU+GPU медленнее, чем просто GPU O_o. Не знаю, почему.
 +
 
 +
Ещё могу отметить, что Environment-Based Lighting в ProRender делается чуть по-другому, чем в Cycles — в Cycles он делается через Nodes, а в ProRender только через отдельную настройку в панельке. Но работает вполне адекватно.
 +
{{wl-publish: 2021-06-09 11:54:42 +0300 | VitaliyFilippov }}

Версия 11:54, 9 июня 2021

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

В этот раз меня, в принципе, ждал успех. Получилось, во-первых, завести Cycles на OpenCL с Radeon RX 5500M (Navi 14) под Linux-ом, а во-вторых, даже получить расчётные показатели производительности! Расчётные — это немного быстрее нивидии GTX 1660 Ti и примерно на уровне GTX 1080 (да, она быстрее 1660), именно так, как и заявляется про данный GPU.

Бонусом завёлся и Radeon ProRender, но на конкретном демо-файле толку от него оказалось мало.

Итак, что я сделал…

Сначала протестировал Mesa + libclc

Чтобы Blender вообще увидел Mesa-девайс, нужно его запускать с CYCLES_OPENCL_TEST=1 blender.

Далее обнаруживается, что Mesa до сих пор показывает версию OpenCL 1.1, потому что (лол) у них не реализована функция printf. Всё остальное реализовано (лол). Проблему можно обойти, запуская Blender с переменными окружения CLOVER_PLATFORM_VERSION_OVERRIDE=1.2 CLOVER_DEVICE_VERSION_OVERRIDE=1.2 CLOVER_DEVICE_CLC_VERSION_OVERRIDE=1.2 CYCLES_OPENCL_TEST=1 blender.

И, наконец, выясняется, что на новые радеоны нет libclc, что выражается отсутствием файла /​usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc. Я попробовал вместо него подложить другой, от tahiti, ничем хорошим это не увенчалось. Рендер запустился, но рендерил белый шум вместо картинки. На встроенный Renoir, кстати, тоже libclc нет, там нужен файл gfx902-amdgcn-mesa-mesa3d.bc.

На этом эксперименты с Mesa завершились.

Потом решил попробовать закрытый драйвер

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

Скачал драйвер AMDGPU-Pro 20.40 и поставил пакеты opencl-amdgpu-pro-comgr, opencl-amdgpu-pro-icd, ocl-icd-libopencl1-amdgpu-pro, ну и почти пустые amdgpu-core и amdgpu-pro-core, требующиеся по зависимостям.

Всё брал для Ubuntu 20 — вообще я юзаю Debian Sid, но он достаточно похож на убунту, чтобы всё завелось.

Проверил, как рекомендовали в интернете, файлик /etc/ld.so.conf.d/10-amdgpu-pro.conf на предмет наличия строк /opt/amdgpu-pro/lib/x86_64-linux-gnu и /opt/amdgpu-pro/lib/i386-linux-gnu и выполнил sudo ldconfig.

На этом этапе у меня уже завёлся OpenCL 2.0 (появились девайсы в clinfo) и Blender их увидел. И даже тестовая сценка, которая валялась где-то под рукой (не с сайта блендера), успешно отрендерилась.

Далее я скачал с сайта блендера Barcelona Pavillion и решил проверить рендер на нём. Увы, нет — на нём рендер стал падать.

Далее решил попробовать версию закрытого драйвера 20.50, ибо 20.40 — явно не последняя

…и обнаружил, что в нём изменился состав пакетов.

Но процедуре установки «только OpenCL» это не помешало, только устанавливаемых пакетов стало больше: 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 и те же amdgpu-core с amdgpu-pro-core.

libdrm-* на самом деле не нужны, их приходится ставить только из-за зависимостей. Но вреда они не несут, так что можно ставить смело. Хотя на первом заходе я ещё поизвращался и поправил зависимости в deb пакете hsakmt-roct-amdgpu, убрав оттуда этот libdrm, перед установкой.

После установки clinfo показало отсутствие девайсов в системе, однако, через strace стало понятно, что оно обращается к /dev/kfd, а /dev/kfd по дефолту доступно только группе render. Поэтому пришлось сделать adduser me render и добавить себя в группу, после чего перелогиниться.

clinfo снова показал девайсы, а Blender стал успешно рендерить Barcelona Pavillion… но стал зависать на рендере тестовой сценки, которая на 20.40 успешно рендерилась.

Здесь я уже замерил рендер Barcelona Pavillion-а — получилось 16:40 на GPU и примерно 8:50 на CPU+GPU. Не очень хороший результат, прямо скажем.

Решил попробовать снова обновиться

Поискал получше и обнаружил, что последняя версия драйвера на самом деле 21.10, а не 20.50.

А кроме того, всё это происходило на ядре 5.8, а в дебиане уже было в наличии как минимум 5.10.

ОК. Скачал 21.10, провёл ту же процедуру установки пакетов. К счастью, в 21.10 пакеты от 20.50 уже не отличаются. Установил 5.10-е ядро.

Перезагрузился и… у меня вообще перестала нормально работать графическая среда. X-ы стали виснуть, в dmesg появились сообщения о GPU reset и всё такое прочее. Причём OpenCL-драйвер тут был никак не виноват, это были просто регрессии драйвера amdgpu в более новом ядре.

Что ж, пришлось пробовать ставить модуль ядра из комплекта поставки AMDGPU-Pro… Модуль, как я уже сказал, там тот же самый открытый, что и в обычном ядре — просто версия, видимо, поставляется сразу более новая.

Ну ок. Ставим заголовки ядра (linux-headers-5.10.0-7-amd64), сам dkms и пакеты amdgpu-dkms-firmware и amdgpu-dkms… и обламываемся, потому что модуль из AMDGPU-Pro отказывается собираться с ядром 5.10.

К счастью, мы всё-таки не лыком шиты и тривиальные ошибки вида «добавился/удалился параметр функции» в модуле ядра поправить можем. Ошибок оказывается немного — всего 3 — и после вот таких вот исправлений: Media:Amdgpu-dkms-5.10.diff — модуль успешно собирается и устанавливается.

Вуаля! После перезагрузки графика снова работает, а Blender наконец-то работает стабильно. Не виснет и не падает.

Наступает время прогнать тесты

Снова рендерим Barcelona Pavillion:

  • Cycles «Supported»
    • GPU only (192x192 tile) — 10:23
    • CPU+GPU (192x192 tile) — 06:22
  • Cycles «Experimental»
    • GPU only (192x192 tile) — 09:32
    • CPU+GPU (128x128 tile) — 05:48

И это уже таки считать успехом, ибо вот тут на похорониксе: https://www.phoronix.com/scan.php?page=article&item=blender-281-optix&num=3 - есть данные по рендеру на различных Nvidia-х. GTX 1660 Super выдал 628 секунд, GTX 1080 успел за 565, а у нас 572. Вполне неплохо, Radeon RX 5500M и считается примерным аналогом GTX 1660 / 1660 Ti, даже по числу транзисторов. Ну и то, что оно в принципе стабильно работает, само по себе уже успех. До RTX с OptiX, понятно, не дотягивает, но тот RTX стоит как весь этот ноутбук, так что по Сеньке шапка.

Отдельно расскажу про Radeon ProRender

Я пробовал его завести на винде с Radeon R9 270, но ни разу не получалось — при попытке включения плагина Blender всегда падает. Как это решить я не понял, вопросы такие в интернете есть, а ответов — нет.

А что на линуксе? А на линуксе — берём сборку 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 таки завёлся.

А что же умеет этот ProRender? Ну, ситуация следующая: первую тестовую сценку он рендерит с вполне неплохим качеством всего лишь за 20 секунд (Cycles тратит на неё примерно 1:20). Но если взять Barcelona Pavillion, то на нём, во-первых, результат рендера слегка отличается от Cycles (ну ладно, понятно, что движки разные), а во-вторых, и производительность не выдающаяся:

  • GPU only — 05:02
  • CPU+GPU — 07:00

То есть CPU+GPU медленнее, чем просто GPU O_o. Не знаю, почему.

Ещё могу отметить, что Environment-Based Lighting в ProRender делается чуть по-другому, чем в Cycles — в Cycles он делается через Nodes, а в ProRender только через отдельную настройку в панельке. Но работает вполне адекватно.