Não tenho nenhum sentimento forte sobre CUDA vs. OpenCL; presumivelmente, o OpenCL é o futuro de longo prazo, apenas por ser um padrão aberto.
Mas as placas atuais NVIDIA vs ATI para GPGPU (não desempenho gráfico, mas GPGPU), sobre as quais tenho uma opinião forte. E para levar a isso, vou apontar que na atual lista dos 500 maiores clusters , a NVIDIA lidera os sistemas AMD 4 a 1 e, em gpgpu.org , os resultados da pesquisa (artigos, links para recursos online, etc) para a NVIDIA superam os resultados para AMD 6: 1.
Grande parte dessa diferença está na quantidade de informações online disponíveis. Confira NVIDIA CUDA Zone versus GPGPU Developer Central da AMD . A quantidade de material disponível para desenvolvedores que estão iniciando não chega nem perto de ser comparada. No site da NVIDIA você encontrará toneladas de artigos - e código contribuído - de pessoas que provavelmente estão trabalhando em problemas como o seu. Você encontrará toneladas de aulas online, da NVIDIA e de outros lugares, e documentos muito úteis como o guia de melhores práticas para desenvolvedores, etc. A disponibilidade de ferramentas de desenvolvimento gratuitas - o profiler, o cuda-gdb, etc - inclina esmagadoramente o caminho da NVIDIA.
(Editor: as informações neste parágrafo não são mais precisas.) E algumas das diferenças também estão no hardware. As placas AMD têm especificações melhores em termos de flops de pico, mas para conseguir uma fração significativa disso, você não só precisa dividir o problema em muitos processadores de fluxo completamente independentes, como cada item de trabalho também precisa ser vetorizado. Dado que o código de GPGPUing é difícil o suficiente, essa complexidade arquitetônica extra é suficiente para fazer ou quebrar alguns projetos.
E o resultado de tudo isso é que a comunidade de usuários NVIDIA continua a crescer. Dos três ou quatro grupos que conheço pensando em construir clusters de GPU, nenhum deles está considerando seriamente as placas AMD. E isso significará ainda mais grupos escrevendo artigos, contribuindo com código, etc. do lado da NVIDIA.
Não sou um shill da NVIDIA; Gostaria que não fosse assim e que houvesse duas (ou mais!) Plataformas GPGPU igualmente atraentes. A competição é boa. Talvez a AMD intensifique seu jogo muito em breve - e os próximos produtos de fusão parecem muito atraentes. Mas, ao dar conselhos a alguém sobre quais cartões comprar hoje e onde investir seu tempo agora, não posso, em sã consciência, dizer que os dois ambientes de desenvolvimento são igualmente bons.
Editado para adicionar : Eu acho que o acima é um pouco elíptico em termos de resposta à pergunta original, então deixe-me torná-lo um pouco mais explícito. O desempenho que você pode obter de uma peça de hardware é, em um mundo ideal com tempo infinito disponível, dependente apenas do hardware subjacente e dos recursos da linguagem de programação; mas, na realidade, a quantidade de desempenho que você pode obter em uma quantidade fixa de tempo investido também depende fortemente de ferramentas de desenvolvimento, bases de código de comunidade existentes (por exemplo, bibliotecas disponíveis publicamente, etc). Todas essas considerações apontam fortemente para a NVIDIA.
(Editor: as informações neste parágrafo não são mais precisas.) Em termos de hardware, o requisito de vetorização em unidades SIMD nos cartões AMD também torna o desempenho do papel ainda mais difícil do que com o hardware NVIDIA.