Como alguns sabem, OpenCL é um padrão de programação de GPU computing (GPGPU) desenvolvido inicialmente pela apple e agora é open source.
A ATI tinha seu projeto chamado Close to Metal (CTM) para programar os shaders de suas placas, mas que não caiu no agrado dos programadores por ser um tanto mais complexo que o seu concorrente CUDA da Nvidia.
O problema principal era que as maiores fabricantes de placas gráficas estavam produzindo linguagens diferentes para o mesmo propósito.
Acredito eu que a ATI deu o braço a torcer e adotou o OpenCL como seu padrão para esse tipo de programação de alto desempenho e com isso deu deu um grande passo para a unificação do OpenCL uma vez que agora a Nvidia também está usando OpenCL junto com o CUDA.
Esses dias, acabei descobrindo que o novo driver beta da Nvidia consegue rodar coisas programadas com OpenCL , contudo a Nvidia ainda não lançou nenhuma IDE, ou SDK para OpenCL, eles possuem uma idéia promissora com o Nexus, que vale a pena conferir, mas ainda não possuem algo palpável ainda com OpenCL.
A ATI desenvolveu um SDK que compila em OpenCL, o Stream SDK e exitem alguns usuários Nvidia utilizando-o para programar em OpenCL. Espero tambem ser um desses usuários…
Agora me pergunto: OpenCL, CUDA ou CTM? Algumas pessoas na ultima “Nvidia’s GPU Developer’s Conference” afirmaram que o desempenho do mesmo algoritmo rodado em OpenCL era muito mais lento do que o rodado com CUDA, mas convenhamos, o driver para OpenCL na Nvidia teve sua primeira implementação agora e foi em um driver beta… Imagino que o desempenho sempre fique menor no OpenCL, por não utilizar instruções próprias e especificas do processador da Nvidia, mas acredito que esse hiato venha a diminuir com a melhoria do driver.
Na minha humilde opinião, acredito que o mais promissor seria aprender OpenCL ao invés de CUDA.
Busquem e testem por si mesmos:
Primeiro driver beta da Nvidia que suporta OpenCL, Versão 195.39: http://www.nvidia.com/Download/Find.aspx?lang=en-us
Nexus da Nvidia: http://developer.nvidia.com/object/nexus.html:
Stream SDK da ATI: http://developer.amd.com/GPU/ATISTREAMSDKBETAPROGRAM/Pages/default.aspx
Espero que tenham gostado e eu tenha atiçado a curisidade.
Comentem!

