Wie viele "parallele Einheiten" hat eine GPU?

8

Ich möchte wissen, wie viele parallele Einheiten für die Verarbeitung von Scheitelpunkten eine GPU hat.

Diese Wikipedia-Seite bietet einen GFLOPS und eine Taktrate, zum Beispiel für die Radeon 5850 "Broadway PRO" erhalten Sie 1000 GFLOPS. Angenommen, ein Vertex-Shader hat 100 Flops. Das bedeutet, dass Sie 1000e9 / 100 = 10e9 Vertices pro Sekunde verarbeiten können.

Gibt es eine vom Hersteller veröffentlichte Anzahl von Parallelverarbeitungseinheiten oder eine Möglichkeit, diese Anzahl zu ermitteln?

Bobobobo
quelle
8
Es variiert von Kartenmodell zu Kartenmodell. Was ist das Ziel dieser Frage?
AttackingHobo
Ich stimme AttackingHobo zu, es ist irrelevant, wie viele Kerne es gibt, da jeder Chip eine andere Menge hat und auch anders funktioniert. In einem Modell sind 30 Kerne möglicherweise leistungsstärker als einer mit 60 Kernen. Außerdem müssen Sie sich auf jede Chipspezifikation des Herstellers beziehen, wenn Sie den Informationen in Wikipedia (die wahrscheinlich genau sind) nicht vertrauen
Pablo Ariel
1
stackoverflow.com/questions/6490572/…
Ciro Santilli 法轮功 病毒 病毒 六四 事件 31

Antworten:

26

Angenommen, ein Vertex-Shader hat 100 Flops. Das bedeutet, dass Sie 1000e9 / 100 = 10e9 Vertices pro Sekunde verarbeiten können.

Nein, das tut es mit Sicherheit nicht.

Grundsätzlich sollten Sie jede Berechnung der Ausführungsgeschwindigkeit betrachten jeden Code basierte ausschließlich auf „FLOP“ count suspekt zu sein. In der Tat ist es im Allgemeinen am besten, wenn Sie FLOPS vollständig ignorieren.

Sie haben den Begriff "parallele Einheit" nicht definiert. Ohne diese Definition könnten wir nur raten, was Sie wollen.

Nehmen Sie die Radeon 5870. Sie verfügt über 1600 Gleitkommaeinheiten. Das bedeutet, dass für jeden Zyklus 1600 skalare Gleitkommaoperationen gleichzeitig ausgeführt werden können. Jeder VLIW-Opcode arbeitet jedoch mit 5-Wege-Vektor-Mathematikregistern. Die kleinstmögliche Granularität des tatsächlichen Codes ist also 1600/5 oder 320 (Hinweis: Dies ist eine enorme Vereinfachung). Das sind 320 Threads.

Das funktioniert jedoch nicht wirklich so. Es gibt keine 320 separaten Ausführungspfade. Es können nicht 320 verschiedene Codeteile auf 320 verschiedenen Einheiten ausgeführt werden. Die 5-Wege-VLIWs sind selbst in 4-Wege-SIMD-Kerne gruppiert. Jede SIMD kann einen eigenen Ausführungspfad und einen eigenen Quellcode haben. Jedes VLIW innerhalb eines SIMD-Kerns kann separate Daten haben, so dass sie separate Werte berechnen. Jeder VLIW innerhalb eines SIMD-Kerns führt jedoch dieselben Anweisungen im Sperrschritt mit den anderen VLIWs in diesem Kern aus.

Sie haben also wirklich nur 320/4 oder insgesamt 80 Threads. Aber auch hier kommt es darauf an, um welche Art von "Paralleleinheit" es sich handelt. Technisch gesehen sind 1600, 320 und 80 legitime Antworten.

Und das ist nur für eine bestimmte Architektur. Die Fermi-Linie von NVIDIA (GeForce 4xx und höher) verwendet eine völlig andere Architektur. Die Cayman-Linie von ATI (Radeon 69xx) ändert die 5-Wege-VLIWs in 4-Wege-VLIWs. Ihre nächste Architektur kann ebenfalls einige signifikante Unterschiede aufweisen.

Ohne zu wissen, wonach Sie suchen, gibt es einfach keine Möglichkeit, die Frage zu beantworten.

Nicol Bolas
quelle
Großartig. Ich habe diesen Artikel auch über die GPU-Architektur gefunden, aber wo haben Sie die Anzahl der Gleitkommaeinheiten gefunden? Das habe ich gesucht.
Bobobobo
@bobobobo: Es war auf der Wikipedia-Seite, auf die Sie verlinkt haben. Außerdem ist dieser GPU Gems-Artikel spezifisch für die GeForce 6-7-Linie. Es ist auch 6 Jahre alt.
Nicol Bolas
Es ist interessant, dass Sie SIMD durch seine einzelnen Buchstaben aussprechen. VLIW ist ein verwirrender Schluck von etwas anderem als seinen Buchstaben, aber die meisten (eigentlich alle) Systemprogrammierer, mit denen ich gearbeitet habe, sagen "sim dee".
Andon M. Coleman
@NicolBolas, Alter, 80 gleichzeitige Anweisungen? Das verdammte schlägt immer noch die üblichen 8 oder 16, die Sie von der CPU erhalten.
Pacerier
3

Ich verstehe nicht, was meinst du mit Parallelverarbeitungseinheit? Shader-Einheiten? Da eine ppu und eine gpu heutzutage im Grunde dasselbe sind, meine ich, dass die ppu die gpu ist, wenn wir über ati radeon sprechen.

Ich nehme an, Sie meinen die Funktionseinheiten, Sie müssen das Config coreFeld in Wikipedia lesen :

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.

Also für die Radeon sagst du, es hätte:

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

was für den Broadway Pro ist: 800:40:16

Dies bedeutet, dass es 800 Shader-Einheiten, 40 Textur-Mapping-Einheiten und 16 Render-Ausgabeeinheiten hat.

EDIT: Nun nein, es scheint, dass die Parallelverarbeitungseinheit auch auf das angewendet wird, was Sie meinen. Ich nehme an, es ist etwas verwirrend, sie so zu nennen. Ich würde sie Shader-Einheiten oder Simd-Kerne nennen.

Pablo Ariel
quelle
Was ist eine PPU?
Pacerier