SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1
ÜBERSICHT Grafikpipeline Verlagerung der Berechnung von CPU auf GPU Shadermodel 3.0 Architektur nvidia NV40 im Detail 2
GRAFIKPIPELINE (1) Was haben wir? Geometrie beschrieben durch Dreiecke bzw. deren Eckpunkte Attribute der Eckpunkte für visuelle Eigenschaften wie Farbe, Lichteinfall usw. Texturen liefern visuelle Details 3
GRAFIKPIPELINE (2) Wo wollen wir hin? Monitore sind Rasterdisplays Diskretisierung durch feste Anzahl an Pixeln nur zweidimensionale Abbildung (noch) 4
GRAFIKPIPELINE (3) Vereinfachter Aufbau der sog. Fixed-Function Pipeline 5
GRAFIKPIPELINE (4) Transformation: Matrixmultiplikation Vertexdaten werden mehrfach transformiert Model- nach Weltkoordinaten Welt- nach View-Koordinaten Projektive Transformation 6
GRAFIKPIPELINE (5) Dreiecke und andere Grafikprimitiven werden auf Fragmente (=Pixelkandidaten) abgebildet Diskretisierung der mathematischen Konstrukte Algorithmus von Bresenham Erweiterung um z.b. Beleuchtungsberechnung Werte nur an Eckpunkten bekannt Zwischenwerte werden interpoliert 7
PARALLELITÄT Grafikpipeline ist embarrassingly parallel Datenverarbeitung in allen Stufen parallelisierbar Vertices sind nicht voneinander abhängig Primitive können unabhängig gerastert werden Fragmentdaten sind unabhängig mehr Ausführungseinheiten = mehr Geschwindigkeit (3dfx SLI, ATI Crossfire, nvidia SLI) 8
0%&-1(23/7&%89&%$ : ;("2<&(%/=>?5/@5A?BC *DE/F$"$%&#$3 )(8$+ 3(F"&<G screen application geometry rasterization CPU!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 9
0%&-1(23/7&%89&%$ : *+,,+8+%$ 6;< *=>/9%(#$3?%&,$ @.??$%A B%&-1(23 21(- B$"$%&#$3 )(8$+ 3(B"&C screen application geometry rasterization CPU GPU!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 10
0%&-1(23/7&%89&%$ : ;#&%(/<=> 0?@/3.--+%#3 3(,-A$/BC/D%&-1(23 +-$%&#(+"3 screen application geometry rasterization CPU GPU!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 11
0%&-1(23/7&%89&%$ : ;0!/!"8<= 0>?/8+$3 %&3#$%(@&#(+" +A/ #%(&"BC$3 screen application geometry rasterization CPU GPU!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 12
0%&-1(23/7&%89&%$ : ;0!/< = > 0?@/&A3+/8+$3 #%&"3B+%,&#(+"3 screen application geometry rasterization CPU GPU!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 13
0%&-1(23/7&%89&%$ : ;0!/<"=>?/"@(8(& 0$A+%2$5BBB 0CD/8+$3 $"#(%$ -(-$E("$ screen application geometry rasterization CPU GPU!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 14
0%&-1(23/7&%89&%$ : ;(%3#/<$"$%&#(+"/-%+<%&,,&=>$/0?@3A "B(8(& 0$C+%2$CDE/FG!/H&8$+"E III 3("<>$ 3#&<$3 &%$ -%+<%&,,&=>$ $I<I/J/)$%#$K/-%+2$33+%3/&"8/6J/-(K$>/-%+2$33+%3 screen application geometry rasterization CPU GPU... DP4 o[hpos], c[0], v[opos] DP4 o[hpos], c[1], v[opos]...!"#$%&'#()$ *+,-.#$%/0%&-1(23/4!"#%+ 56 VERLAGERUNG VON CPU AUF GPU Folien entnommen aus der Vorlesung Interaktive Computergrafik, Stamminger, LS9 15
GPU UND SHADER GPU übernimmt mehr Aufgaben Wechsel von Fixed-Function-Pipeline zu programmierbaren Funktionseinheiten (Vertex-, Fragmentprogramme) Shader: Programm, das direkt auf GPU läuft und Vertex- bzw. Fragmentdaten ändern kann 16
SHADER MODELS Verschiedene Featuresets bzgl. Programmierbarkeit (sog. Shader-Model) 1.0: spezieller Assemblerdialekt 1.5: GLSL, Hochsprache aus OpenGL 2.0: cg, HLSL; (stark) begrenzte Instruktionszahl 3.0: dynamic flow control, hohe Instruktionsanzahl 4.0: geometry shader, unified shader model 17
PERFORMANCE-ENTWICKLUNG Überblick von 1994 bis 2004 (Release NV40) 18
GEFORCE 6 SERIES NV40: 222 Mio. Transistoren, 130nm Strukturbreite, 400 MHz (Athlon64 Newcastle: 68,5 Mio. Transistoren, 2.0 GHz) Shader-Model 3.0 Peak-Performance: hundreds of gigaflops (single precision) erscheint 2004 Ab Mitte 2005 Ablösung durch Geforce 7 (NV44) 19 Geforce 6800, Prozessor-Die
NV40 BANDBREITEN Northbridge to GPU: PCIe 16x; Northbridge to CPU/System DRAM: 800MHz FSB GPU to Graphics DRAM: 550MHz DDR x 256 bit x 2 transfers per clock cycle = 35 GB/s 20
N V 4 0 I M D E TA I L Blockdiagramm der Geforce6-Architektur 21
N V 4 0 V E RT E X P R O C E S S O R Alle (Vektor-)Komponenten werden mit 32-bit Fließkommzahlen berechnet 22
VERTEX PROCESSOR Genauigkeit: fp32, fp16 eine SIMD-MADD-Instruktion und eine Skalarfunktion pro Taktzyklus Skalarfunktionen: exponential: exp, lit, log reziprok: rcp, rsq trigonometrisch: sin, cos Zugriff auf bis zu vier Texturen; nur nearest neighbor Filtering 23
NV40 FRAGMENT PROCESSOR Bearbeitet Blöcke der Größe 2x2 24
FRAGMENT PROCESSOR 4 Komponenten SIMD- Instruktionen Genauigkeit: fp32, fp16 3:1 coissue, 2:2 coissue dual issue dynamic flow control multiple render targets (MRT) 25
DATENFORMATE NV40 Texturzugriff sowohl von Vertex- als auch Fragmentprogramm möglich Formate: 1D, 2D, 3D, Cubemap mit fp16x2, fp16x4, fp32x1, fp32x2, fp32x4 Interpolation: nearest neighbor (Vertex Processor) bilinear, trilinear, anisotropic in 2D und Cubemap- Texturen (Fragment Processor) zusätzlich quad-linear für 3D-Texturen 26
GRAPHICS PIPELINE VS. GPGPU 27
GEFORCE 7 SERIES Geforce7 (NV44) basiert auf Geforce6-Design (NV40) Unterschiede: Takt (650 MHz vs. 400 MHz) Speichertakt (1,6 GHz statt 1,1 GHz) Mehr Ausführungseinheiten (24 statt 16 Pixelshader-Units, 8 statt 6 Vertex Pipelines) Spätere Geforce7-Modelle haben neue Chip-Revision: G70 28
FAZIT (1) Grafikhardware kann für General Purpose-Zwecke verwendet werden Umsetzung von Algorithmen jedoch schwierig Beispiel: Navier-Stokes Flüssigkeitssimulation auf Intel Pentium 4 2 GHz, NV35, NV40 29
FAZIT (2) Performance-Boost durch Parallelisierung Früher: Spezialisierung, heute: Generalisierung der Funktionseinheiten Trend setzt sich mit neueren Architekturen (G80) weiter fort 30
FRAGEN, ANMERKUNGEN? 31
QUELLEN Marc Stamminger: Folien zur Vorlesung Interaktive Computergrafik, Erlangen, 2006. Matt Pharr, Randima Fernando: GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation, 2005 32