web-dev-qa-db-fra.com

CPU SIMD vs GPU SIMD?

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

26
carmellose

C'est une idée similaire, ça va un peu comme ça (de manière très informelle):

  • Le CPU a une quantité définie de fonctions qui peuvent s'exécuter sur des valeurs compressées. En fonction de votre marque et de la version de votre CPU, vous pouvez avoir accès à SSE2, 3, 4, 3dnow, etc., et chacun d'eux vous donne accès à de plus en plus de fonctions. Vous êtes limité par la taille du registre et les types de données plus importants avec lesquels vous travaillez avec le moins de valeurs que vous pouvez utiliser en parallèle. Vous pouvez mélanger et assortir librement les instructions SIMD avec les instructions traditionnelles x86/x64.
  • Le GPU vous permet d'écrire l'intégralité de votre pipeline pour chaque pixel d'une texture. La taille de la texture ne dépend pas de la longueur de votre pipeline, c'est-à-dire que le nombre de valeurs que vous pouvez affecter dans un cycle ne dépend de rien d'autre que de votre GPU, et les fonctions que vous pouvez chaîner (votre pixel shader) peuvent être à peu près n'importe quoi. C'est un peu plus rigide mais dans la mesure où la configuration et la relecture de vos valeurs sont un peu plus lentes, et c'est un processus en une seule fois (charger des valeurs, exécuter un shader, lire des valeurs), vous ne pouvez pas les masser du tout en plus de cela, donc vous avez réellement besoin d'utiliser beaucoup de valeurs pour que cela en vaille la peine.
12
Blindy

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.

17
Ben Adams