января 17, 2019

darktable 2.4 > Специальные темы > Darktable и OpenCL > Настройка OpenCL для устройств AMD/ATI

ПРЕД.

10.2. Darktable и OpenCL

10.2.6. Настройка OpenCL для устройств AMD/ATI

В то время как устройства NVIDIA и большинство современных устройств AMD/ATI будут чаще всего работать из коробки, для более старых графических карт AMD/ATI (старше, чем HD7xxx) это не всегда верно. Начиная с того факта, что эти устройства предоставляют darktable только часть графической памяти. Для устройства с память в 1ГБ это обычно составляет 512МБ, при данном значении darktable в стандартной конфигурации откажется работать, поскольку для его задач данного объёма не достаточно. Как результат, устройство не будет использоваться.

В Интернете вы можете найти подсказку, которая укажет, что в этом случае необходимо установить значение переменной среды GPU_MAX_HEAP_SIZE на 100. В самом деле, это приведет к тому, что драйвер AMD/ATI сообщит darktable о наличии всей установленной памяти. Однако есть проблема. На многих (большинстве?) видеокартах это приведет к тому, что буферы будут выделены в оперативной памяти, а не на видеокарте! В этом случае все обращения к памяти должны будут проходить через медленную шину PCIe. Это будет стоить вам уменьшения производительности в 10 или более раз и сделает OpenCL бесполезным для вас, особенно при экспорте файлов.

Существует другая переменная среды, которая меняет поведение драйвера, GPU_MAX_ALLOC_PERCENT. Вы можете установить её значение в 100, чтобы обеспечить возможность распределения памяти в 1ГБ на вашей карте AMD/ATI. Проблема заключается в том, что и это рано или поздно приводит к сбою в работе darktable.

Мы рекомендуем оставить эти настройки нетронутыми. Часто на вашей карте будет распознано 512МБ памяти с максимальным размером выделения 128МБ. Есть три параметра конфигурации, которые вы можете задать в файле $HOME/.config/darktable/darktablerc (%homepath%\\AppData\\Local\\darktable\\darktablerc для ОС Windows), чтобы все было в порядке. Подробности ниже:

opencl_memory_requirement
Установите значение этого параметра на 500, чтобы darktable принял объём вашей графической памяти в 512 МБ как достаточный.

opencl_memory_headroom
Этот параметр определяет, сколько графической памяти (из сообщенного видеокартой) darktable должен оставить для использования драйвером и дисплеем. Что касается устройств AMD/ATI, то мы знаем, что видеокарта сообщила нам только о половине видеопамяти (другая половина останется для драйвера и дисплея), тем самым мы можем отдать всю эту память darktable, а значит, будет безопасным установить его на ноль. Таким образом, все 512 МБ могут использоваться darktable.

opencl_avoid_atomics
Атомарные операции в OpenCL - особый способ синхронизации данных. Они используются только в многоядерных графических процессорах. К сожалению, некоторые (большинство?) устройств AMD/ATI чрезвычайно медленны в обработке атомарных операций. Некоторые модули лучше обрабатывать на центральном процессоре, а не передавать ультра-медленный кодовый конвейер GPU. Установите этот параметр в значение TRUE, если вы испытываете медленную обработку таких модулей, как "Тени и света", "Преобразование в ч/б", "Локальный контраст" или "Глобальное отображение тонов", или если система периодически подвисает.

Эти рекомендации не относятся к более ранним сериям Radeon HD7xxx с архитектурой GCN. Помимо того, что они очень быстрые с точки зрения графических процессоров, они обычно работают из коробки. Вы можете только попробовать изменить некоторые параметры для оптимизации производительности, описанные в следующем разделе.

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

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