33
05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 1 / 33 05.11.12 | FB Computer Science | Scientific Computing | Raytracing in GA mittels OpenACC Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt [email protected]

Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 1 / 3305.11.12 | FB Computer Science | Scientific Computing |

Raytracing in GA mittelsOpenACC

Michael Burger, M.Sc.FG Scientific ComputingTU [email protected]

Page 2: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 2 / 33

Agenda

● GPU-Computing und moderne GPU Architekturen

● Raytracing in Geometrischer Algebra

● Resultate des Raytracings auf parallelen Architekturen

● Kurzeinführung OpenACC

Page 3: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 3 / 33

Ideen des GPU-Computing

● SIMD, pipelined, seriell● Viele Berechnungen relativ langsam, gepipelined ausführen statt schnell und

seriell● Gilt auch für Multicore-CPUs

Page 4: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 4 / 33

GPU Architektur: AMD Evergreen / Northern Islands

• OpenCL-Hierarchie:Kernel → Groups → Items

• Parallelität der Work Items ausnutzen

• Parallelität der Multivektoren-Berechnungen ausnutzen

• AMDs Verwendung von VLIW → Compilerabhängigkeit

• AMD APP Profiler ermöglicht Analysen

Page 5: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 5 / 33

GPU Architektur: Southern Islands

• 4D / 5D zu 1D

• GNC entspricht SIMD (64 Multiplay-ADD)

• Ziel: höhere Auslastung

• Dynamische Ressourcenzuteilung

Page 6: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 6 / 33

GPU Architektur: Nvidia Kepler

Page 7: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 7 / 33

GPU Architektur

Page 8: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 8 / 33

Raytracing

1. Berechne Sichtstrahl

2. Prüfe auf Schnitt mit Objekten

3. Finde den nächsten Schnittpunkt

4. Erzeuge Reflexionsstrahlen und Schattenfühler

5. Berechne lokale Farbe

6. Wiederhole mit Reflexionsstrahlen 2-5

Page 9: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 9 / 33

Raytracing auf CPU / GPU

• Raytracer mit Kugeln und Dreiecken als Szenenobjekte• Kugelraytracer als Proof of Concept

→ Ergebnisse vergleichbar mit Dreiecks-Raytracern• Kugeln als Hüllkugeln bei Dreiecken

→ Model-Splitting

Page 10: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 10 / 33

Raytracing auf CPU / GPU

• Mehr Objekte direkt darstellbar(Punkte, Kugeln, Ebenen, …)

• Produkte der Algebra nützlich

• Parallelität durch Multivektoren (pro Blade ein Koeffizient zu berechnen)

• x und n 3D Vektoren mit Basis e1, e2 und e3

Page 11: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 11 / 33

Raytracing auf CPU / GPU

Typ Sprache AlgebraStandard CPU C++ GA / LA

CPU Parallel C++, OpenMP GA / LA

Standard GPU OpenCL GA / LA

GPU Register Optimized OpenCL GA

GPU RAM Optimized OpenCL GA / LA

GPU Bounding-Hierarchy OpenCL GA / LA

Page 12: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 12 / 33

Raytracing auf CPU / GPU

• Zur Veranschaulichung und zum Szenen-Erstellen

• Leistungsmessungen mittels Konsolen-Renderer

• Funktionalitäten für FPGA

Page 13: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 13 / 33

Raytracing auf CPU / GPU

LA (CPU) GA (CPU) LA (GPU) GA (GPU)0

20

40

60

80

100

120

140

160

Renderingzeit-Vergleich

Renderzeit

Tracerplattform

Rel

ativ

e D

auer

in %

• Leistung auf CPU ~ Anzahl der Operationen

• GA nutzt Grafikhardware effektiver• Differenz beim Raycasting etwas größer als beim Raytracing

Page 14: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 14 / 33

Raytracing auf CPU / GPU

Cow Bunny Ramses Fertility0

0,5

1

1,5

2

2,5

3

3,5

Vergleich 4D / 1D Architektur

HD 6970HD 7850

Model

Ren

derz

eit i

n S

ekun

den

• Auf neuer Architektur deutlich effektiver berechenbar

Page 15: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 15 / 33

Raytracing auf CPU / GPU

Lux Renderer, LuxRay-Engine (OpenCL), Screenshot von www.ht4u.net

● AMDs HD7970 Ghz über viermal schneller als GTX680

Page 16: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 16 / 33

Raytracing auf CPU/GPU

HD6970 Q6600 V2p@100 Mhz V2p@2,4 Ghz0

200

400

600

800

1000

1200

0,86

953,45 931,31

34,49

Vergleich der PlattformenRaycasting ohne Shading

Plattform

Rec

henz

eit i

n S

ekun

den

Page 17: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 17 / 33

OpenACC

Eine sehr kurze Einführung in OpenACC :)

Page 18: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 18 / 33

Was ist OpenACC?

● Nutze Direktive im Quellcode● Seriellen Code auf CPU● Parallelen Code auf Accelerator

Page 19: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 19 / 33

OpenACC Pragmas

# pragma acc parallel [clause]

● Startet parallele Region● Workers auf dem Accelerator werden initialisiert, Anzahl während der Region

konstant

# pragma acc kernels [clause]● Compiler zerlegt den Code in Kernels, die auf Device ausgeführt werden● Normalerweise erhält jede Schleife einen Kernel

#pragma acc loop [clause]● Schleife wird parallelisiert

Page 20: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 20 / 33

OpenACC Pragmas

if( condition ) async [( scalar-integer-expression )] num_gangs( scalar-integer-expression ) num_workers( scalar-integer-expression ) vector_length( scalar-integer-expression )

Page 21: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 21 / 33

OpenACC Data Pragmas

#pragma acc data [clause]

if( condition ) copy( list ) copyin( list ) copyout( list ) create( list ) present( list ) present_or_copy( list ) present_or_copyin( list ) present_or_copyout( list ) present_or_create( list ) deviceptr( list )

Page 22: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 22 / 33

Position von OpenACC

● Wie fügt sich OpenACC in bestehende Struktur?● Flexibilität?● Aufwand?

Page 23: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 23 / 33

OpenACC und OpenMP

Page 24: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 24 / 33

Schön und gut, aber...

● Datenmanagement sehr wichtig● Datentransfer zeitintensiv

Page 25: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 25 / 33

Beispiel: Jacobi Solver

Page 26: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 26 / 33

Beispiel: Jacobi Solver

Page 27: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 27 / 33

Beispiel: Jacobi Solver

Page 28: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 28 / 33

Beispiel: Jacobi Solver

● Zeitverhalten der Version sehr schlecht● Profiling ergibt viel Aufwand für Datentransfer● Wenig Laufzeit für eigentliche Berechnungen

● Ursache?● Lösung?

Page 29: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 29 / 33

Beispiel: Jacobi Solver

Page 30: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 30 / 33

Beispiel: Jacobi Solver

● Optimierung durch Kenntnis der Zielhardware● Gang = #Cuda Blocks / Vector = #threads in Block● Vector sollte Vielfaches von 32 sein●

Page 31: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 31 / 33

Real-Wolrd Example OpenACC

Page 32: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 32 / 33

Real-World Example Raytracer?

● Erzielbarer Performancegewinn im Vergleich zu OpenMP?● Rückstand OpenCL-Variante auf gleicher Karte● AMD OpenCL vs Nvidia OpenACC

Page 33: Raytracing in GA mittels OpenACCGPU-Computing und moderne GPU Architekturen ... Prüfe auf Schnitt mit Objekten 3. Finde den nächsten Schnittpunkt 4. Erzeuge Reflexionsstrahlen und

05.11.12 | FB Computer Science | Scientific Computing | Michael Burger | 33 / 33

Quellen

● Michael Burger, „Das effiziente Raytracen von Dreiecksnetzen auf Mehrkernprozessoren, GPUs und FPGAs mittels Geometrischer Algebra“, 2011http://www.gaalop.de/wp-content/uploads/Masterarbeit-Michael-Burger.pdf

● Timo Stich, „GPU Computing with OpenACC Directives“, 2012https://sharepoint.campus.rwth-aachen.de/units/rz/HPC/public/Shared%20Documents/Forms/OpenACC%20Workshop%202012.aspx

● Timo Stich & Sandra Wienke, „OpenACC Workshop – Programming Lab“, 2012https://sharepoint.campus.rwth-aachen.de/units/rz/HPC/public/Shared%20Documents/Forms/OpenACC%20Workshop%202012.aspx

● Sandra Wienke et al, „OpenACC – First Experiences with Real-World Applications“, in Euro Par 2012

● OpenACC-Standard.Org, „The OpenACC Application Programming Interface“, 2011

● http://www.openacc.org/sites/default/files/OpenACC.1.0_0.pdf