GPU Programmierung. Thorsten Grosch

Ähnliche Dokumente
GPU Programmierung. Thorsten Grosch

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

Computer Graphics Shader

Photorealistische Computergrafik. Thorsten Grosch

Grundlagen der Spieleprogrammierung

Photorealistische Computergrafik. Thorsten Grosch

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

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

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

General Purpose Computation on GPUs

Grafikkarten-Architektur

Aktuelle Grafikleistungen

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

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

Seminar Game Development Game Computer Graphics. Einleitung

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

Computer Graphik I Generative Computergraphik Intro

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

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

Seminar: Grafikprogrammierung

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

Shader. Computer Graphics: Shader

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

Compute Unified Device Architecture CUDA

Masterpraktikum Scientific Computing

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

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

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

Computergrafik Universität Osnabrück, Henning Wenke,

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)

Graphische Datenverarbeitung I WS 2017/2018

Computergrafik Universität Osnabrück, Henning Wenke,

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Eine kurze Geschichte der Grafikkarten

GPGPU-Programmierung

GPU-Programmierung: OpenCL

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr.

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

OpenCL. OpenCL. Boris Totev, Cornelius Knap

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

OpenGL und die Fixed-Function-Pipeline

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

Thema: Hardware-Shader

Kapitel 4: Schattenberechnung

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Grundlagen der 3D-Grafik

GPGPU-Programmierung

(5) GPU Einführung. Vorlesung Computergraphik II Stefan Müller. Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich KOBLENZ LANDAU

Yilmaz, Tolga MatNr: Mesaud, Elias MatNr:

BlendaX Grundlagen der Computergrafik

Grundlagen der Spieleprogrammierung

Seminar GPU-Programmierung/Parallelverarbeitung


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

Computergrafik Universität Osnabrück, Henning Wenke,

Echtzeit Videoverarbeitung

0 Einführung. Computergrafik. Computergrafik. Abteilung für Bild- und Signalverarbeitung

Multicore-Architekturen

Eine Einführung Computergrafik SS14 Timo Bourdon

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

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

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

Seminar: GPU-Methoden für die Visualisierung und Computergraphik

Proseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach

Stream Processing und High- Level GPGPU Sprachen

GPGPU mit NVIDIA CUDA

OpenGL. (Open Graphic Library)

Volumenakquise. Vortrag von Benjamin Gayer

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

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

Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen

(5) GPU Programmierung

Christina Nell. 3D-Computergrafik

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

Praktikum Augmented Reality Fernrohr -Felix Löhr-

Die Welt der Shader. Fortgeschrittene Techniken III

Instant Radiosity. 14. Vorlesung. Thorsten Grosch

World of Warcraft. Mindestvoraussetzungen

Eine Einführung in die Architektur moderner Graphikprozessoren

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

Partikelvisualisierung

Transkript:

Thorsten Grosch

Willkommen zur ersten Vorlesung! g Heute Organisatorisches Vorstellung von Team und Vorlesung Historischer Rückblick zu GPUs 2

Das Team Vorlesung Jun.-Prof. Thorsten Grosch AG Computervisualistik Übungen Tobias Günther tobias.guenther@st.ovgu.de 3

Zur Vorlesung Programmierung der Grafik Hardware Vorlesung ist grob in zwei Abschnitte aufgeteilt Verbessertes Rendering (OpenGL Pipeline, Shader Programmierung) Allgemeine Probleme aus der Informatik (GPGPU, parallele Programmierung) V2 + Ü2, 5 ECTS Punkte Vorlesung Montag, 11-13 Uhr, Raum G29-335 Übung Donnerstag, 13-15 Uhr und 15-17 Uhr, Rechnerraum G29-426 4

Einordnung Wahlpflicht Vorlesung für Bachelor Studenten WPF CV;B 4-6 WPF IF;B 4-6 WPF IngINF;B 4-6 WPF WIF;B 4-6 5

Voraussetzungen Grundlagen der Computergraphik p Programmierung C++ OpenGL Aktuelle Grafikkarte benötigt Übungen zur Shader Programmierung Einfache OpenGL Programmierung bis hin zu Features aktueller GPU Generationen Parallele Programmierung mit CUDA: nur NVIDIA Karten Rechnerraum G29-426: 10 Rechner mit NV 460 GPU 6

Wb Webseite Folien, Übungsblätter und Programme sind auf der Webseite http://www.rendering.ovgu.de/lehre/lehreordner/sommersemes ter_2011/gpu_programmierung.html 7

Übung Jede Woche neues Übungsblatt auf der Webseite Nächste Woche erstes Blatt Ausgabe jeweils spätestens Mittwochs Rückgabe eine Woche später in den Übungen Bearbeitung in 2-er Teams möglich Zur Bearbeitung 10 Rechner mit NV 460 Karte in Raum G29-426 betreute Übung Do 13-15 Uhr und 15-17 Uhr Windows, MS Visual Studio 2008, GLEW, CUDA, 8

Übung 50% der Übungsaufgaben g sind Zulassung zur Prüfung Zusatzpunkte durch eigenes Projekt möglich Liste möglicher Themen siehe erste Übung Auch eigene Idee möglich Absprache mit Tobias Günther Prüfung am Ende des Semesters Bei hoher Teilnehmerzahl schriftlich, sonst mündlich Note setzt sich zusammen aus 50% Übung + Projekt, 50% Prüfung Falls durch Projekt die Maximalanzahl der Übungspunkte überschritten wird Übernahme der Punkte bis zu 60% Übung+Projekt, 40% Prüfung 9

Projektthemen, z.b. N-Body Simulations Tone Mapping Order-independent Transparency Komplette Vorstellung möglicher Themen in erster Übung Eigenes Thema vorher mit Tobias Günther absprechen Wieviele Punkte sind mit diesem Thema möglich Keine alten Demos/Shader recyclen 10

Übungsraum G29-426 Gleiches home-verzeichnis für alle Daten für alle sichtbar Am besten auf lokaler Platte (D) arbeiten und eigene Daten auf Memory Stick kopieren Raum kann auch außerhalb der Übungszeiten genutzt werden siehe Belegungsplan Zusätzliche Stühle wieder zurückbringen! 11

Zur Vorlesung Hinweis: Eine Vorlesung zur GPU ist immer deprecated Beispiel/Übungs-Programme verwenden verschiedene Versionen von OpenGL Rasante Entwicklung der GPU Erster Durchlauf der Vorlesung Es gibt viele verschiedene GPUs Keine Garantie, dass die verwendeten Programme auf beliebigen GPUs lauffähig sind Wir testen auf Laborrechnern in G29-426 Also: Geduld gefragt beim anpassen an eigenen Rechner Bitte keine Laptops während der Vorlesung verwenden 12

Eigene Vorstellung Thorsten Grosch

Wer bin ich Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg Davor Studium Informatik TU Darmstadt Fraunhofer IGD Lichtsimulation (Radiosity) Universität Koblenz Landau (die andere CV Uni) Aufbau der Computergrafik Lehre Doktorarbeit Erweiterung von realen Bildern mit korrekter Beleuchtung Post-Doc am MPI Informatik Saarbrücken 14

IGD Darmstadt Studium Informatik TU Darmstadt Fraunhofer IGD Darmstadt Radiosity Finite-Elemente Verfahren für globale Beleuchtung Physikalisch korrekt für diffuse Umgebungen Refinement Photometrische Konsistenz Beleuchtung Auto Innenraum 15

Universität i Koblenz-Landau 2002 Wechsel an Uni Koblenz zusammen mit Prof. Dr. Stefan Müller Neuaufbau Computergrafik Lehrstuhl Vorlesungen Computergrafik 1 + Übung Computergrafik 2 + Übung Photorealistische ti h Computergrafik + Übung Forschung Augmentierte Bildsynthese 16

MPI Informatik Forschungsschwerpunkt Globale l Beleuchtung in Echtzeit mit der Grafik Hardware Coherent Shadow Maps Screen-space Directional Occlusion 17

Bi Beispiel: ilimperfect Shadow Maps Imperfect Shadow Maps: Ritschel, Grosch, Kim, Seidel, Dachsbacher, Kautz Siggraph Asia 2008 18

Historie i der GPUs Danke an John McLaughlin

Füh Frühe Grafik-Chips ANTIC (Atari 8-bit) - ca. 1979 Text und Grafiken Geometry Engine SGI, ca. 1982 Matrix transformationen Clipping Mapping auf Ausgabe Gründung von SGI Input-Assembler Vertex Operation Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger 20

Füh Frühe Grafik-Chips Professional Graphics Controller - IBM ca.1984 640*480; 256 Farben bei 60FPS 320kb ram, Intel 8088 (8Mhz) 3D Rotation and image clipping $4290 Input-Assembler Vertex Transform Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger 21

Füh Frühe Grafik-Chips SGI Iris 1400 (1984) 3D Workstation Motorola 68010 CPU, 10Mhz, 1.5 MB Ram 1024x1024, 256 Farben Ca. 60.000 $ Input-Assembler Vertex Transform Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger 22

Füh Frühe Grafik-Chips SGI RealityEngine 1992 >1 mio. Dreiecke / sekunde 100.000 $ Öffnen der IRIS GL von SGI Wird bekannt als OpenGL (ca. 1992) Erstmals cross-platform Grafik Programme Input-Assembler Vertex Operation Vertex Lighting Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Texturing Alpha, Stencil, Depth - Test Output Merger 23

Füh Frühe Grafik-Chips NV1 - Nvidia 1995 Unterstützt nicht das neue DirectX Voodoo 3dfx 1996, ca. 300$ Erster reiner e 3D Beschleuniger eu 16-Bit, Texture Filter, Z-Buffer 800x600, ca. 1 mio Dreiecke / Sekunde Glide API (3dfx) unter Spieleentwicklern beliebter OpenGL hat Performance Probleme (Treiber) Bis ende 90er Nv1 - Nvidia Voodoo - 3dfx Input-Assembler Projektion Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Texturing Alpha, Stencil, Depth - Test Output Merger 24

Füh Frühe Grafik-Chips Voodoo 2/3 - ca. 1998 Unterstützt nur begrenzt AGP Kein 32-Bit Texturen Maximal 256x256 Max 16MB Ram Anfangs keine 2D Grafik Riva TNT2 - Nvidia März 1999 Nvidia löst 3dfx Dominanz ab 32bit, Z-Buffer, stabile Treiber Input-Assembler Projektion Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Texturing Alpha, Stencil, Depth - Test Output Merger Riva TNT2 - Nvidia Voodoo 3-3dfx 25

Erste GPU Geforce 256 (NV10) - Sept. 1999 Nvidia definiert die Bez. GPU Hardware Transformation und Beleuchtung (Hardware TnL) Vorreiter zu Vertex und Pixel Shader units 15Mio Polygone / Sekunde 480Mio Pixel / Sekunde Bis zu 128MB Ram Input-Assembler Vertex Transform Vertex Lighting Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Texturing Output Merger Geforce 256 - Nvidia 26

Programmierbare Hardware Geforce 3 (NV20) - 2001 Erste vertex und pixel shader hd Programmierung Erstmals können Entwickler Features sofort einbauen DirectX8 löst OpenGL Dominanz ab (Gaming) Erstmals neuere Features als OpenGL Erster Vertex und Pixel Shader support DirectX ist erstmals vor OpenGL Input-Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger Geforce 3 - Nvidia 27

Programmierbare Hardware SGI missachtet 3D-Karten für Spieler Günstige ATI und Nvidia Karten im professionellen Bereich ATI und Nidi Nvidia orientieren i sich ihnicht mehr an der von SGI vorgegebenen Pipeline Programmierbare Shader Input-Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Rasterizer Stream Output t Pixel Shader Output Merger 28

Programmierbare Hardware ATI Radeon 9700 (R300) - 2002 Erste Direct3D 9.0 Karte Löst Nvidia Geforce4 Dominanz ab DirectX9-2002 HLSL (High-Level Shader Programming) OpenGL bietet ab 2004 GLSL als Alternative Shader Model 2.0 DirectX dominiert den Spielemarkt Input-Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger Radeon 9700 - ATI 29

Programmierbare Hardware Nvidia Geforce 8 Serie - 2006 Erste Consumer GPU mit Direct3D 10 support Einführung von unified shaders Vertex und Pixel Shader vorher separat Thread Architektur CUDA Shader Model l40 4.0 Geometry Shader Input-Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger Geforce 8800 GTX - Nvidia 30

Programmierbare Hardware Ati Radeon R600-2007 Basiert auf Xenos GPU (Xbox 360) Unified Shader Architektur DirectX10, Shader Model 4.0, OpenGL 3.0 Input-Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Rasterizer Stream Output t Radeon 3870X2 - ATI Pixel Shader Output Merger 31

Heute DirectX 11 Objekt-OrientiertesOrientiertes Programmieren im Shader Tesselierung Multi-Threading GPGPU - Compute Shader Andere Berechnungen Ausreichende Genauigkeit Stream Output Input-Assembler Vertex Shader Hull Shader Tessellator Domain Shader Geometry Shader Stream Output t Rasterizer Pixel Shader Output Merger Radeon HD5870 - ATI Geforce GTX 590 - Nvidia 32

Multi-GPU Systeme Mehrere GPUs zusammenschalten z.b. NVIDIA SLI, Tesla 33

GPU Cluster Tianhe-1A National Supercomputing Center, Tianjin, China 7.168 NVIDIA Tesla M2050 GPUs 14.338 Intel-Xeon-CPUs Entspricht 50.000 Prozessoren 256Petaflops 2,56 4 Megawatt Aktuell größter Supercomputer (Stand November 2010) 34

Die Vorlesung im Überblickbli

Grundlagen OpenGL OpenGL Pipeline Der Weg vom Eckpunkt k zum Pixel Transformationen Projektionen Einfache Beleuchtung Texturierung Viewport Teilweise Wiederholung aus Computergrafik 1, hier aber an Pipeline beschrieben b 36

Fortgeschrittene OpenGLProgrammierung Blending Logic Operations Stencil Buffer Display Lists Vertex Buffer Objects (VBOs) Pixel Buffer Objects (PBOs) 37

Shader Programmierung 1 Vertex und Fragment Programs OpenGL Shading Language (GLSL) Multi-Pass Rendering Multiple Render Targets Deep Framebuffer 38

Shader Programmierung 2 Geometry Shader Transform Feedback Tessellation Shader 39

GPU Programmiertechniken ik GPU nicht nur für Rendering Scattering Reduce Voxelisierung OpenGL DirectX Unterschiede 40

Parallele l Programmierung mit CUDA Die GPU als Parallelprozessor CUDA Programmiermodell Grid, Block, Thread Grundlagen CUDA Programmierung Funktionen und Variablen KernelFunktionen Hello World CUDA Programm z.b. Addition zweier (großer) Vektoren, Skalarprodukt, Bildfilterung, Host Kernel 1 Kernel 2 Block (1, 1) Device Grid 1 Block (0, 0) Block (0, 1) Gid2 Grid Block (1, 0) Block (1, 1) Thread Thread Thread Thread Thread (0, 0) (1, 0) (2, 0) (3, 0) (4, 0) Block (2, 0) Block (2, 1) Thread (0, 1) Thread (1, 1) Thread (2, 1) Thread (3, 1) Thread (4, 1) Thread (0, 2) Thread (1, 2) Thread (2, 2) Thread (3, 2) Thread (4, 2) 41

Parallele l Programmierung mit CUDA Speichertypen Global, Texture, Constant, Shared, Local, Register Threads and Warps Thread Synchronisation Barrier Atomic Operations Page Locked Memory Streams Host Grid Block (0, 0) Registers Local Memory Shared Memory Thread (0, 0) Global Memory Registers Thread (1, 0) Local Memory Block (1, 0) Shared Memory Registers Registers Thread (0, 0) Thread (1, 0) Local Local Memory Memory Constant Memory Texture Memory 42

Parallele l Programmierung mit CUDA General Purpose GPU mit CUDA, z.b. Paralleles Sortieren auf der GPU Partikelsysteme Paralleles Lösen von Differentialgleichungen 43

Datum Thema 4.4.2011 Einführung, GPU History Zi Zeitplan Vorlesung 11.4.2011 OpenGL Wiederholung, Pipeline Erste Übung am 7.4. Einführung, Bedienung der Rechner, Vorstellung der Projektthemen Ausgabe 1. Übungsblatt nächste Woche auf der Webseite Kontrolle 1. Übungsblatt übernächste Woche in der Übung Keine Übung am 2.6. 18.4.2011 Fortgeschrittene OpenGL Programmierung 25.4.2011 -- Feiertag -- 2.5.2011 Vertex / Fragment Shader, Multi-Pass Rendering, Deep Framebuffer, MRT 9.5.2011 Geometry / Tessellation Shader, Transform Feedback 16.5.2011 General Purpose GPU, DirectX OpenGL Vergleich 23.5.2011 CUDA Einführung 30.5.2011 CUDA Speicher / Synchronisation 6.6.2011 CUDA Teil 3 Vorstellung der Projekte am 7.7. 7 20.6.2011 CUDA Teil 4 13.6.2011 -- Feiertag -- 27.6.2011 -- fällt voraussichtlich aus 4.7.2011 Wiederholung 44

Literatur OpenGL Shading Language 3rd Edition Randi Rost Addison Wesley OpenGL Programming Guide 7th Edition David Shreiner Addison Wesley Graphics Shaders M. Bailey, S. Cunningham AK Peters Real-time Rendering 3rd Edition T. Möller, E. Haines, N. Hofmann AK Peters Alle Bücher sind in der Bibliothek als Präsenz und Ausleihexemplar vorhanden GPU Gems 1 3 ShaderX 1 7 GPU Pro Aktuelles zu OpenGL und GLSL: www.opengl.org 45

Literatur CUDA by Example J. Sanders, E. Kandrot Addison Wesley Programming Massively Parallel Processors D. Kirk, W. Hwu Morgan Kaufmann Alle Bücher sind in der Bibliothek als Präsenz und Ausleihexemplar vorhanden Aktuelles zu CUDA: www.nvidia.com 46

Genug für heute Übung am Donnerstag Aufteilung in zwei Gruppen Nächste Vorlesung 11.4. OpenGL Wiederholung 47