Можливі проблеми та рішення
Darktable автоматично виявляє помилки часу виконання OpenCL. Виявивши помилку, Darktable переробить все на центральному процесорі. Хоча це буде сповільнювати обробку, це не повинно впливати на кінцевий результат.
Можуть бути різні причини того, чому OpenCL може зазнати невдачі на етапі ініціалізації. OpenCL залежить від вимог до обладнання та від наявності певних драйверів та бібліотек. На додаток, все це повинно відповідати виробнику, моделі та номеру редакції. Якщо щось не підходить (наприклад, ваш графічний драйвер – завантажений як модуль ядра – не відповідає версії вашого libOpenCL.so
), підтримка OpenCL, швидше за все, буде недоступна.
У цьому випадку найкраще запустити Darktable з консолі з darktable -d opencl
.
Це дасть додаткові результати налагодження щодо ініціалізації та використання OpenCL. По-перше, якщо ви знайдете рядок, який починається з [opencl_init] FINALLY ...
, це повинно сказати вам, чи доступна підтримка OpenCL для вас чи ні. Якщо ініціалізація не вдалася, перегляньте наведені вище повідомлення, щоб знайти щось, що читається як could not be detected
(“не вдалося виявити”) або could not be created
(“не вдалося створити”). Перевірте, чи є підказка про те, де це не вдалося.
Ось кілька випадків, які спостерігались у минулому:
-
Darktable стверджує, що не виявлено графічної карти з підтримкою OpenCL, або що доступна пам’ять на графічній карті занадто мала, а тому пристрій відкидається. У цьому випадку вам може знадобитися придбати нову карту, якщо ви дійсно хочете підтримку OpenCL.
-
Darktable знаходить ваш
libOpenCL.so
, але потім повідомляє вам, що не зміг отримати платформу. У цьому випадку драйвери NVIDIA часто дають код помилки -1001. Це відбувається тому, щоlibOpenCL.so
– це лише бібліотека обгортки. Для реальної роботи потрібно завантажити додаткові бібліотеки для конкретного виробника. Це чомусь не вдалося. У вашій системі існує структура файлів в/etc/OpenCL
, до якоїlibOpenCL.so
звертається для пошуку цих бібліотек. Подивіться, чи не знайдете там чогось підозрілого, і спробуйте це виправити. Часто необхідні бібліотеки не можуть бути знайдені динамічним завантажувачем вашої системи. Надання повних шляхів до цих файлів може допомогти. -
Darktable стверджує, що неможливо створити контекст. Це часто вказує на невідповідність версії між завантаженим графічним драйвером та libOpenCL. Перевірте, чи є у вас застарілі модулі ядра або графічні бібліотеки зі старого встановлення, і вживайте відповідних заходів. Якщо ви сумніваєтеся, виконайте чисте перевстановлення вашого графічного драйвера. Іноді відразу після оновлення драйвера завантажений драйвер ядра не відповідає новоствореним бібліотекам. У цьому випадку перезавантажте систему, перш ніж повторити спробу.
-
Darktable аварійно завершує роботи під час запуску. Це може статися, якщо налаштування OpenCL повністю пошкоджено або драйвер/бібліотека містить серйозну помилку. Якщо ви не можете це виправити, ви все ще можете використовувати Darktable з опцією
--disable-opencl
, яка пропустить весь крок ініціалізації OpenCL. -
Darktable не вдається скомпілювати джерельні файли OpenCL під час виконання. У цьому випадку ви побачите ряд повідомлень про помилки, схожих на типові помилки компілятора. Це може свідчити про несумісність між вашою реалізацією OpenCL та інтерпретацією стандарту в Darktable. У такому разі, будь ласка, підніміть проблему (issue) на GitHub і ми постараємось допомогти. Будь ласка, повідомте також, якщо ви бачите суттєві відмінності між обробкою зображення центральним процесором та графічним процесором.
-
you have installed a number of OpenCL drivers meant for the same hardware, this will always lead to severe problems and must strictly be avoided. On Windows systems you often have the
Microsoft OpenCLon12
driver installed via theOpenCL Compatibility Pack
. Inspect and check at preferences > processing > OpenCL. -
Також існує декілька реалізацій OpenCL емульованих на центральному процесорі, що поставляються як драйвери від INTEL або AMD. Ми помітили, що вони не забезпечують збільшення швидкості порівняно з кодом для центрального процесора, оптимізованим компілятором. Тому Darktable за замовчуванням просто відкидає ці драйвери / пристрої.