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.