Pourquoi Mike Pound mesure-t-il la capacité de calcul de son ordinateur par ses cartes graphiques et non par ses processeurs?


17

Je regardais récemment une excellente vidéo Computerphile sur les mots de passe dans laquelle Mike Pound se vante du supercalculateur de son entreprise ayant 4 cartes graphiques (Titan X, pour être exact).

En tant que passionné de simulation numérique, je rêve de construire un bureau uniquement pour le travail de simulation. Pourquoi Mike Pound mesure-t-il la capacité de calcul de son ordinateur par ses cartes graphiques et non par ses processeurs? Si je construisais un ordinateur, quel élément devrais-je me préoccuper davantage?


11
Je ne pense pas que ce soit nécessairement une question Gorilla vs Shark ... Il y a une question simple: "Pourquoi Mike Pound mesure-t-il la capacité de calcul de son ordinateur par ses cartes graphiques, et non par ses processeurs?" qui peut être répondu et sa réponse a une valeur constructive pour les futurs lecteurs.
Maybe_Factor

6
@gnat: même pas proche. Bien entendu, la question, dans sa forme actuelle, ne concerne pas vraiment le génie logiciel. Mais je suppose que cela pourrait être interprété comme une question sur l'ingénierie du système, où système = "combinaison de matériel + logiciel".
Doc Brown

10
Un ordinateur avec 4 cartes graphiques ne constitue pas un supercalculateur (ni un cluster de 10 Raspberry Pis d'ailleurs).
Matti Virkkunen du

10
C'est juste une configuration PC très chère, pas un supercalculateur ...
Bakuriu

3
N'est-ce pas la réponse simple à "Pourquoi Mike Pound mesure-t-il la capacité de calcul de son ordinateur par ses cartes graphiques" parce que le contexte est le crack de mot de passe? Si votre problème d'espace est autre chose, ce dont vous devez vous soucier pourrait être autre chose.
JimmyJames

Réponses:


32

Mike Pound apprécie évidemment la capacité de calcul des cartes graphiques plus élevée que la capacité de calcul des CPU.

Pourquoi? Une carte graphique est essentiellement composée de NOMBREUX processeurs simplifiés qui fonctionnent tous en parallèle. Pour certains travaux de simulation, une grande partie du calcul peut être facilement parallélisée et traitée en parallèle sur les milliers de cœurs disponibles dans les cartes graphiques, ce qui réduit le temps de traitement total.

quel article devrais-je me préoccuper davantage? Cela dépend vraiment de la charge de travail dont vous vous souciez et de la façon dont cette charge de travail peut / est mise en parallèle pour une utilisation sur une carte graphique. Si votre charge de travail est un ensemble parallèle de calculs simples embarrassant et que le logiciel est écrit pour tirer parti des cartes graphiques disponibles, alors plus de cartes graphiques auront un impact sur les performances beaucoup plus grand que plus de CPU (dollar pour dollar).


5
Ajout de quelques chiffres. Supposons que votre ordinateur principal soit un serveur AMD Epyc, 64 cœurs, 128 avec hyperthreading. Disons aussi qu'une carte graphique "core" n'est que 10% plus rapide. ONE TitanX possède encore 3072 cuda cœurs, environ 12000 pour la configuration. Vous avez l'idée? SI vous pouvez exécuter le problème sur la carte graphique, ce n'est pas "plus rapide" - c'est comme comparer la vitesse d'une calèche à une voiture de formule 1.
TomTom

3
+1 pour «un ensemble parallèle de calculs simples embarrassant», très bien écrit. Court et précis.
Michael Viktor Starberg

11
@TomTom: En fait, ma comparaison préférée consiste à comparer une voiture de formule 1 (votre CPU) avec un train à grande vitesse. Bien sûr, le train et la voiture ont approximativement la même vitesse. Mais le train peut déplacer 1000 personnes de A à B plus rapidement que la voiture de formule 1.
slebetman

2
@slebetman, le fait est que le processeur est généralement beaucoup plus rapide en performances monocœur (pas à peu près la même vitesse). Peut-être pouvons-nous faire des compromis et comparer un avion à réaction supersonique avec une locomotive à vapeur.
Darren Ringer

2
Si je dois choisir une analogie basée sur le véhicule, je dirais que le CPU est comme un avion de chasse (il est beaucoup plus rapide pour le transport point à point et a de nombreuses astuces dans son sac que les autres véhicules ne peuvent pas, mais ne peuvent que transporter une très petite charge) tandis que le GPU est comme un cargo (il peut transporter beaucoup plus de charge en parallèle, mais a un délai d'exécution beaucoup plus lent).
Lie Ryan

5

Consultez https://developer.nvidia.com/cuda-zone (et google cuda nvidia pour plus d'informations). L'architecture cuda et les cartes graphiques haut de gamme sont assez largement utilisées pour les supercalculateurs de bureau. Vous pouvez généralement assembler une boîte de plusieurs Tflop pour moins de 10 000 $ (USD) en utilisant des composants de boîte blanche prêts à l'emploi.

Donc...

En tant que passionné de simulation numérique, je rêve de construire un bureau uniquement pour le travail de simulation

... cuda est de loin le meilleur jeu en ville pour vous. Essayez peut-être de demander à nouveau dans /scicomp// ou un autre site Web stackexchange, plus directement impliqué dans ce genre de chose.

(Soit dit en passant, je suppose que vous êtes à l'aise avec l'idée que nous parlons de programmation massivement parallèle ici, donc vous devrez peut-être vous familiariser avec ce paradigme pour la conception d'algorithmes.)


Et nous sommes de retour à Ordos comme d'habitude.
Michael Viktor Starberg

2
@MichaelViktorStarberg Suis-je le seul à ne pas comprendre la référence Ordos?
MarnixKlooster ReinstateMonica

J'ai bien peur que tu sois ...: /
Ismael Miguel

4
@MarnixKlooster: J'ai dû Google "Ordos". Je ne sais pas ce qu'une «ville fantôme» en Chine a à voir avec les superordinateurs ou les téraflops.
Robert Harvey

@MarnixKlooster Vous ne l'êtes en effet pas.
jpmc26

2

Si je construisais un ordinateur, quel élément devrais-je me préoccuper davantage?

D'un point de vue pratique, vous devriez probablement faire assez attention à la carte mère et au CPU étant donné la difficulté relative de mise à niveau par rapport au GPU. Après l'achat, c'est un moment horrible pour découvrir que vous n'avez pas d'espace pour quatre GPU ou un processeur assez rapide pour les occuper tous.

Vous devez également savoir que les performances du GPU sont le plus souvent signalées dans les FLOP à simple précision, et diminuent un peu pour la double précision. Si vous avez besoin d'une précision supplémentaire dans vos simulations, vous vous retrouverez bien en dessous de la vitesse annoncée.

En route pour les courses de génie logiciel

Il y a vraiment deux préoccupations principales d'un point de vue logiciel, le goulot d'étranglement Von Neumann et le modèle de programmation. Le CPU a un assez bon accès à la mémoire principale, le GPU a une grande quantité de mémoire plus rapide à bord. Il n'est pas inconnu que le temps de déplacement des données dans et hors du GPU annule complètement tout gain de vitesse. En général, le CPU est un gagnant pour le calcul modéré sur de grandes quantités de données tandis que le GPU excelle dans les calculs lourds sur de petites quantités. Tout cela nous amène au modèle de programmation.

À un niveau élevé, le problème est l'ancien et honorable débat MIMD / SIMD. Les systèmes à instructions multiples et à données multiples ont été les grands gagnants de l'informatique générale et commerciale. Dans ce modèle, qui inclut le SMP, il existe plusieurs processeurs exécutant chacun leur propre flux d'instructions individuel. C'est l'équivalent informatique d'une cuisine française, où vous dirigez un petit nombre de cuisiniers qualifiés pour effectuer des tâches relativement compliquées.

Les systèmes à instruction unique / à données multiples, d'autre part, ressemblent plus à une immense salle pleine de commis enchaînés à leurs bureaux suivant les instructions d'un contrôleur maître. "Tout le monde AJOUTE les lignes 3 et 5!" Il a été utilisé sous sa forme pure dans l'ILLIAC et certains systèmes "mini-super", mais a perdu sa place sur le marché. Les GPU actuels sont un proche cousin, ils sont plus flexibles mais partagent la même philosophie générale.

Pour résumer brièvement:

  • Pour une opération donnée, le CPU sera plus rapide, tandis que le GPU peut en exécuter plusieurs simultanément. La différence est plus apparente avec les flottants 64 bits.
  • Les cœurs de processeur peuvent fonctionner sur n'importe quelle adresse mémoire, les données du GPU doivent être regroupées dans une zone plus petite. Vous ne gagnez que si vous effectuez suffisamment de calculs pour compenser le temps de transfert.
  • Le code lourd en conditionnel sera généralement plus agréable sur le CPU.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.