можливі проблеми та рішення

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 і ми постараємось допомогти. Будь ласка, повідомте також, якщо ви бачите суттєві відмінності між обробкою зображення центральним процесором та графічним процесором.

Також існує декілька реалізацій OpenCL на центральному процесорі, що поставляються як драйвери від INTEL або AMD. Ми помітили, що вони не забезпечують збільшення швидкості порівняно з нашим оптимізованим вручну кодом для центрального процесора. Тому darktable просто відкидає ці пристрої за замовчуванням. Цю поведінку можна змінити, встановивши для змінної конфігурації opencl_use_cpu_devices$HOME/.config/darktablerc) значення TRUE.

Translations