setting up OpenCL

Величезна різноманітність систем та помітні відмінності між постачальниками OpenCL та версіями драйверів унеможливлює повний огляд того, як налаштувати OpenCL. Ми можемо навести лише приклад, у цьому випадку для драйвера NVIDIA версії 542.29.06 на Fedora 39. Ми сподіваємось, що це послужить базовим введенням і допоможе вам вирішити будь-які проблеми, що стосуються вашого налаштування.

Принцип потоку функцій OpenCL такий:

Darktable > libOpenCL.so > libnvidia-opencl.so.1 > модуль/модулі драйвера ядра > GPU

  • Darktable динамічно завантажує libOpenCL.so – системну бібліотеку, яка повинна бути доступна для динамічного завантажувача системи (ld.so).

  • libOpenCL.so читає специфічний для постачальника інформаційний файл (наприклад, /etc/OpenCL/vendors/nvidia.icd), щоб знайти бібліотеку, що містить реалізацію OpenCL для конкретного постачальника.

  • Реалізація OpenCL поставляється у вигляді бібліотеки libnvidia-opencl.so.1 (що в нашому випадку є символічним посиланням на libnvidia-opencl.so.545.29.06).

  • libnvidia-opencl.so.1 потребує комунікації з модулями ядра nvidia та nvidia_uvm через спеціальні файли пристроїв /dev/nvidia0, /dev/nvidiactl та /dev/nvidia-uvm.

Під час запуску системи потрібно створити необхідні спеціальні файли пристрою (/dev/nvidia*). Якщо цього не відбувається у вашій системі за замовчуванням, найпростіший спосіб налаштувати їх і бути впевненим, що всі модулі завантажені – це встановити пакет nvidia-modprobe.

Обліковий запис користувача, якому потрібно використовувати OpenCL із Darktable, повинен мати доступ для читання/запису до спеціальних файлів пристрою NVIDIA. У деяких системах ці файли за замовчуванням надають доступ до читання та запису всім, що дозволяє уникнути проблем з дозволами, але може бути спірним з точки зору безпеки системи. Інші системи обмежують доступ, надаючи його лише групі користувачів, наприклад “video”. У цьому випадку ваш обліковий запис користувача повинен бути членом цієї групи.

Підводячи підсумок, пакетами, які потрібно було встановити у цьому конкретному випадку, були:

xorg-x11-drv-nvidia
xorg-x11-drv-nvidia-libs
xorg-x11-drv-nvidia-cuda
xorg-x11-drv-nvidia-cuda-libs
xorg-x11-drv-nvidia-power
akmod-nvidia
nvidia-settings
nvidia-modprobe
nvidia-persistenced
opencl-headers
opencl-filesystem
ocl-icd
ocd-icd-devel

On Linux systems you might also want the clinfo package giving you a lot of information about your OpenCL system and settings.

translations