47
GPU P i GPU P rogramm i erung Thorsten Grosch

GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

  • Upload
    vandiep

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

GPU P iGPU ProgrammierungThorsten Grosch

Page 2: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

WillkWillkommen…

…zur ersten Vorlesung GPU Programmierung!g g g

HeuteOrganisatorischesVorstellung von Team und VorlesungHistorischer Rückblick zu GPUs

2GPU Programmierung

Page 3: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

D TDas Team

VorlesungVorlesungJun.-Prof. Thorsten GroschAG Computervisualistik

ÜbungenTobias Gü[email protected]

3GPU Programmierung

Page 4: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 5: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 6: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 7: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 8: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

Ü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

Page 9: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

Ü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

Page 10: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 11: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

Ü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

Page 12: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 13: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

Ei V t llEigene VorstellungThorsten Grosch

Page 14: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 15: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 16: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 17: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 18: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 19: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 20: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 21: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 22: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 23: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 24: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 25: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 26: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 27: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 28: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 29: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 30: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 31: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 32: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 33: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

M l i GPU SMulti-GPU Systeme

Mehrere GPUs zusammenschalten z.B. NVIDIA SLI, Tesla

33GPU Programmierung

Page 34: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 35: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 36: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 37: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 38: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 39: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

Sh d P i 2Shader Programmierung 2

• Geometry Shader

• Transform Feedback

• Tessellation Shader

39GPU Programmierung

Page 40: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

GPU P i h ikGPU Programmiertechniken

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

• OpenGL – DirectX UnterschiedeUnterschiede

40GPU Programmierung

Page 41: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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)

Page 42: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 43: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 44: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 45: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 46: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

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

Page 47: GPU P iGPU Programmierung - rendering.ovgu.de · bhib GPU Programmierung 36 beschrieben. FhiFortgeschrittene OGLOpenGL PiProgrammierung • Blending •Logic Operations • St ilStencil

G fü hGenug für heute

Übung am Donnerstagg gAufteilung in zwei Gruppen

Nächste Vorlesung 11.4. OpenGL Wiederholung

47GPU Programmierung