пристрої 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, щоб запустити роботу. Ось подробиці:

opencl_memory_requirement
Встановіть для цього параметра значення 500, щоб darktable приймав вашу графічну пам’ять на 512МБ як достатню пам’ять.
opencl_memory_headroom
Цей параметр визначає, скільки графічної пам’яті (від тієї, що повідомляється вашою картою), darktable має залишати недоторканою для використання драйвером та дисплеєм. Оскільки для пристроїв AMD/ATI в будь-якому випадку ми можемо отримати лише половину доступної оперативної пам’яті, можна безпечно встановити цей параметр в нуль, щоб усі 512МБ могли використовуватися darktable.
opencl_avoid_atomics
Атомні операції в OpenCL – це особливий метод синхронізації даних. Вони використовуються лише в декількох ядрах. На жаль, деякі (більшість?) пристрої AMD/ATI надзвичайно повільно обробляють атомні операції. Краще обробити постраждалі модулі на центральному процесорі, а не приймати надзвичайно повільний шлях виконання графічного процесора. Тому встановіть для цього параметра значення TRUE, якщо у вас повільна обробка таких модулів, як тіні та світлі тони, монохром, локальний контраст або глобальне тональне відображення (застарілий) або якщо у вас періодично зависає система.

Ці рекомендації не стосуються новішої серії Radeon HD7xxx з архітектурою GCN. Окрім того, що вони дуже швидкі з точки зору обчислень графічного процесора, вони зазвичай працюють “з коробки”, хоча ви можете спробувати деякі варіанти оптимізації продуктивності, описані в наступному розділі.

Translations