Je n'ai pas de sentiments forts au sujet de CUDA vs OpenCL; sans doute OpenCL est l'avenir à long terme, juste par la force d'être un standard ouvert.
Mais courant jour de NVIDIA vs ATI cartes pour le GPGPU (pas les performances graphiques, mais GPGPU), que je dois avoir une opinion forte sur. Et sur ce, je vais souligner que sur l' actuelle liste du Top 500 des grands groupes, NVIDIA conduit AMD 4 systèmes à 1, et sur gpgpu.org, les résultats de la recherche (articles, liens vers des ressources en ligne, etc) pour les NVIDIA sont plus nombreux que les résultats pour les processeurs AMD 6:1.
Une grande partie de cette différence est la quantité de l'information en ligne disponible. Découvrez la NVIDIA CUDA de la Zone de rapport à AMD GPGPU Développeur Centrale. La quantité de trucs pour les développeurs de démarrage ne vient même pas près de la comparaison. Sur les NVIDIAs site, vous trouverez des tonnes de journaux - et ont contribué au code - de probablement les personnes travaillant sur des problèmes comme la vôtre. Vous trouverez des tonnes de cours en ligne, à partir de NVIDIA et d'ailleurs, et de documents très utiles, comme les développeurs de " meilleure pratique, guide, etc. La disponibilité de libre-devel outils - le profiler, la cuda-gdb, etc - massivement s'incline NVIDIAs.
Et une partie de la différence est aussi matériel. AMDs cartes ont de meilleures spécifications en termes de pic de flops, mais pour être en mesure d'obtenir un significiant fraction de cela, vous avez non seulement à briser votre problème sur de nombreux complètement indépendant processeurs de flux, chaque élément de travail doit également être vectorisé. Étant donné que GPGPUing ceux code est assez dur, ce supplément de complexité architecturale est assez pour faire ou défaire certains projets.
Et le résultat de tout cela est que la NVIDIA communauté d'utilisateurs continue de croître. Des trois ou quatre groupes, je sais que la pensée de bâtiment GPU clusters, aucun d'entre eux envisagent sérieusement AMD cartes. Et ce sera encore plus les groupes de rédaction d'articles, de contribuer au code, etc sur la NVIDIA côté.
Je ne suis pas une NVIDIA complice; je souhaite qu'il n'était pas de cette façon, et qu'il y a deux (ou plus!) tout aussi convaincant GPGPU plates-formes. La concurrence a du bon. Peut-être que AMD va intensifier son jeu très vite - et la fusion prochaine des produits look très convaincante. Mais en donnant des conseils à quelqu'un sur les cartes à acheter aujourd'hui, et où passent leur temps à mettre des efforts en ce moment, je ne peux pas en bonne conscience dire que les deux environnements de développement sont également bonnes.
Edité pour ajouter: je suppose que le dessus est un peu elliptique en termes de réponse à la question d'origine, alors permettez-moi de rendre un peu plus explicite. Les performances que vous pouvez obtenir à partir d'un morceau de matériel, un monde idéal, avec d'infinies de temps, de personne à charge seulement sur le matériel sous-jacent et les capacités du langage de programmation; mais en réalité, la quantité d'exécution, vous pouvez obtenir un montant fixe de temps investi est également fortement dépendant de devel outils existants de la communauté des bases de code (par exemple, à disposition du public des bibliothèques, etc). Ces considérations point fortement de NVIDIA.
En termes de matériel, la reqiurement pour la vectorisation dans les unités SIMD de l'AMD cartes de faire du papier de performance encore plus dur qu'avec le matériel NVIDIA.