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.
Felizmente, um consórcio da indústria liderado pelo Khronos Group desenvolveu uma interface aberta e padronizada chamada OpenCL, que permite que sua GPU seja usada como um dispositivo de processamento numérico. O OpenCL oferece uma linguagem de programação semelhante ao C99-like com um forte foco na computação paralela. Um aplicativo que deseja usar o OpenCL precisará do código-fonte do OpenCL que será entregue a um compilador específico de hardware em tempo de execução. Desta forma, os aplicativos podem usar OpenCL em diferentes arquiteturas de GPU (mesmo que paralelamente). Todos os “segredos” de hardware estão ocultos neste compilador e normalmente não são visíveis para o usuário (ou aplicativo). O código OpenCL compilado é carregado em sua GPU e – com certas chamadas de API – estará pronto para realizar cálculos para você.