GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben....

Preview:

Citation preview

GPU P iGPU ProgrammierungThorsten Grosch

WillkWillkommen…

…zur ersten Vorlesung GPU Programmierung!g g g

HeuteOrganisatorischesVorstellung von Team und VorlesungHistorischer Rückblick zu GPUs

2GPU Programmierung

D TDas Team

VorlesungVorlesungJun.-Prof. Thorsten GroschAG Computervisualistik

ÜbungenTobias Günthertobias.guenther@st.ovgu.de

3GPU Programmierung

Z V lZur Vorlesung

Programmierung der Grafik HardwareProgrammierung der Grafik Hardware

Vorlesung ist grob in zwei Abschnitte aufgeteiltVorlesung ist grob in zwei Abschnitte aufgeteiltVerbessertes Rendering (OpenGL Pipeline, ShaderProgrammierung)Allgemeine Probleme aus der Informatik (GPGPU, parallele Programmierung)

V2 + Ü2, 5 ECTS PunkteVorlesung Montag 11 - 13 Uhr Raum G29-335Vorlesung Montag, 11 13 Uhr, Raum G29 335Übung Donnerstag, 13-15 Uhr und 15 -17 Uhr, Rechnerraum G29-426

4GPU Programmierung

Ei dEinordnung

Wahlpflicht Vorlesung für Bachelor Studenten p g

WPF CV;B 4-6WPF IF;B 4-6WPF IngINF;B 4-6WPF WIF;B 4-6WPF WIF;B 4 6

5GPU Programmierung

VVoraussetzungen

• Grundlagen der Computergraphikg p g p

• Programmierung• C++ • OpenGL

• Aktuelle Grafikkarte benötigtÜbungen zur Shader Programmierung• Ü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

6GPU Programmierung

W b iWebseite

Folien, Übungsblätter und Programme sind auf der Webseite , g ghttp://www.rendering.ovgu.de/lehre/lehreordner/sommersemester_2011/gpu_programmierung.html

7GPU Programmierung

ÜbÜbung

• Jede Woche neues Übungsblatt auf der WebseiteJ g• 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-426426

• betreute Übung Do 13 -15 Uhr und 15 -17 Uhr• Windows, MS Visual Studio 2008, GLEW, CUDA, …

8GPU Programmierung

ÜbÜbung

• 50% der Übungsaufgaben sind Zulassung zur Prüfung g g g g

• 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• 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

üb h i i d

9GPU Programmierung

überschritten wird• Übernahme der Punkte bis zu 60% Übung+Projekt , 40% Prüfung

P j k h BProjektthemen, z.B.

……N-Body Simulations

Order independent

• Komplette Vorstellung möglicher Themen in erster Übung

Tone Mapping

Order-independentTransparency

• Komplette Vorstellung möglicher Themen in erster Übung• Eigenes Thema vorher mit Tobias Günther absprechen

• Wieviele Punkte sind mit diesem Thema möglichWieviele Punkte sind mit diesem Thema möglich• Keine alten Demos/Shader „recyclen“

10GPU Programmierung

Üb G29 426Ü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 Belegungsplansiehe Belegungsplan

• Zusätzliche Stühle wieder zurückbringen !Zusätzliche Stühle wieder zurückbringen !

11GPU Programmierung

Z V lZur Vorlesung

• Hinweis: Eine Vorlesung zur GPU ist immer „deprecated“g „ p• Beispiel/Übungs-Programme verwenden verschiedene Versionen

von OpenGLR E i kl d GPU• Rasante Entwicklung der GPU

• Erster Durchlauf der Vorlesung

• Es gibt viele verschiedene GPUs• Keine Garantie, dass die verwendeten Programme auf beliebigen , g g

GPUs lauffähig sind• Wir testen auf Laborrechnern in G29-426

Al G d ld f b i i R h• Also: Geduld gefragt beim anpassen an eigenen Rechner

• Bitte keine Laptops während der Vorlesung verwenden

12GPU Programmierung

• Bitte keine Laptops während der Vorlesung verwenden

Ei V t llEigene VorstellungThorsten Grosch

W bi i hWer bin ich

Thorsten GroschThorsten GroschSeit September 2009 Juniorprofessor für CV in MagdeburgDavor…Davor…

Studium Informatik TU DarmstadtFraunhofer IGD

• Lichtsimulation (Radiosity)Universität Koblenz Landau (die andere CV Uni)

Aufbau der Computergrafik Lehre• Aufbau der Computergrafik Lehre• Doktorarbeit

– Erweiterung von realen Bildern mit korrekter BeleuchtungPost-Doc am MPI Informatik Saarbrücken

14GPU Programmierung

IGD D t dtIGD Darmstadt

Studium Informatik TU DarmstadtFraunhofer IGD DarmstadtRadiosityRadiosity

– Finite-Elemente Verfahren für globale BeleuchtungPhysikalisch korrekt für diffuse Umgebungen– Physikalisch korrekt für diffuse Umgebungen

Refinement Photometrische Konsistenz Beleuchtung Auto Innenraum

15GPU Programmierung

Refinement Photometrische Konsistenz Beleuchtung Auto Innenraum

U i i ä K bl L dUniversität Koblenz-Landau

2002 Wechsel an Uni Koblenz zusammen mit Prof. Dr. Stefan Müller

N fb C t fikNeuaufbau Computergrafik Lehrstuhl

Vorlesungeno esu ge• Computergrafik 1 + Übung• Computergrafik 2 + Übung

Ph t li ti h• PhotorealistischeComputergrafik + Übung

ForschunggAugmentierte Bildsynthese

16GPU Programmierung

MPI I f ikMPI InformatikForschungsschwerpunkt

Gl b l B l h i E h iGlobale Beleuchtung in Echtzeit mit der Grafik Hardware

Coherent Shadow MapsCoherent Shadow Maps

17GPU Programmierung

Screen-space Directional Occlusion

B i i l I f Sh d MBeispiel: Imperfect Shadow Maps

Imperfect Shadow Maps: Ritschel, Grosch, Kim, Seidel, Dachsbacher, Kautz

18GPU Programmierung

Imperfect Shadow Maps: Ritschel, Grosch, Kim, Seidel, Dachsbacher, KautzSiggraph Asia 2008

Hi t i d GPUHistorie der GPUsDanke an John McLaughlinDanke an John McLaughlin

F üh G fik ChiFrühe Grafik-Chips

ANTIC (Atari 8-bit) - ca. 1979( )Text und Grafiken

Geometry Engine – SGI, ca. 1982

Input-Assembler

Vertex Operation

Matrix transformationenClippingMapping auf Ausgabe

Hull Shader

Tessellator

Mapping auf AusgabeGründung von SGI

Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Pixel Shader

Output Merger

20GPU Programmierung

F üh G fik ChiFrühe Grafik-Chips

Professional Graphics Controller - IBM ca.1984p640*480; 256 Farben bei 60FPS 320kb ram, Intel 8088 (8Mhz)

Input-AssemblerVertex Transform

3D Rotation and image clipping$4290

Hull Shader

Tessellator

Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Pixel Shader

Output Merger

21GPU Programmierung

F üh G fik ChiFrühe Grafik-Chips

SGI Iris 1400 (1984)( )3D WorkstationMotorola 68010 CPU, 10Mhz, 1.5 MB Ram

Input-AssemblerVertex Transform

1024x1024, 256 FarbenCa. 60.000 $

Hull Shader

Tessellator

Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Pixel Shader

Output Merger

22GPU Programmierung

F üh G fik ChiFrühe Grafik-ChipsSGI RealityEngine 1992

>1 mio. Dreiecke / sekunde100.000 $

Öffnen der IRIS GL von SGI

Input-Assembler

Vertex Operation

Öffnen der IRIS GL von SGIWird bekannt als OpenGL (ca. 1992)Erstmals cross-platform Grafik

Vertex Lighting

TessellatorErstmals cross platform GrafikProgramme Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Texturing

Alpha, Stencil, Depth - Test

23GPU Programmierung

Output Merger

Depth Test

F üh G fik ChiFrühe Grafik-ChipsNV1 - Nvidia 1995

Unterstützt nicht das ‘neue’ DirectXUnterstützt nicht das neue DirectXVoodoo – 3dfx 1996, ca. 300$

Erster reiner 3D Beschleuniger

Input-Assembler

Projektionste e e 3 esc eu ge

16-Bit, Texture Filter, Z-Buffer800x600, ca. 1 mio Dreiecke / Sekunde

Hull Shader

Tessellator

Glide API (3dfx) unter Spieleentwicklernbeliebter

OpenGL hat Performance Probleme

Domain Shader

Geometry Shader

St O t tOpenGL hat Performance Probleme(Treiber)Bis ende 90er

Stream Output

Rasterizer

Texturing

Alpha, Stencil, Depth - Test

24GPU Programmierung

Output Merger

Depth Test

Nv1 - Nvidia Voodoo - 3dfx

F üh G fik ChiFrühe Grafik-ChipsVoodoo 2/3 - ca. 1998

Unterstützt nur begrenzt AGPUnterstützt nur begrenzt AGPKein 32-BitTexturen Maximal 256x256

Input-Assembler

Projektion

Max 16MB RamAnfangs keine 2D Grafik

Hull Shader

Tessellator

Riva TNT2 - Nvidia März 1999Nvidia löst 3dfx Dominanz ab32bit Z Buffer stabile Treiber

Domain Shader

Geometry Shader

St O t t32bit, Z-Buffer, stabile Treiber Stream Output

Rasterizer

Texturing

Alpha, Stencil, Depth - Test

25GPU Programmierung

Output Merger

Depth Test

Riva TNT2 - Nvidia Voodoo 3 - 3dfx

E GPUErste GPUGeforce 256 (NV10) - Sept. 1999

Nvidia definiert die Bez “GPU”Nvidia definiert die Bez. GPUHardware Transformation und Beleuchtung (Hardware TnL)

Input-Assembler

Vertex Transform

Vorreiter zu Vertex und Pixel Shaderunits15Mio Polygone / Sekunde

Vertex Lighting

Tessellator

15Mio Polygone / Sekunde480Mio Pixel / SekundeBis zu 128MB Ram

Domain Shader

Geometry Shader

St O t t8 Stream Output

Rasterizer

Texturing

Output Merger

26GPU Programmierung Geforce 256 - Nvidia

P i b H dProgrammierbare HardwareGeforce 3 (NV20) - 2001

E d i l h dErste vertex und pixel shaderProgrammierungErstmals können Entwickler Features

Input-Assembler

Vertex Shader

sofort einbauenDirectX8 löst OpenGL Dominanz ab

(G i )

Hull Shader

Tessellator

(Gaming)Erstmals neuere Features als OpenGLErster Vertex und Pixel Shader support

Domain Shader

Geometry Shader

St O t tErster Vertex und Pixel Shader supportDirectX ist erstmals vor OpenGL

Stream Output

Rasterizer

Pixel Shader

Output Merger

27GPU Programmierung Geforce 3 - Nvidia

P i b H dProgrammierbare Hardware

SGI missachtet 3D-Karten für SpielerpGünstige ATI und Nvidia Karten improfessionellen Bereich

ATI d N idi i i i h i h h

Input-Assembler

Vertex Shader

ATI und Nvidia orientieren sich nicht mehran der von SGI vorgegebenen Pipeline

Programmierbare Shader

Hull Shader

TessellatorProgrammierbare Shader Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Pixel Shader

Output Merger

28GPU Programmierung

P i b H dProgrammierbare HardwareATI Radeon 9700 (R300) - 2002

E t Di t3D 9 0 K tErste Direct3D 9.0 KarteLöst Nvidia Geforce4 Dominanz ab

DirectX9 - 2002

Input-Assembler

Vertex ShaderDirectX9 2002

HLSL (High-Level Shader Programming)OpenGL bietet ab 2004 GLSL als

Hull Shader

Tessellator

AlternativeShader Model 2.0DirectX dominiert den Spielemarkt

Domain Shader

Geometry Shader

St O t tDirectX dominiert den Spielemarkt Stream Output

Rasterizer

Pixel Shader

Output Merger

29GPU ProgrammierungRadeon 9700 - ATI

P i b H dProgrammierbare HardwareNvidia Geforce 8 Serie - 2006

E C GPU i Di 3D 10Erste Consumer GPU mit Direct3D 10 supportEinführung von unified shaders

Input-Assembler

Vertex Shaderg

• Vertex und Pixel Shader vorher separat• Thread Architektur CUDA

Sh d M d l 4 0

Hull Shader

Tessellator

Shader Model 4.0• Geometry Shader

Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Pixel Shader

Output Merger

30GPU Programmierung

Geforce 8800 GTX - Nvidia

P i b H dProgrammierbare HardwareAti Radeon R600 - 2007

Basiert auf Xenos GPU (Xbox 360)Unified Shader ArchitekturDirectX10 Shader Model 4 0 OpenGL

Input-Assembler

Vertex ShaderDirectX10, Shader Model 4.0, OpenGL 3.0

Hull Shader

Tessellator

Domain Shader

Geometry Shader

St O t tStream Output

Rasterizer

Pixel Shader

Output MergerRadeon 3870X2 - ATI

31GPU Programmierung

HHeuteDirectX 11

Objekt Orientiertes Programmieren imObjekt-Orientiertes Programmieren imShaderTesselierung

Input-Assembler

Vertex Shader

Multi-ThreadingGPGPU - “Compute Shader”

A d B h

Hull Shader

Tessellator

Andere BerechnungenAusreichende GenauigkeitStream Output

Domain Shader

Geometry Shader

St O t tStream Output Stream Output

Rasterizer

Pixel Shader

Output Merger

32GPU Programmierung

Geforce GTX 590 - NvidiaRadeon HD5870 - ATI

M l i GPU SMulti-GPU Systeme

Mehrere GPUs zusammenschalten z.B. NVIDIA SLI, Tesla

33GPU Programmierung

GPU ClGPU Cluster

• Tianhe-1A• National Supercomputing Center, Tianjin, China• 7.168 NVIDIA Tesla M2050 GPUs• 14.338 Intel-Xeon-CPUs• Entspricht 50.000 Prozessoren• 2 56 Petaflops• 2,56 Petaflops• 4 Megawatt

• Aktuell größter Supercomputer• (Stand November 2010)

34GPU Programmierung

Di V l i Üb bli kDie Vorlesung im Überblick

G dl O GLGrundlagen OpenGLOpenGL Pipeline

D W E k kDer Weg vom Eckpunkt zum Pixel

TransformationenTransformationenProjektionenEinfache BeleuchtungEinfache BeleuchtungTexturierungViewportViewport

Teilweise WiederholungTeilweise Wiederholung aus Computergrafik 1, hier aber an Pipeline b h i b

36GPU Programmierung

beschrieben

F h i O GL P iFortgeschrittene OpenGL Programmierung

Blending• Blending• Logic OperationsSt il B ff• Stencil Buffer

• Display ListsV B ff Obj (VBO )• Vertex Buffer Objects (VBOs)

• Pixel Buffer Objects (PBOs)• …

37GPU Programmierung

Sh d P i 1Shader Programmierung 1• Vertex – und Fragment ProgramsPrograms

• OpenGL ShadingLanguage (GLSL)Language (GLSL)

• Multi-Pass Rendering• Multiple Render Targets• Multiple Render Targets• Deep Framebuffer

38GPU Programmierung

Sh d P i 2Shader Programmierung 2

• Geometry Shader

• Transform Feedback

• Tessellation Shader

39GPU Programmierung

GPU P i h ikGPU Programmiertechniken

• GPU nicht nur für Rendering• Scattering• Reduce• Voxelisierung

• OpenGL – DirectX UnterschiedeUnterschiede

40GPU Programmierung

P ll l P i i CUDAParallele Programmierung mit CUDA

• Die GPU als ParallelprozessorHost Device

Grid 1p• CUDA Programmiermodell

• Grid, Block, ThreadKernel

1

Grid 1

Block(0, 0)

Block(1, 0)

Block(2, 0)

• Grundlagen CUDA Programmierung• Funktionen und Variablen

K l F k i

Block(0, 1)

Block(1, 1)

Block(2, 1)

G id 2• Kernel Funktionen• „Hello World“ CUDA Programm• z B Addition zweier (großer)

Kernel 2

Grid 2

z.B. Addition zweier (großer) Vektoren, Skalarprodukt, Bildfilterung, …

Block (1, 1)

Thread Thread Thread Thread Thread

Thread(0, 1)

Thread(1, 1)

Thread(2, 1)

Thread(3, 1)

Thread(4, 1)

(0, 0) (1, 0) (2, 0) (3, 0) (4, 0)

41GPU Programmierung

Thread(0, 2)

Thread(1, 2)

Thread(2, 2)

Thread(3, 2)

Thread(4, 2)

P ll l P i i CUDAParallele Programmierung mit CUDA

• Speichertypen Gridp yp• Global, Texture, Constant,

Shared, Local, RegisterTh d d W

Block (0, 0)

Shared Memory

Block (1, 0)

Shared Memory• Threads and Warps• Thread Synchronisation

• Barrier

y

Registers Registers

y

Registers Registers

• Barrier• Atomic Operations• Page Locked Memory Local

Thread (0, 0)

Local

Thread (1, 0)

Local

Thread (0, 0)

Local

Thread (1, 0)

Page Locked Memory• Streams

GlobalMemory

LocalMemory

LocalMemory

LocalMemory

LocalMemory

Host

ConstantMemory

Texture

42GPU Programmierung

TextureMemory

P ll l P i i CUDAParallele Programmierung mit CUDA

General Purpose GPU mit CUDA, z.B.p ,

• Paralleles Sortieren auf der GPU• Partikelsysteme• Paralleles Lösen von Differentialgleichungen• …

43GPU Programmierung

Z i l V l

Datum Thema4.4.2011 Einführung, GPU History

Zeitplan Vorlesung 11.4.2011 OpenGL Wiederholung, Pipeline

18.4.2011 Fortgeschrittene OpenGL ProgrammierungErste Übung am 7.4.25.4.2011 -- Feiertag --

2.5.2011 Vertex / Fragment Shader, Multi-Pass Rendering, Deep Framebuffer, MRT

gEinführung, Bedienung der Rechner, Vorstellung der Projektthemen

Ausgabe 1 Übungsblatt9.5.2011 Geometry / Tessellation Shader, Transform

Feedback

16.5.2011 General Purpose GPU, DirectX – OpenGLV l i h

Ausgabe 1. Übungsblattnächste Woche auf der Webseite

Kontrolle 1. Übungsblatt Vergleich

23.5.2011 CUDA Einführung

30.5.2011 CUDA Speicher / Synchronisation

Kontrolle 1. Übungsblattübernächste Woche in der Übung

Ü6.6.2011 CUDA Teil 3

13.6.2011 -- Feiertag --

Keine Übung am 2.6.

Vorstellung der Projekte am 7 7 20.6.2011 CUDA Teil 4

27.6.2011 -- fällt voraussichtlich aus –

7.7.

44GPU Programmierung

4.7.2011 Wiederholung

LiLiteratur

OpenGL Shading Language3rd EditionRandi Rost

Addison Wesley

OpenGL Programming Guide7th Edition

David Shreiner Graphics ShadersAddison Wesley

Real-time Rendering3rd Edition

M. Bailey, S. CunninghamAK Peters

GPU G 1 33rd EditionT. Möller, E. Haines, N. Hofmann

AK PetersAlle Bücher sind in der Bibliothek als Präsenz – und Ausleihexemplar

GPU Gems 1 – 3ShaderX 1 – 7GPU Pro

45GPU Programmierung

Aktuelles zu OpenGL und GLSL: www.opengl.orgPräsenz – und Ausleihexemplar vorhanden

LiLiteratur

Programming Massively Parallel ProcessorsCUDA by ExampleJ. Sanders, E. Kandrot

Addison Wesley

Programming Massively Parallel ProcessorsD. Kirk, W. Hwu

Morgan Kaufmann

Aktuelles zu CUDA: www.nvidia.comAlle Bücher sind in der Bibliothek als Präsenz – und Ausleihexemplar

46GPU Programmierung

Präsenz – und Ausleihexemplar vorhanden

G fü hGenug für heute

Übung am Donnerstagg gAufteilung in zwei Gruppen

Nächste Vorlesung 11.4. OpenGL Wiederholung

47GPU Programmierung

Recommended