dispositivos amd/ati
Embora os dispositivos NVIDIA e a maioria dos dispositivos AMD/ATI modernos geralmente rodem de imediato sem necessidade de configuração adicional, há mais a fazer para as placas de vídeo AMD/ATI mais antigas, ou seja, aquelas anteriores à série HD7xxx. Isso começa com o fato de que esses dispositivos reportarão apenas parte da memória total da GPU para o darktable. Para um dispositivo de 1 GB, isso normalmente equivale a apenas 512 MB, um valor que o darktable em sua configuração padrão recusará como insuficiente. Como consequência, o dispositivo não será usado.
Na web você pode encontrar uma dica para definir a variável de ambiente GPU_MAX_HEAP_SIZE
para 100 se isso acontecer. Na verdade, isso fará com que o controlador AMD/ATI informe a memória completa instalada para o darktable. No entanto, existe um problema. Em muitas (na maioria?) placas, isso fará com que os buffers sejam alocados no computador (host) e não na placa de vídeo! Nesse caso, todos os acessos à memória precisarão passar pelo lento barramento PCIe. Isso custará um fator de 10x ou mais em desempenho e tornará o OpenCL inútil para você, especialmente ao exportar arquivos.
Outra variável de ambiente que muda o comportamento do controlador é GPU_MAX_ALLOC_PERCENT
. Você pode definir isso como 100 para permitir alocações de memória de até 1 GB em sua placa AMD/ATI. O problema é que isso tende a fazer com que o darktable trave mais cedo ou mais tarde.
Portanto, nossa recomendação é deixar essas configurações intactas. Frequentemente, sua placa será reconhecida com 512 MB de memória e um tamanho máximo de alocação de 128 MB. Existem três parâmetros de configuração que você pode definir em $HOME/.config/darktable/darktablerc
para fazer as coisas funcionarem. Aqui estão os detalhes:
- opencl_memory_requirement
- Defina este parâmetro como 500 para que o darktable aceite sua memória gráfica de 512 MB como sendo suficiente.
- opencl_memory_headroom
- Este parâmetro controla a quantidade de memória gráfica (daquela relatada por sua placa) que o darktable deve deixar intocada para uso do controlador e do monitor. Já que para dispositivos AMD/ATI podemos obter apenas metade da RAM disponível de qualquer maneira, é seguro definir isso como zero para que todos os 512 MB possam ser usados pelo darktable.
- opencl_avoid_atomics
- As operações atômicas no OpenCL são um método especial de sincronização de dados. Elas são usados apenas em alguns kernels. Infelizmente, alguns (a maioria?) dos dispositivos AMD/ATI são extremamente lentos no processamento atômico. É melhor processar os módulos afetados na CPU em vez de aceitar uma codificação de GPU muito lenta. Portanto, defina este parâmetro como TRUE se você experimentar o processamento lento de módulos como sombras e realces, monocromático, contraste local ou mapa de tons global (obsoleto) ou se você obtiver travamentos intermitentes do sistema.
Essas recomendações não se aplicam à série Radeon HD7xxx mais recente com arquitetura GCN. Além de serem muito rápidos em termos de computação de GPU, eles normalmente funcionam diretamente sem necessidade de ajustes adicionais, embora você possa considerar tentar algumas das opções de otimização de desempenho descritas na seção a seguir.