GPU Programmierung. Thorsten Grosch

Ähnliche Dokumente
GPU Programmierung. Thorsten Grosch

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

Seminar Game Development Game Computer Graphics. Einleitung

Computer Graphik I Intro

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

OpenGL. (Open Graphic Library)

Grundlagen der Spieleprogrammierung

Computer Graphics Shader

Computergraphik I. Organisatorisches. G. Zachmann University of Bremen, Germany cgvr.informatik.uni-bremen.de

GPGPU mit NVIDIA CUDA

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Photorealistische Computergrafik. Thorsten Grosch

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

Predator G3. Premium Design. Advanced Technology. Immersive entertainment

Grafikkarten-Architektur

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

Windows Vista. Benedikt Brütting

Benutzerkonto unter Windows 2000

Informatikgrundlagen (WS 2015/2016)

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

Photorealistische Computergrafik. Thorsten Grosch

General Purpose Computation on GPUs

Grundlagen der Informatik

Datenübernahme easyjob 3.0 zu easyjob 4.0

Datenstrukturen und Algorithmen

Grundlagen der Informatik

Installation der SAS Foundation Software auf Windows

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Branching und Merging mit Visual Studio Team System

computer graphics & visualization

Proxmox VE - mit OpenSource Virtualisierung leicht gemacht

(Einführung in) Digitale Spiele

Lizenzierung von Windows Server 2012

Aktuelle Grafikleistungen

Hardware-Empfehlungen PrefSuite V2008

Switching. Übung 7 Spanning Tree. 7.1 Szenario

Bei unserem letzten Ausflug in die Welt der Highend Mainboards konnten wir bereits feststellen das Intel seine Hausaufgaben gemacht hat.

Jörn Loviscach Hochschule Bremen

Praktikum Grundlagen der Programmierung. Praktikumsübersicht. Dr. Karsten Tolle

Informatik. Kap 0 Organisation

Brückenkurs / Computer

Anleitung Markttechnik-Paket im TraderFox Trading-Desk (Version 1.0) Zur Bestellseite

OpenMP am Beispiel der Matrizenmultiplikation

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Handbuch B4000+ Preset Manager

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Einführung in die Informatik

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Anleitung für die Hausverwaltung

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

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

Dokumentation QHMI Plug-In Manager

Programmieren. Kap 0 Organisation

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Verteilte Systeme Prof. Dr. Stefan Fischer

Hinweise zur Installation der USB Treiber für Windows XP 32bit

Mikrocontroller Grundlagen. Markus Koch April 2011

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Anlegen eines DLRG Accounts

SharePoint Workspace 2010 Installieren & Konfigurieren

Schnelleinstieg Starter System. Version 3.2

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Eigene Dokumente, Fotos, Bilder etc. sichern

Drahtlosnetzwerke automatisch konfigurieren mit WCN (Windows Connect Now) unter Windows Vista

Online-Bestellung Tageskarten für Mitglieder des FC St. Pauli, die nicht im Besitz einer Dauer- oder Saisonkarte sind.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Ihr CMS für die eigene Facebook Page - 1

Installationshandbuch. Software Version 3.0

Anleitung zur Software Aktualisierung für die gemeinsamen Komponenten an der Maschine (Stand August 2005)

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Software Engineering II Projektorganisation und Management Organisatorische Hinweise

_Hardware Systemvoraussetzungen_

Leichte-Sprache-Bilder

Updatehinweise für die Version forma 5.5.5

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Installationsanleitung. Hardlock Internal PCI Hardlock Server Internal PCI

Aktivierung von Makros in den Erfassungshilfen

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Handbuch ZfEditor Stand

Einführung und Motivation

Moderne parallele Rechnerarchitekturen

Lizenzierung von System Center 2012

Architektur von Game-Engines

Datenbanken und Informationssysteme II

PC Software PPS-FM11 Windows Auswertung und Monitor BDE Betriebsdatenerfassung mit Terminals, RFID und SQL Client

SMART Newsletter Education Solutions April 2015

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, 11-13 Uhr und 13-15 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_2012/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 Übung diese Woche: Einführung, Projektvorstellung Zur Bearbeitung 10 Rechner mit NV 460 Karte in Raum G29-426 betreute Übung Do 11-13 Uhr und 13-15 Uhr Windows, MS Visual Studio 2008 / 2010, 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 Klausur 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 Klausur muss bestanden werden 9

Projektthemen, z.b. Physik Simulationen 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 Account: gpupro p Passwort: $gpupro* 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 Zugang zu Raum ISG Techniker (G29, 2. Stock, Raum 235) Zusätzliche Stühle wieder zurückbringen! Nichts im Raum verändern (Whiteboard, Stecker, usw.) 11

Zur Vorlesung Hinweis: Eine Vorlesung zur GPU ist immer deprecated Beispiel/Übungs-Programme verwenden verschiedene Versionen von OpenGL Rasante Entwicklung der GPU 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 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 aktuell: Geforce GTX 680 - 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 (mit GPUs) Spitzenreiter: K Computer, Kobe, Japan (Stand November 2011) 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

Verschiedene physikalische h Simulationen i mit CUDA Paralleles Lösen von Differentialgleichungen N-Body Deformationen Wärmeausbreitung Lichtausbreitung Können oft parallelisiert werden Verbindung CUDA mit OpenGL Quelle: NVIDIA 43

Parallele l Programmierung mit CUDA Paralleles Sortieren Bitonic Merge Sort Paralleler Speicherzugriff Scan 44

Zi Zeitplan Vorlesung Datum Thema 16.4.2012 Einführung, GPU History Erste Übung am 19.4. Einführung, Bedienung der 23.4.2012 OpenGL Wiederholung, Pipeline Rechner, Vorstellung der Projektthemen Ausgabe 1. Übungsblatt 752012 7.5.2012 Vertex / Fragment Shader, Multi-Pass nächste Woche auf der Rendering, Deep Framebuffer, MRT Webseite 14.5.2012 --- fällt aus --- Kontrolle 1. Übungsblatt übernächste Woche in der Übung Keine Übung am 17.5. 30.4.2012 Fortgeschrittene OpenGL Programmierung 21.5.2012 Geometry / Tessellation Shader, Transform Feedback 28.5.2012 --- Feiertag --- Ü 4.6.2012 General Purpose GPU, DirectX OpenGL Vergleich Vorstellung der Projekte am 11.6.2012 CUDA Einführung 12.7. 18.6.2012 CUDA Speicher / Synchronisation 25.6.2012 CUDA Physik Simulationen 272012 2.7.2012 CUDA Sortierung 9.7.2012 Wiederholung 45

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 1 3 Aktuelles zu OpenGL und GLSL: www.opengl.org 46

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

Genug für heute Übung am Donnerstag Nächste Vorlesung 23.4. OpenGL Wiederholung 48