104 votes

NVIDIA vs AMD: performances GPGPU

J'aimerais entendre ce que les gens avec de l'expérience de codage pour les deux. Moi-même, j'ai de l'expérience avec les NVIDIA.

NVIDIA CUDA semble être beaucoup plus populaire que la concurrence. (Compte juste les question tags sur ce forum, 'cuda' dépasse 'opencl' 3:1, et 'nvidia' dépasse 'ati' 15:1, et il n'y a pas de balise pour "ati-stream").

D'autre part, selon Wikipedia, ATI/AMD cartes doivent avoir beaucoup plus de potentiel, en particulier pour un dollar. La manière la plus rapide de carte NVIDIA sur le marché d'aujourd'hui, les GeForce 580 ($500), est évalué à 1,6 simple précision TFlops. AMD Radeon 6970 peut être eu pour $370 et il est évalué à 2,7 TFlops. La 580 dispose de 512 unités d'exécution à 772 MHz. La 6970 a 1536 unités d'exécution à 880 MHz.

Comment est-elle réaliste que le papier l'avantage d'AMD sur NVIDIA, et est-il susceptible d'être réalisé dans la plupart des GPGPU tâches? Ce qui se passe avec entier tâches?

79voto

Pavan Yalamanchili Points 6637

Métaphoriquement parlant ati a un bon moteur par rapport à nvidia. Mais nvidia a une meilleure voiture :D

C'est surtout parce que nvidia a investi une bonne partie de ses ressources (l'argent et des personnes) afin de développer d'importantes bibliothèques requises pour le calcul scientifique (BLAS, FFT), et ensuite, un bon travail dans la promotion. Cela peut être la raison CUDA domine les balises ici par rapport à d'ati (ou OpenCL)

Comme pour l'avantage d'être réalisée en GPGPU tâches en général, ça finirait en fonction sur d'autres questions (selon l'application), tels que, la mémoire, la bande passante de transfert, un bon compilateur et probablement même le pilote. nvidia ayant une plus grande maturité compilateur, une plus grande stabilité de pilote sous linux (linux, car, son utilisation est très répandue dans le calcul scientifique), de faire pencher la balance en faveur de CUDA (au moins pour l'instant).


EDIT Jan 12, 2013

Ça fait deux ans que j'ai fait ce post, et il semble encore à attirer des points de vue parfois. J'ai donc décidé de clarifier un peu les choses

  • AMD a musclé son jeu. Ils ont maintenant les deux BLAS et la FFT bibliothèques. De nombreuses bibliothèques tierces sont également à fuser autour d'OpenCL.
  • Intel a introduit Xeon Phi dans la nature en soutenant à la fois OpenMP et OpenCL. Il a également la capacité existante du code x86. comme indiqué dans les commentaires, limitée x86 sans l'ESS pour l'instant
  • NVIDIA et CUDA toujours avoir l'avantage dans la gamme de bibliothèques disponibles. Cependant, ils peuvent ne pas être en se concentrant sur OpenCL autant comme ils le faisaient avant.

En bref OpenCL a réduit l'écart dans les deux dernières années. Il y a de nouveaux joueurs sur le terrain. Mais CUDA est toujours un peu en avance sur le peloton.

59voto

Jonathan Dursi Points 25143

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.

17voto

Roger Dahl Points 8326

La principale différence entre AMD et NVIDIA architectures, c'est que AMD est optimisé pour des problèmes où le comportement de l'algorithme peuvent être déterminés au moment de la compilation, tandis que NVIDIA est optimisé pour des problèmes où le comportement de l'algorithme ne peut être déterminée qu'au moment de l'exécution.

AMD a une architecture relativement simple qui leur permet de passer plus de transistors sur ALU. Aussi longtemps que le problème peut être entièrement définie au moment de la compilation et être correctement mappé à l'architecture un peu statique ou de manière linéaire, il ya une bonne chance que AMD va être en mesure d'exécuter l'algorithme plus rapide que NVIDIA.

D'autre part, NVIDIA compilateur est de faire le moins de l'analyse au moment de la compilation. Au lieu de cela, NVIDIA a plus avancés de l'architecture, où ils ont passé plus de transistors sur une logique qui est capable de gérer le comportement dynamique de l'algorithme qui n'émerge qu'au moment de l'exécution.

Je crois que le fait que la plupart des super-ordinateurs qui utilisent le Gpu pour aller avec NVIDIA, c'est que le type de problème que les scientifiques s'intéressent à l'exécution de calculs, en général mieux les cartes de NVIDIA d'architecture que d'AMD.

7voto

DarkZeros Points 2720

J'ai fait quelques itératif de codage en OpenCL. Et les résultats de l'exécution dans NVIDIA et ATI, sont à peu près la même. Près la même vitesse, la même valeur ($) des cartes.

Dans les deux cas, les vitesses ont été ~10x-30x comparant à un PROCESSEUR.

Je n'ai pas fait de test CUDA, mais je doute qu'il pourrait résoudre mon mémoire vive chercher les problèmes comme par magie. De nos jours, CUDA et OpenCL sont plus ou moins les mêmes, et je ne vois plus d'avenir sur OpenCL que sur CUDA. La raison principale est que Intel est le lancement de pilotes avec OpenCL pour leurs processeurs. Ce sera une avancée énorme dans le futur (course de 16, 32 ou 64 threads d'OpenCL dans le CPU est très rapide et vraiment facile à porter sur GPU).

6voto

Andras Points 31

Je suis nouveau sur le GPGPU, mais j'ai une certaine expérience en calcul scientifique (Doctorat en Physique). Je mets ensemble une équipe de recherche et je veux aller vers l'utilisation du GPGPU pour mes calculs. Je devais choisir entre les plates-formes disponibles. J'ai décidé de Nvidia, pour un couple de raisons: tout d'ATI pourrait être plus rapide sur le papier, Nvidia a une plus grande maturité de la plateforme et plus de documentation de sorte qu'il sera possible de se rapprocher de la performance de pointe sur cette plate-forme.

Nvidia a également une recherche universitaire programme de soutien, on peut le faire, je viens de recevoir une TESLA 2075 carte dont je suis très heureux à ce sujet. Je ne sais pas si ATI ou Intel prend en charge la recherche de cette façon.

Ce que j'ai entendu parler d'OpenCL est qu'il essaye d'être tout à la fois, il est vrai que votre OpenCL code sera plus portable, mais il est également susceptible de ne pas exploiter pleinement les capacités de la plate-forme. Je préfère apprendre un peu plus et écrire des programmes qui utilisent les ressources de mieux. Avec la TESLA K10 qui vient de sortir cette année, Nvidia est en 4.5 Téraflops de la gamme, il n'est pas clair que Nvidia est derrière ... cependant, Intel Micros qui pourrait s'avérer être un réel concurrent, surtout si elles ont réussi à déplacer le GPGPU unité de la carte mère. Mais pour l'instant, j'ai choisi de Nvidia.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X