Grafik- Programmierung

Ähnliche Dokumente
RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Grafikkarten-Architektur

Cell and Larrabee Microarchitecture

Architektur moderner GPUs. W. Sczygiol - M. Lötsch

Thema: Hardware-Shader

Grundlagen der Spieleprogrammierung

Compute Unified Device Architecture CUDA

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker

Einführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)

General Purpose Computation on GPUs

Seminar: Grafikprogrammierung

Computer Graphics Shader

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010

Georg Molzer 1HDD 3D-Grafikkarten GDV-Hardware

Shader. Computer Graphics: Shader

Yilmaz, Tolga MatNr: Mesaud, Elias MatNr:

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung

Aktuelle Grafikleistungen

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

Multicore-Architekturen

Volumenakquise. Vortrag von Benjamin Gayer

Computergrafik Universität Osnabrück, Henning Wenke,

OEM Hardware Nr. : PCI\VEN_10DE&DEV_05E2&SUBSYS_ &REV_A1

Eine Einführung in die Architektur moderner Graphikprozessoren

Stream Processing und High- Level GPGPU Sprachen

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

2 Rechnerarchitekturen

Eine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Ansätze 4. GPU. Echtzeit- Raytracing. Polygon- Rendering. Computerspiele Sommer (c) 2013, Peter Sturm, Universität Trier 1

Parallele Algorithmen in der Bildverarbeitung

General-purpose computing on GPUs

Numerik und Rechnen. Inhaltsverzeichnis. Seminar Programmierung von Grafikkarten

3D-Grafik-Chips. Informatik-Seminar Michael R. Albertin. Betreuer: E. Glatz

Grafikprozessor Grafikspeicher Taktung Kühlung Schnittstellen Ausgänge Treiber Crossfire & SLI ATI Nvidia Matrox PowerVR Technologies Inhaltsverzeichn

Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold. Seminar Programmierung von Grafikkarten. GPGPU Basiskonzepte. von.

CPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017

Maximale Power mit der neuen ERAZER Gaming Notebook-Linie von MEDION

Seminar Multicore-Programmierung

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

Paralleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.

Vorlesung Rechnerarchitektur. Einführung

Spieleprogrammierung mit DirectX und C++

OpenGL und die Fixed-Function-Pipeline

GPGPU mit NVIDIA CUDA

N Bit Binärzahlen. Stelle: Binär-Digit:

Vorlesung Mathematik 2 für Informatik

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Lineare Algebra. Inhalt. Hauptbestandteil der Vorlesung Mathematik 2 Literatur: Teschl/Teschl, Band 1, Kap. 9-14

Vertiefungsrichtung Rechnerarchitektur

Interaktives Wasser in 3D. Jörn Loviscach Hochschule Bremen

Die Sandy-Bridge Architektur

Strömungssimulation. Alexander Podlich & Jens Wollenhaupt {podlich, Sommersemester

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler

Eine kurze Geschichte der Grafikkarten

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

Übersicht. Vergleich der Spielekonsole mit dem PC. Historie der Spielekonsolen von 1976 bis 1999

Masterpraktikum Scientific Computing

technische universität dortmund Lehrstuhl für Hochfrequenztechnik Übertragungssysteme

Strömungssimulation Seminar Programmierung von Grafikkarten Universität Kassel

Seminar Parallele Rechnerarchitekturen SS04 \ SIMD Implementierung aktueller Prozessoren 2 (Dominik Tamm) \ Inhalt. Seite 1

PCI Express 3.0 Features and Highspeed Switching / Interconnect

Im Bereich der Entwicklung und Herstellung von Prozessoren spielen

Evolution of GPUs. Die Entwicklung der Graphics Processing Units. Marvin Kampf und Michael Moese. Seminar: Multi-Core Architectures and Programming

1 Einleitung. 2 Parallelisierbarkeit von. Architektur

Interaktive Visualisierung zeitabhängiger Volumendaten

Spielst du noch oder rechnest du schon?

Computer - Aufbau u. Funktionsweise

GPU Programmierung. Thorsten Grosch

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

3D Rendering mit PHP. Die neue PEAR-Klasse Image_3D bietet die Möglichkeit nur mit PHP5 3DGrafiken zu rendern

KALAHA. Erfahrungen bei der Implementation von neuronalen Netzen in APL. Dipl.Math. Ralf Herminghaus, April 2018

Beleuchtung Schattierung Rasterung

Die Welt der Shader. Fortgeschrittene Techniken III

Transkript:

Grafik- Programmierung Seminar SS08 Thema: Stand der Technik/ Ausblick Moritz Dekorsy 10.07.2008 1

Inhaltsverzeichnis 1. Einführung...3 1.1 Stand der Technik...3 1.2 Unified Shader...3 1.3 Vorteile...6 1.4 Vergleich der Pipelines...8 2. Anwendung...11 2.1. Die fliegenden Kisten...11 2.2 Komplexer: Navier-Stokes...13 3. Ausblick und Fazit...14 3.1 AMD s Fusion...14 3.2 Aufbau AMD Fusion...15 4. Anhang...16 4.1 Literaturverzeichnis...16 2

1. Einführung 1.1 Stand der Technik Der Grafikchip, um den es hier gehen soll, ist der G80 auf der Geforce 8800 Karte. Auf diesem Chip des Grafikprozessorenentwicklers NVIDIA wurde mit der Unified-Shader-Bauweise erstmals eine Technologie eingeführt, die sich stark von der klassischen Shader-Bauweise wie sie auf herkömmlichen Grafikchips Verwendung findet, unterschied. Dieses zur neuesten Technologiegeneration von Grafikchips gehörende damalige (2006) Flaggschiff des Grafikkartenherstellers NVIDIA verfügt über 681 mio. Transistoren in 90nm Fertigungstechnik, d.hh diese befinden sich auf 484 mm 2 Chipfläche. Als verwendete Programmierschnittstelle für die 3D-Grafik kommt Direct3D10 zum Einsatz, das verwendete Modell für die Shader-Architektur ist bereits in der vierten Version. Durch die parallel arbeitenden 128 Streamprozessoren, die jeweils mit einer Frequenz on 1.35 Ghz arbeiten, addiert sich die Rechenleistung zu beeindruckenden 346 GFlop/s. 1.2 Unified Shader Die Unified-Shader, die auf dem G80 erstmals zum Einsatz kommen, stellen eine neue Art von Grafikprozessoren dar, sogenannte Alleskönner im Gegensatz zu den jeweils dedizierten herkömmlichen Shader. Hier folgt eine kurze Wiederholung zu den Shader, um den Übergang von der klassischen diskreten Shader-Architektur zu der Unified Architektur darzulegen: Es gibt drei Arten von Shadern, die Pixel-Shader für allgemeine Berechnungen der Bildpunkte wie die Pixelfarbänderungen und das Hinzufügen von 3D- und Lichteffekten, die Vertex-Shader zur Berechnung und dynamischen Veränderung von Objekten durch Verschiebung der Vertices (der Eckpunkten von dreidimensionalen Objekten), und die Geometry-Shader zur Erzeugung neuer geometrischer Objekte. Diese drei verschiedenen Typen von Shadern wurden wegen ihres jeweils stetig wachsenden Funktionsumfanges und den sich daraus ergebenden Überschneidungen zu einer Unified-Shader-Archtiektur zusammengefasst, bei der Hardwareseitig auf eine Unterscheidung der drei herkömmlichen Shadertypen verzichtet wird. 3

Dies hat den Vorteil, das man die Shadereinheiten nicht von vorneherein den jeweiligen Aufgabengebieten Pixel-, Vertex- und Geometrieshading widmet, und sie so möglicherweise bei ungleich verteilten Rechenaufgaben im Leerlauf verbleiben. Dieser Unterschied ist bei den Blockdiagrammen des G70 (Abb.1) und G80 (Abb. 2) zu sehen. Die erste Graphik zeigt den G70/71, bei dem noch diskrete Pixel- und Vertex-Shader existieren, und zwar 8 Vertex-Shader (*) und 24 Pixel- Shader (**). (*) (**) Abb. 1: Blockdiagramm G71 4

Die Unified-Shader-Architektur, nach der der G80-Grafikchip aufgebaut ist, fasst also nun die drei herkömmlichen Shadereinheiten zu einer Hardwareeinheit (*) zusammen. [1] (*) Abb. 2: Blockdiagramm G80 Man beachte den Datenfluss. Nachdem der Assembler seine Rechenoperationen durchgeführt hat, erreicht der Datenfluss den Vertex- Prozessor, welcher diesen sooft wie nötig durch die Unified-Shader schickt, bis alle nötigen Berechnungen ausgeführt wurden. Bei den Stream- Prozessoren, von welchen die Unified-Shader des G80 ja 128 Stück enthalten, handelt es es sich im Gegensatz zu älteren Generationen nicht um Vektor-, sondern um Skalarprozessoren, was zunächst sonderbar erscheint angesichts der Tatsache, dass einschlägige Literatur zu 3D-Grafik voll von Matrixberechnungen ist. Der Einsatz von skalaren Stream- Prozessoren jedoch erschafft eine viel effizientere und flexiblere Berechnungsmaschinerie, die gegenüber herkömmlichen Architekturen, bestehend aus vier Blöcken zu jeweils 32 dedizierten Prozessoren um den Geschwindigkeitsfaktor 2 übertrifft. 5

1.3 Vorteile Der Vorteil dieser Bauweise zeigt sich insbesondere, bei folgendem Anwendungsbeispiel, einmal auf der klassischen und einmal auf der neuen Architektur veranschaulicht: Hat man beispielsweise eine Szene (Abb. 3) bestehend aus vielen einzelnen zu berechnenden Vertices und wenigen Pixeln, Abb. 3: Szene mit vielen Vertices so verteilt sich die Rechenlast auf einem Chipsatz klassischer Bauweiser, wie bei diesem fiktiven mit einer festen Anzahl von 4 Vertex Shader- Einheiten und 8 Pixel-Shader-Einheiten, nicht ihren Anteilen entsprechend auf die Shadereinheiten, sondern die fest vorgegebene Anzahl an Pixel-, Vertex- und Geometrieshadern ist dafür verantwortlich, dass im Normalfall immer einige bis viele Shadereinheiten ungenutzt bleiben, während deren Rechenleistung an anderer Stelle fehlt. [2] Abb. 4: Szene mit vielen Pixeln Analoges gilt für Szenen bestehend aus vielen zu berechnenden Pixeln (Abb. 4), hier kommt es ebenso zu einer unsymmetrischen Auslastung der Shader, also zu einer ineffizienten Auslastung des Chipsatzes. 6

Die Unified Architektur ermöglicht nun, im entgegengesetzten Fall zu alten Chipsatzarchitekturen die Rechenlast zu Gunsten der Performance dynamisch auf die Streamprozessoren verteilt werden (Abb. 5 & 6): Abb. 5 Hierbei kommt es nun zu einer optimalen Auslastung von 12 der fiktiven 12 Shadereinheiten, da sowohl Pixel- als auch Vertexoperationen ausgeführt werden können. Abb. 6 7

1.4 Vergleich der Pipelines Veranschaulichen wir uns noch einmal das klassische Modell einer 3D- Pipeline (Abb. 7), wie sie in den letzten 20 Jahren eingesetzt worden ist: Der Datenfluss beginnt ganz oben, wo Vertices mit den verschiedenen Indizes, Kommandos und Texturen der GPU von der CPU übergeben werden. Dann müssen die Vertices die einzelnen Shader und anderen Verarbeitungsstufen eins nach dem anderen durchlaufen, bis sie in den Speicher geschrieben werden können. [3] Transform and Lightning --> vertex shading Dreiecks,-Punkt- und Linienoperationen Shading, Texturierung, Pixelshading Blending, Z-buffering, antialiasing breitbandiger und schneller mit der Zeit Abb. 7: 3D-Pipeline 8

Bei der Unified Pipeline und Shader Architektur des GeForce 8800 Designs konnte die Anzahl der zu durchlaufenden Verarbeitungsstufen drastisch gesenkt werden. Berechnungen, die mehrere Verarbeitungsstufen benötigen, können immer wieder, aber jeweils nur bei Bedarf, die Shader-Einheiten durchlaufen. 1.5 Unified Design Schematisch lässt sich das Unified Design (Abb. 8) folgendermassen darstellen: Die zu verarbeitenden Daten werden an den Eingangspuffer des Chips geschickt (im Bild links), werden von dem unified-shader-kern verarbeitet und von dieser aus über den Ausgangspuffer zurück an den Eingangspuffer geschickt, wo sie ihrer jeweiligen Verarbeitungsstufe entsprechend weiter berechnet werden. Dieser Vorgang wird genauso oft wiederholt, bis alle Operationen abgeschlossen sind und das Objekt (Vertex, Polygon) an das ROP-Subsystem (Raster-Operations) weitergegeben wird. Abb. 8: Unified Design 9

Als Konsequenz dieser neuartigen Architektur (Abb 9), die zu einer enormen Leistungssteigerung und Entlastung damit auch für den Hauptprozessor geführt hat, erschliessen sich einige neue Aufgabengebiete für die sogenannten Unified Stream Prozessoren, wie das sogenannte Geometry-Shading oder physikalische Berechnungen, auf die ich hier noch näher eingehen will. Abb. 9: Unified Pipeline 10

2. Anwendung 2.1. Die fliegenden Kisten Ein einfaches Beispiel für solche parallelen Rechenoperationen ist die Berechnung von fliegenden Kisten (vielen gleichartigen Objekten). Ziel ist es, die Positionen dieser fliegenden Objekte zu bestimmen. Dafür benötigen wir die jeweilige alte Position, die Geschwindigkeit der Box und die Zeit. Die Strecke, die ein Objekt zurücklegt, hängt von der Geschwindigkeit und der Zeit wie folgt ab: s = v t Deshalb werden die neuen Positionen der Kisten berechnet nach: P P 1 n = P2 = = P 1old P P 2 old nold + + + v 1 v v 2 n t t t Die serielle CPU würde nun immer nur eine Gleichung auf einmal berechnen können (viell. zwei oder vier mit einem Mehrkern Prozessor). 11

Abb. 10: CPU-Rechenschema 1 Ausserdem operiert sie aus dem Cache heraus und benötigt deshalb eine grosse, komplexe Kontrolllogik. Dieses Design wäre zur Berechnung reichlich ineffizient, wollte man viele dieser identischen Gleichungen möglichst gleichzeitig berechnen, da eine herkömmliche CPU eben nicht dafür ausgelegt ist, viele ähnliche Berechnungen bzw. Gleichungen simultan auszuführen bzw. zu lösen. Die GPGPU würde dieses Aufgabe hingegen deutlich schneller bewältigen können, aufgrund ihrer parallel aufgebauten Art. Die einzelnen Shader würden die Gleichungen simultan lösen und können darüber hinaus Informationen über den Grafikspeicher austauschen. Dabei werden diese simultan mittels Streaming befüllt. Abb. 11: GPU-Rechenschema 1 : ALU: Arithmetisch logische Kontrolleinheit 12

2.2 Komplexer: Navier-Stokes Was dieses stark vereinfachte Beispiel nicht berücksichtigt ist die Notwendigkeit, dass die einzelnen Threads (Ausführungsstränge) untereinander kommunizieren müssen, was jedoch nur auf Hardware möglich ist, die dem DirectX 10 Standard genügt. Man überlege sich beispielsweise die Simulation von untereinander wechselwirkenden Teilchen, wie zum Beispiel den Teilchen einer Strömung, einer Flüssigkeit oder eines Gases. [6] Ein solche Simulation wird realisiert durch die Berechnung eines Gleichungssystemes (viele ähnliche Gleichungen) welches aus der Navier- Stokes-Gleichung folgt: u t ρ ρ 1 = ( u ) u p + v ρ 2 u + F Hierbei ist u ρ das Geschwindigkeitsfeld (Abb. 12), p das Druckfeld, v die Viskosität (Zähheit) des Fluids, ρ die Dichte und F = (fx, fy) eine beliebige externe Kraft, welche auf das Fluid wirkt. Abb. 12: Geschwindigkeitsvektorfeld eines Fluids 13

Dieses Gleichungssystem bezieht den Einfluss aller benachbarten Teilchen bei der Berechnung eines jeden einzelnen mit ein. Nur dadurch, dass (wie es bei DirectX 10 der Fall ist) der Output als kontinuierlicher Datenstrom erfolgt, ist es möglich, dass alle diese Berechnungen parallel ausgeführt werden. Dabei wird der von den Streamprozessoren gemeinsam benutzte Speicher zur Interprozesskommunikation genutzt, was sich ebenfalls als gewaltiger Vorteil eben dieser Architektur erweist. 3. Ausblick und Fazit 3.1 AMD s Fusion Aufgrund der immer weiter wachsenden Fähigkeiten und Eignungen der GPU s, deren stetig steigender Rechenleistung und Fähigkeit, auch immer allgemeinere Aufgaben zu übernehmen, drängt sich den Chiparchitekten nun natürlich der Gedanke auf, die sich immer ähnlicher werdenden GPU und CPU in einem Chip, auf einer Matrix zu vereinigen. Denn Aufgrund der sehr ähnlichen Anforderungen dieser an ein System wie der Tatsache, dass es sich bei beiden um Processing Units (PUs) handelt, müssen beide mit großer Bandbreite und hoher Geschwindigkeit auf den Speicher zugreifen, wobei geringe Latenzen eine wichtige Rolle spielen und für beide es von Vorteil ist, auf viele Transistoren zurückgreifen zu können, bot sich dei Entwicklung eines Projektes zur Vereinigung von CPU und GPU an. AMD, der Chipfabrikant hat sich 2006 mit ATI, dem Grafikkartenhersteller zusammengeschlossen. Aus dieser Fusion auf Unternehmensebene soll nun eine auf der der Chipsätze entstehen, mit ebenjenem Namen, AMD-Fusion. (ist der Codename). 14

3.2 Aufbau AMD Fusion An einem weiteren Blockdiagramm (Abb.13) lässt sich die Architektur dieses neuartigen Prozessorkombinates veranschaulichen: Abb. 13: Blockdiagramm AMD Fusion Man erhofft sich von dieser Vereinigung Vorteile wie den schnelleren Speicherzugriff des GPU-Kerns auf den Arbeitsspeicher über den Prozessorsockel ( da dieser mit höherer Bandbreite an diesen angeschlossen ist als die PCI-e - oder AGP Schnittstelle, einen schnelleren Informationsaustausch zwischen CPU & GPU-Kernen, da Cache der CPU mit dem Buffer der GPU direkt über den hier zu sehenden Crossbar-Switch verbunden ist (geringere Latenzen sind die Folge), sowie ein besseres Rechenleistungs zu Watt Verhältnis (sprich: Stromeinsparungen) im Vergleich zu diskreten Systemen; Zielanwendungen sind natürlich in der Mobilsparte zu suchen. 15

3.3 Fazit Es ist zu abzusehen, dass der Geschwindigkeitsvorteil von GPU Implementierungen solcher Verfahren gegenüber seriellen Prozessoren immer größer wird. Für Simulationen bei denen die Genauigkeitsanforderungen nicht so hoch sind wie beispielsweise die die Darstellungen von Strömungen oder Partikelschwärmen in Filmen werden sie bereits heute eingesetzt. Falls sich jedoch der Trend der sich stetig verbessernden Fleißkommagenauigkeit und Speichererweiterung fortsetzt, so ist die Verwendung von GPGPUs für physikalisch korrekte Simulationen abzusehen, so z.b. im Fahrzeugbau. 4. Anhang 4.1 Literaturverzeichnis [1] NVIDIA: GeForce 8800 GPU Architecture Technical Brief 2007 [2] Jim Van Verth: Physical Simulation on GPUs 2007 [3] Phil Hester: Unleashing the Processing Powerhouse 2007 [4] Sarah Tariq and Ignacio Llamas (NVIDIA Developer Technology): Real-Time Volumetric Smoke, Fire and Water with Fluid Dynamics 2007 [5] Sarah Tariq and Ignacio Llamas (NVIDIA Developer Technology): Real-Time Volumetric Smoke using D3D10 2007 [6] Alexander Podlich und Jens Wollenhaupt: GPGPU Strömungssimulation 2006 [7] Irma Sejdic, Dominik Erdmann, Daniel Wilhelm & Christoph Kurz: Partikelsysteme & Schwärme 2006 16