2021-06-09 Blender, OpenCL и Radeon ProRender

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
 
(не показано 18 промежуточных версий этого же участника)
Строка 1: Строка 1:
Получилось завести под линуксом Blender на радеоне с OpenCL и Radeon ProRender.
+
Есть у меня такая традиция — раз примерно в год с блендером и каким-нибудь радеоном трахаться.
  
За последние лет 10 пытался это сделать несколько раз, ни разу не получалось. OpenCL всегда был болью и страданием, и вообще возникает ощущение, что на него все положили с прибором, включая самих AMD. Я, правда, всё надеюсь на улучшения, так как монополизм нивидии не люблю по причине того, что они ставят палки в колёса разработчикам открытых драйверов.
+
В этот раз меня, в принципе, ждал успех. Получилось, во-первых, завести Cycles на OpenCL с Radeon RX 5500M (Navi 14) под Linux-ом, а во-вторых, даже получить расчётные показатели производительности! Расчётные — это немного быстрее нивидии GTX 1660 Ti и примерно на уровне GTX 1080 (да, она быстрее 1660), именно так, как и заявляется про данный GPU.
  
Сейчас наконец получилось. Получилось на карточке Radeon RX 5500M («Navi 14»). Увы, не через Mesa — ей для работы на новых радеонах не хватает реализации libclc — не хватает файла /​usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc и подобных.
+
Бонусом завёлся и Radeon ProRender, но на конкретном демо-файле толку от него оказалось мало.
  
Но, по крайней мере, получилось без полного перехода на закрытый драйвер, то есть с использованием открытого модуля ядра.
+
Итак, что я сделал…
  
В общих чертах — достаточно скачать драйвер AMDGPU-Pro, извлечь пакеты и поставить всё, что относится к OpenCL, не ставя всё остальное.
+
==== Сначала протестировал Mesa + libclc ====
  
Для AMDGPU-Pro 20.40 это:
+
Чтобы Blender вообще увидел Mesa-девайс, нужно его запускать с <tt>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 это:
+
Далее обнаруживается, что 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 (пустые метапакеты)
+
* 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/ файл с содержимым
+
И, наконец, выясняется, что на новые радеоны нет libclc, что выражается отсутствием файла <tt>/​usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc</tt>. Я попробовал вместо него подложить другой, от tahiti, ничем хорошим это не увенчалось. Рендер запустился, но рендерил белый шум вместо картинки. На встроенный Renoir, кстати, тоже libclc нет, там нужен файл <tt>gfx902-amdgcn-mesa-mesa3d.bc</tt>.
<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.
+
На этом эксперименты с Mesa завершились.
  
Ещё понадобилось сделать <tt>adduser свой_юзер render</tt>, чтобы был доступ к устройству /dev/kfd.
+
==== Потом решил попробовать закрытый драйвер ====
  
Далее ставим clinfo, запускаем его в консоли и видим вроде-как рабочий OpenCL.
+
К счастью, выяснилось, что у AMD всё достаточно хорошо и ядерная часть закрытого и открытого драйверов совпадает, поэтому OpenCL-ные драйвера можно пробовать запускать, не ставя никаких дополнительных модулей ядра и не переходя на закрытый драйвер для графики
  
Как monkey-патчить зависимости Debian-пакета:
+
Скачал драйвер AMDGPU-Pro 20.40 и поставил пакеты opencl-amdgpu-pro-comgr, opencl-amdgpu-pro-icd, ocl-icd-libopencl1-amdgpu-pro, ну и почти пустые amdgpu-core и amdgpu-pro-core, требующиеся по зависимостям.
<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!
+
Всё брал для Ubuntu 20 — вообще я юзаю Debian Sid, но он достаточно похож на убунту, чтобы всё завелось.
  
Я поставил сборку Blender 2.93 с официального сайта и Radeon ProRender 3.1.0 «для Ubuntu 20», скачав его и установив через Blender Addons -> Install… попробовал включить его и увидел какой-то мутный питоновый бэктрейс.
+
Проверил, как рекомендовали в интернете, файлик /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.
  
Оказывается, проблема в том, что в 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, и сделать
+
На этом этапе у меня уже завёлся OpenCL 2.0 (появились девайсы в clinfo) и Blender их увидел. И даже тестовая сценка, которая валялась где-то под рукой (не с сайта блендера), успешно отрендерилась.
<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 с драйвером 20.50 завёлся, хотя с 20.40 падал (например, на демо-файле Barcelona Pabellon).
+
Далее я скачал с сайта блендера Barcelona Pavillion и решил проверить рендер на нём. Увы, нет — на нём рендер стал падать.
  
Что по производительности Cycles: на 20.40 рендер на чистом GPU (Radeon RX 5500M) раза в 2 медленнее чистого CPU (Ryzen 4800 HS). На 20.50 гораздо лучше и скорость рендера на GPU и CPU примерно одинаковая, то есть на GPU+CPU вместе получается в 2 раза быстрее, чем просто на CPU.
+
==== Далее решил попробовать версию закрытого драйвера 20.50, ибо 20.40 — явно не последняя ====
  
То есть, та самая Barcelona Pabellon на голом GPU рендерится примерно 16 минут, на CPU+GPU — примерно 8 минут, что даже не так уж и плохо по сравнению с нивидиями: [https://www.phoronix.com/scan.php?page=article&item=blender-281-optix&num=3 вот бенчи на похорониксе]. Как я понимаю, там в CUDA-бенчах CPU тоже участвовал, CPU был аж Core i9-9900KS, и, например, результат десктопной GTX 1660 составил только 628 секунд против наших ~500. Хотя RTX с OptiX, конечно, всё равно гораздо быстрее.
+
…и обнаружил, что в нём изменился состав пакетов.
 +
 
 +
Но процедуре установки «только 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. Поэтому пришлось сделать <tt>adduser me render</tt> и добавить себя в группу, после чего перелогиниться.
 +
 
 +
clinfo снова показал девайсы, а Blender стал успешно рендерить Barcelona Pavillion… но стал зависать на рендере тестовой сценки, которая на 20.40 успешно рендерилась.
 +
 
 +
Здесь я уже замерил рендер Barcelona Pavillion-а — получилось 16:40 на GPU и примерно 8:50 на CPU+GPU (CPU Ryzen 4800 HS). Не очень хороший результат, прямо скажем.
 +
 
 +
==== Решил попробовать снова обновиться ====
 +
 
 +
Поискал получше и обнаружил, что последняя версия драйвера на самом деле 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 стоит как весь этот ноутбук, так что по Сеньке шапка.
 +
 
 +
Вдогонку:
 +
* Classroom (GPU only) — 5:04, для сравнения GTX 1660 Super — 5:26
 +
* BMW27 (GPU only) — тут похуже, 2:21, для сравнения GTX 1660 Super — 1:24, GTX 1650 — 2:24
 +
 
 +
==== Отдельно расскажу про 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, и сделать <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 таки завёлся.
 +
 
 +
А что же умеет этот 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 }}

Текущая версия на 00:53, 10 июня 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 (CPU Ryzen 4800 HS). Не очень хороший результат, прямо скажем.

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

Поискал получше и обнаружил, что последняя версия драйвера на самом деле 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 стоит как весь этот ноутбук, так что по Сеньке шапка.

Вдогонку:

  • Classroom (GPU only) — 5:04, для сравнения GTX 1660 Super — 5:26
  • BMW27 (GPU only) — тут похуже, 2:21, для сравнения GTX 1660 Super — 1:24, GTX 1650 — 2:24

Отдельно расскажу про 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 только через отдельную настройку в панельке. Но работает вполне адекватно.