января 16, 2019

darktable 2.4 > Специальные темы > Darktable и OpenCL > Возможные проблемы и решения

ПРЕД.

10.2. Darktable и OpenCL

10.2.5. Возможные проблемы и решения

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 и нашей интерпретацией стандарта. В этом случае посетите нас в IRC в #darktable на FreeNode или в списке рассылки разработчиков на darktable-dev@lists.darktable.org и сообщите о проблеме. Скорее всего, мы можем вам помочь.
Также существует несколько реализаций OpenCL на центральных процессорах. Они поставляются в качестве драйверов, предоставляемых INTEL или AMD. Мы заметили, что они не дают нам никакого увеличения скорости. Поэтому мы просто отбрасываем эти устройства по умолчанию. Такое поведение можно изменить, установив для параметра конфигурации opencl_use_cpu_devices значение TRUE.

Комментариев нет:

Отправить комментарий