Je n'ai pas de sentiments forts à propos de CUDA vs OpenCL; vraisemblablement OpenCL est l'avenir à long terme, juste à force d'être un standard ouvert.
Mais les cartes NVIDIA vs ATI actuelles pour GPGPU (pas les performances graphiques, mais GPGPU), sur lesquelles j'ai une forte opinion. Et pour y conduire, je ferai remarquer que sur la liste actuelle des 500 grands clusters , NVIDIA mène les systèmes AMD 4 à 1, et sur gpgpu.org , les résultats de recherche (articles, liens vers des ressources en ligne, etc.) pour NVIDIA sont plus nombreux que les résultats pour AMD 6: 1.
Une grande partie de cette différence est la quantité d'informations en ligne disponibles. Découvrez la zone NVIDIA CUDA par rapport à GPGPU Developer Central d' AMD . La quantité de choses là pour les développeurs qui démarrent n'est même pas proche de la comparaison. Sur le site de NVIDIA, vous trouverez des tonnes de documents - et de code contributif - de personnes travaillant probablement sur des problèmes comme le vôtre. Vous trouverez des tonnes de cours en ligne, de NVIDIA et d'ailleurs, et des documents très utiles comme le guide des meilleures pratiques des développeurs, etc.
(Editeur: les informations de ce paragraphe ne sont plus exactes.) Et une partie de la différence est également matérielle. Les cartes AMD ont de meilleures spécifications en termes de flops de pointe, mais pour pouvoir en obtenir une fraction significative, vous devez non seulement diviser votre problème sur de nombreux processeurs de flux complètement indépendants, mais chaque élément de travail doit également être vectorisé. Étant donné que le code GPGPU est déjà assez difficile, cette complexité architecturale supplémentaire est suffisante pour faire ou défaire certains projets.
Et le résultat de tout cela est que la communauté d'utilisateurs NVIDIA continue de croître. Sur les trois ou quatre groupes que je connais qui envisagent de créer des clusters GPU, aucun d'entre eux n'envisage sérieusement les cartes AMD. Et cela signifiera encore plus de groupes qui rédigeront des articles, contribueront au code, etc. du côté de NVIDIA.
Je ne suis pas un shill NVIDIA; J'aimerais que ce ne soit pas le cas, et qu'il y ait deux (ou plus!) Plates-formes GPGPU tout aussi convaincantes. La concurrence est bonne. Peut-être qu'AMD intensifiera son jeu très bientôt - et les produits de fusion à venir semblent très convaincants. Mais en donnant à quelqu'un des conseils sur les cartes à acheter aujourd'hui et où passer son temps à faire des efforts maintenant, je ne peux pas en toute conscience dire que les deux environnements de développement sont tout aussi bons.
Modifié pour ajouter : je suppose que ce qui précède est un peu elliptique en termes de réponse à la question originale, alors laissez-moi le rendre un peu plus explicite. Les performances que vous pouvez obtenir à partir d'un morceau de matériel sont, dans un monde idéal avec un temps infini disponible, dépendant uniquement du matériel sous-jacent et des capacités du langage de programmation; mais en réalité, la quantité de performances que vous pouvez obtenir en un temps fixe investi dépend également fortement des outils de développement, des bases de code communautaire existantes (par exemple, les bibliothèques accessibles au public, etc.). Ces considérations pointent toutes fortement vers NVIDIA.
(Editeur: les informations de ce paragraphe ne sont plus exactes.) En termes de matériel, l'exigence de vectorisation au sein des unités SIMD des cartes AMD rend également l'obtention de performances papier encore plus difficile qu'avec le matériel NVIDIA.