налаштування opencl
Величезна різноманітність систем та помітні відмінності між постачальниками OpenCL та версіями драйверів унеможливлює повний огляд того, як налаштувати OpenCL. Ми можемо навести лише приклад, у цьому випадку для драйвера NVIDIA версії 331.89 на Ubuntu 14.04. Ми сподіваємось, що це послужить базовим введенням і допоможе вам вирішити будь-які проблеми, що стосуються вашого налаштування.
Принцип потоку функцій 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.331.89
). -
libnvidia-opencl.so.1
потребує комунікації з модулями ядраnvidia
таnvidia_uvm
через спеціальні файли пристроїв/dev/nvidia0
,/dev/nvidiactl
та/dev/nvidia-uvm
.
Під час запуску системи потрібно створити необхідні спеціальні файли пристрою (/dev/nvidia*
). Якщо цього не відбувається у вашій системі за замовчуванням, найпростіший спосіб налаштувати їх і бути впевненим, що всі модулі завантажені – це встановити пакет nvidia-modprobe
.
Обліковий запис користувача, якому потрібно використовувати OpenCL із darktable, повинен мати доступ для читання/запису до спеціальних файлів пристрою NVIDIA. У деяких системах ці файли за замовчуванням надають доступ до читання та запису всім, що дозволяє уникнути проблем з дозволами, але може бути спірним з точки зору безпеки системи. Інші системи обмежують доступ, надаючи його лише групі користувачів, наприклад “video”. У цьому випадку ваш обліковий запис користувача повинен бути членом цієї групи.
Підводячи підсумок, пакетами, які потрібно було встановити у цьому конкретному випадку, були:
nvidia-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-331-dev (331.89-0ubuntu1~xedgers14.04.2)
nvidia-331-uvm (331.89-0ubuntu1~xedgers14.04.2)
nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-modprobe (340.24-1)
nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)
nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-settings (340.24-0ubuntu1~xedgers14.04.1)
nvidia-settings-304 (340.24-0ubuntu1~xedgers14.04.1)
nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)
nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)
opencl-headers (1.2-2013.10.23-1)
Список модулів ядра, пов’язаних з NVIDIA, як повідомляє lsmod:
nvidia
nvidia_uvm
Список спеціальних файлів пристроїв, пов’язаних з NVIDIA (ls -l /dev/nvidia*
), має виглядати так:
crw-rw-rw- 1 root root 195, 0 Jul 28 21:13 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Jul 28 21:13 /dev/nvidiactl
crw-rw-rw- 1 root root 250, 0 Jul 28 21:13 /dev/nvidia-uvm
Пам’ятайте, що major/minor номери пристроїв (наприклад, 250/0
для /dev/nvidia-uvm
в цьому прикладі) можуть відрізнятися залежно від вашої системи.