Le GPU utilise le paradigme SIMD , c'est-à-dire que la même portion de code sera exécutée en parallèle et appliquée à divers éléments d'un ensemble de données.
Cependant, le CPU utilise également SIMD et fournit un parallélisme au niveau des instructions. Par exemple, pour autant que je sache, les instructions de type SSE traiteront les éléments de données avec parallélisme.
Alors que le paradigme SIMD semble être utilisé différemment dans les GPU et les CPU, les GPU ont-ils plus de puissance SIMD que les CPU?
De quelle manière les capacités de calcul parallèle dans un CPU sont "plus faibles" que celles d'un GPU?
Merci
C'est une idée similaire, ça va un peu comme ça (de manière très informelle):
Les processeurs et les GPU fournissent à SIMD l'unité conceptuelle la plus standard, soit 16 octets/128 bits; par exemple un vecteur de 4 flotteurs (x, y, z, w).
Simplifier:
Les CPU se parallélisent ensuite davantage en pipelining les futures instructions afin de procéder plus rapidement dans un programme. Ensuite, l'étape suivante consiste en plusieurs cœurs qui exécutent des programmes indépendants.
Les GPU, d'autre part, se parallélisent en poursuivant l'approche SIMD et en exécutant le même programme plusieurs fois; à la fois par SIMD pur où un ensemble de programmes s'exécute dans l'étape de verrouillage (c'est pourquoi la ramification est mauvaise sur un GPU, car les deux côtés d'une instruction if doivent s'exécuter; et un résultat doit être jeté de sorte que les programmes d'étape de verrouillage continuent en même temps) taux); et aussi par programme unique, données multiples (SPMD) où les groupes des ensembles de programmes identiques se déroulent en parallèle mais pas nécessairement en étape de verrouillage.
L'approche GPU est excellente lorsque le même traitement exact doit être appliqué à de grands volumes de données; par exemple un million de sommets qui doivent être transformés de la même manière, ou plusieurs millions de pixels qui ont besoin du traitement pour produire leur couleur. En supposant qu'ils ne deviennent pas bloqués par un bloc de données/pipeline, les programmes de GPU offrent généralement une exécution limitée dans le temps en raison de ses restrictions; ce qui est encore bon pour le parallélisme temporel par exemple les programmes doivent répéter leur cycle à un certain rythme, par exemple 60 fois par seconde (16 ms) pendant 60 ips.
L'approche CPU est cependant meilleure pour prendre des décisions et effectuer plusieurs tâches différentes en même temps et pour gérer les entrées et les demandes changeantes.
Outre ses nombreuses autres utilisations et finalités, le CPU est utilisé pour orchestrer le travail à effectuer par le GPU.