opencl

os bastidores

O processamento de imagens em alta resolução é uma tarefa exigente que requer um computador moderno. Em termos de memória e potência de CPU, obter o melhor de uma imagem típica de 15, 20 ou 25 megapixels pode levar rapidamente o seu computador ao limite.

Os requisitos do Ansel não são exceção. Todos os cálculos são realizados com números de ponto flutuante de 4 x 32 bits. Isso é mais lento do que a álgebra de números inteiros “normal” de 8 ou 16 bits, mas elimina todos os problemas de quebras tonais ou de perda de informação.

como funciona o opencl

Como você pode imaginar, a arquitetura de hardware das GPUs pode variar significativamente. Existem diferentes fabricantes e até mesmo diferentes gerações de GPUs do mesmo fabricante que podem não ser comparáveis. Ao mesmo tempo, os fabricantes de GPU normalmente não divulgam todos os detalhes de hardware de seus produtos ao público. Uma das consequências disso é a necessidade de usar drivers proprietários no GNU/Linux, se você quiser tirar o máximo proveito de sua placa de vídeo.

ativar o opencl no Ansel

O uso do OpenCL no Ansel requer que seu PC esteja equipado com uma placa gráfica adequada e que tenha as bibliotecas necessárias instaladas. A maioria das placas gráficas modernas da NVIDIA e AMD vem com suporte total para OpenCL. O compilador OpenCL normalmente é distribuído como parte do controlador gráfico proprietário e é usado como uma biblioteca dinâmica chamada libOpenCL.so. Esta biblioteca deve estar em uma pasta onde possa ser encontrada pelo vinculador dinâmico do seu sistema.

configurar o opencl

A enorme diversidade de sistemas e as diferenças marcantes entre os fornecedores do OpenCL e as versões do controlador tornam impossível dar uma visão geral abrangente de como configurar o OpenCL. Podemos dar apenas um exemplo, neste caso, para a versão 331.89 do driver NVIDIA no Ubuntu 14.04. Esperamos que isso sirva como uma introdução básica e ajude você a resolver quaisquer problemas específicos de sua configuração.

O princípio do fluxo da função OpenCL se dá dessa forma:

possíveis problemas e soluções

O Ansel detectará erros de tempo de execução OpenCL automaticamente. Ao detectar um erro, ele irá reprocessar tudo na CPU. Embora isso retarde o processamento, não deve afetar o resultado final.

Podem haver vários motivos para o OpenCL falhar durante a fase de inicialização. O OpenCL depende dos requisitos de hardware e da presença de certos controladores e bibliotecas. Além disso, todos eles devem se ajustar em termos de fabricante, modelo e número de revisão. Se algo não estiver correto (por exemplo, seu controlador gráfico – carregado como um módulo do kernel – não corresponde à versão de seu libOpenCL.so), o suporte a OpenCL provavelmente não estará disponível.

perfil de agendamento de tarefas

Ansel can use the CPU and one or several OpenCL capable GPUs. Depending on the relative performance of these devices, users can choose among certain scheduling profiles to optimize performance. This is achieved by setting the configuration parameter Preferences > Processing > CPU, GPU, Memory > OpenCL scheduling profile, which offers the following choices:

default
If an OpenCL-capable GPU is found Ansel uses it for processing the center image view while the navigation preview window is processed on the CPU in parallel. This is the preferred setting for systems with a reasonably fast CPU and a moderately fast GPU. The exact allocation of devices to the various pixelpipe types can be finetuned with the “opencl_device_priority” configuration parameter (see multiple devices).
GPU muito rápida
Com este perfil de agendamento, o Ansel processa a visualização da imagem central e a janela de visualização na GPU sequencialmente. Esta é a configuração preferida para sistemas com uma GPU que supera com folga o desempenho da CPU.
múltiplas GPUs
Essa configuração aborda sistemas com várias GPUs cujos desempenhos relativos não diferem significativamente. Sempre que um trabalho de processamento é iniciado, o Ansel usa qualquer GPU ociosa, mas não a CPU. Os usuários de sistemas com uma variedade de GPUs precisarão de melhor controle sobre sua prioridade relativa. Será melhor selecionar o perfil padrão e ajustar seu sistema com o parâmetro de configuração opencl_device_priority (veja múltiplos dispositivos).

On first start-up or after any detected change in the GPU configuration of your system Ansel tries to identify the best suited profile for you. You can change it at any time in Preferences > Processing > CPU, GPU, Memory.

múltiplos dispositivos

O agendamento de dispositivos OpenCL pode ser otimizado na maioria dos sistemas usando as configurações de “perfil de agendamento do OpenCL”. No entanto, se o seu sistema estiver equipado com mais de uma GPU, você pode querer definir a prioridade relativa do dispositivo manualmente. Para fazer isso, você precisa selecionar o perfil de agendamento “padrão” e alterar as configurações no parâmetro de configuração “opencl_device_priority”.

É importante entender como o Ansel usa dispositivos OpenCL. Cada sequência de processamento de uma imagem – para converter uma entrada em saída final usando uma pilha de histórico – é executada em um pixelpipe. Existem quatro tipos diferentes de pixelpipe no Ansel. Um tipo é responsável por processar a visualização da imagem central (ou visualização completa) no modo de sala escura, outro pixelpipe processa a imagem de visualização (janela de navegação). Pode haver um de cada um desses dois pixelpipes em execução a qualquer momento, com os pixelpipes completos e de visualização executados em paralelo. Além disso, pode haver vários pixelpipes paralelos realizando exportações de arquivos, bem como vários pixelpipes paralelos gerando miniaturas. Se um dispositivo OpenCL estiver disponível, o Ansel dinamicamente o aloca para um pixelpipe específico para uma execução e o libera depois.

opencl ainda não funciona para mim

As has been mentioned, OpenCL systems come with a huge variety of setups: different GPU manufacturers and models, varying amounts of GPU memory, different drivers, different distributions etc..

Muitos dos problemas só aparecerão com combinações muito específicas desses fatores. Como os desenvolvedores do Ansel só têm acesso a uma pequena fração dessas variações, entenda que talvez não possamos resolver seu problema específico. Não há muito o que possamos fazer se não formos capazes de reproduzir o seu problema.

Search

You can also ask Chantal, the AI search engine.