Combien d '«unités parallèles» possède un GPU?

8

Je voudrais savoir combien d'unités parallèles pour traiter les sommets d' un GPU.

Cette page Wikipédia fournit un GFLOPS et une vitesse d'horloge, par exemple pour la Radeon 5850 "Broadway PRO", vous obtenez 1000 GFLOPS. Supposons que l'exécution d'un vertex shader représente 100 flops, ce qui signifie que vous pouvez traiter 1000e9 / 100 = 10e9 sommets par seconde.

Existe-t-il un numéro publié par le fabricant du nombre d'unités de traitement parallèle , ou un moyen de connaître ce nombre?

bobobobo
la source
8
Cela varie d'un modèle de carte à l'autre. Quel est le but de cette question?
AttackingHobo
Je suis d'accord avec AttackingHobo, le nombre de cœurs n'a pas d'importance car chaque puce a une quantité différente et fonctionne également différemment, donc dans un modèle 30 cœurs peuvent être plus puissants qu'un modèle avec 60 cœurs. Vous devrez également vous référer à chaque spécification de puce du fabricant si vous ne faites pas confiance aux informations présentes dans wikipedia (ce qui est probablement exact)
Pablo Ariel
1
stackoverflow.com/questions/6490572/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Réponses:

27

Supposons que l'exécution d'un vertex shader représente 100 flops, ce qui signifie que vous pouvez traiter 1000e9 / 100 = 10e9 sommets par seconde.

Non, certainement pas.

Fondamentalement, vous devriez considérer tout calcul de la vitesse d'exécution de tout code basé uniquement sur le nombre de "FLOPS" comme suspect. En effet, il est généralement préférable d'ignorer complètement les FLOPS.

Vous n'avez pas défini le terme «unité parallèle»; sans cette définition, nous ne pouvions que deviner ce que vous vouliez.

Prenez la Radeon 5870. Elle a 1600 unités à virgule flottante. Cela signifie que, pour chaque cycle, il peut exécuter simultanément 1600 opérations scalaires à virgule flottante. Cependant, chaque opcode VLIW fonctionne sur des registres mathématiques vectoriels à 5 voies. Ainsi, la plus petite granularité possible du code réel est 1600/5, ou 320 (note: il s'agit d'une vaste simplification). C'est 320 threads.

Cependant , ce n'est pas vraiment ainsi que cela fonctionne. Vous n'avez pas 320 chemins d'exécution distincts en cours. Vous ne pouvez pas avoir 320 morceaux de code différents s'exécutant sur 320 unités différentes. Voir, les VLIW à 5 voies sont elles-mêmes regroupées en cœurs SIMD à 4 voies. Chaque SIMD peut avoir son propre chemin d'exécution et son propre code source. Chaque VLIW dans un cœur SIMD peut avoir des données distinctes, de sorte qu'elles calculent des valeurs distinctes. Mais chaque VLIW dans un cœur SIMD exécute les mêmes instructions en étape de verrouillage avec les autres VLIW dans ce cœur.

Donc, vraiment, vous n'avez que 320/4, soit 80 threads au total. Mais encore une fois, cela dépend du type "d'unité parallèle" dont vous parlez. Techniquement, 1600, 320 et 80 sont toutes des réponses légitimes.

Et c'est juste pour une architecture spécifique . La gamme Fermi de NVIDIA (GeForce 4xx et plus) utilise une architecture très différente. La ligne Cayman d'ATI (Radeon 69xx) change les VLIW à 5 voies en VLIW à 4 voies. Leur prochaine architecture peut également présenter des différences importantes.

Sans savoir ce que vous cherchez, il n'y a tout simplement aucun moyen de répondre à la question.

Nicol Bolas
la source
Génial. J'ai également trouvé cet article sur l'architecture GPU, mais où avez-vous trouvé le nombre d'unités à virgule flottante? Voilà ce que je cherchais.
bobobobo
@bobobobo: C'était dans la page Wikipedia à laquelle vous avez lié. En outre, cet article GPU Gems est spécifique à la ligne GeForce 6-7. Il a également 6 ans.
Nicol Bolas
Il est intéressant que vous prononçiez SIMD par ses lettres individuelles. VLIW est une bouchée déroutante par autre chose que ses lettres, mais la plupart (tous, en fait) les programmeurs de systèmes avec lesquels j'ai travaillé disent "sim dee".
Andon M. Coleman
@NicolBolas, Mec, 80 instructions simultanées? Ce frégage bat toujours les 8 ou 16 habituels que vous obtenez du CPU.
Pacerier
3

Je ne comprends pas, que voulez-vous dire par unité de traitement parallèle? unités de shader? Parce qu'un PPU et un GPU de nos jours sont fondamentalement la même chose, je veux dire que le PPU EST le GPU si nous parlons d'Ati Radeon.

Je suppose que vous voulez dire les unités fonctionnelles, vous devez lire le Config corechamp dans wikipedia:

Config Core – The layout of the graphics pipeline, in terms of functional units. Over time the number, type and variety of functional units in the GPU core has changed significantly; before each section in the list there is an explanation as to what functional units are present in each generation of processors.

donc pour le radeon vous dites que ça aurait:

Unified Shaders (Vertex shader/Geometry shader/Pixel shader) : Texture mapping unit : Render Output unit

qui pour le broadway pro c'est: 800:40:16

cela signifie qu'il a 800 unités de shader, 40 unités de mappage de texture et 16 unités de sortie de rendu.

EDIT: Eh bien non, il semble que l'unité de traitement parallèle soit également appliquée à ce que vous voulez dire, donc je suppose que c'est un peu déroutant de les appeler de cette façon. Je les appellerais des unités de shader ou des cœurs simd.

Pablo Ariel
la source
Qu'est-ce qu'un PPU ??
Pacerier