Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Wissenschaftliches Programmieren mit CUDA Christian Renneke Daniel Klimeck Betreuer: Dipl.-Ing. Bastian Bandlow.

Ähnliche Präsentationen


Präsentation zum Thema: "Wissenschaftliches Programmieren mit CUDA Christian Renneke Daniel Klimeck Betreuer: Dipl.-Ing. Bastian Bandlow."—  Präsentation transkript:

1 Wissenschaftliches Programmieren mit CUDA Christian Renneke Daniel Klimeck Betreuer: Dipl.-Ing. Bastian Bandlow

2 1 Univ. Paderborn, FG Theoretische Elektrotechnik 1 Leitfaden Motivation Was ist CUDA ? NVIDIA Grafikkarte Programmierung FIT im Zeitbereich Ergebnisse Projektverlauf Zusammenfassung

3 2 Univ. Paderborn, FG Theoretische Elektrotechnik 2 Motivation Beschleunigung von Simulationen mit Hilfe von Grafikkartenprozessoren (GPU) –Ausnutzung der massiven Parallelität Zeitbereichsintegration in finiter Integration (FIT) –Ähnlich dem Updateschema aus Finite Differenzen im Zeitbereich

4 3 Univ. Paderborn, FG Theoretische Elektrotechnik 3 Was ist CUDA ? Compute Unified Device Architecture ( CUDA ) Entwickelt von NVIDIA Ermöglicht die Benutzung des Grafikprozessors zur Beschleunigung wissenschaftlicher und technischer Berechnungen Standard-C-Entwicklungsumgebung Anwendungsbeispiele: Numerik Grafik Signalverarbeitung Wissenschaft

5 4 Univ. Paderborn, FG Theoretische Elektrotechnik 4 Vergleich GPU v. CPU Hardware-Modell Quelle: NVIDIA CUDA Programming Guide

6 5 Univ. Paderborn, FG Theoretische Elektrotechnik 5 Vergleich GPU v. CPU NVIDIA GeForce GTX 260 Stream-Prozessoren: Multiprozessoren, mit je 8 Kernen Core-Taktfrequenz : 576 MHz Speicher-Taktfrequenz: 999 MHz Speicher : 896MB Unterstützt Datentyp DOUBLE 1,4 Mrd. Transistoren Vergleich: Intel Core i7 (11/2008) 731 Millionen Transistoren Quelle:

7 6 Univ. Paderborn, FG Theoretische Elektrotechnik 6 Programmierung Quelle: NVIDIA CUDA Programming Guide Host Application CUDA Libraries CUDA Runtime CUDA Driver Device Aus C: CublasDdot().cu Datei, mit selbstgeschriebenen Kernel auf RuntimeAbstraktion.cu Datei, mit voller Kontrolle, aber alles von Hand

8 7 Univ. Paderborn, FG Theoretische Elektrotechnik 7 Programmierung C Program Sequential Execution Serial code Parallel kernel Kernel0 >>() Serial code Quelle: NVIDIA CUDA Programming Guide Host Device Grid 0 Host Daten draufkopieren Daten / Ergebnisse runterkopieren

9 8 Univ. Paderborn, FG Theoretische Elektrotechnik 8 FIT im Zeitbereich Untersuchung der Leistungsfähigkeit von CUDA Ausführen einer Simulation mit Unterstützung der GPU –Hier: Berechnung der Ströme und Spannungen in einem Koaxialleiter. –Anregung: Konzentrierte Bauelemente an der Stirnseite. Gausspuls als Anregung. –Berechnung der E- und H-Felder zu nt Zeitschritten mittels Leapfrog- Algorithmus Quelle: Übung zu Elektromagnetischen Feldsimulation, Projekt 7 Inhomogen gefüllter Koaxialleiter Elektr. Randbedingung Innenleiter

10 9 Univ. Paderborn, FG Theoretische Elektrotechnik 9 FIT im Zeitbereich Leapfrog-Algorithmus –Umsetzung im Quellcode: Schleife zum Durchlaufen der Zeitschritte. Statt der seriellen Berechnung der Felder an jedem Gitterpunkt Übergabe an die parallel arbeitende GPU

11 10 Univ. Paderborn, FG Theoretische Elektrotechnik 10 FIT im Zeitbereich Curlmatrix Quelle: Vorlesungsskript zu Elekromagnetische Feldsimulation N u *N v NuNu 1

12 11 Univ. Paderborn, FG Theoretische Elektrotechnik 11 Programmierung Leapfrog Algorithmus Beispiel: H-Update umgesetzt in C-Code

13 12 Univ. Paderborn, FG Theoretische Elektrotechnik 12 Programmierung Leapfrog Algorithmus Beispiel: H-Update als Kernel-Funktion Implementierung der Curl-Matrix

14 13 Univ. Paderborn, FG Theoretische Elektrotechnik 13 Leapfrog Algorithmus –Aufruf der Kernel-Funktion –Berechnung der aktuellen H x -Komponente, aus der alten, zwei E x - und zwei E z -Komponenten. Programmierung

15 14 Univ. Paderborn, FG Theoretische Elektrotechnik 14 Ergebnisse Struktur 1: Inhomogener Koaxialleiter Anregung: E- /H-Feld einer TEM-Welle AnzahlLaufzeitergebnisse in sec Gitterpunkte ZeitschritteMatlabMex-C CUDA ,80,71,1

16 15 Univ. Paderborn, FG Theoretische Elektrotechnik 15 Ergebnisse Struktur 2: Bragg Reflektor –4 Schichten Anzahl Gitterpunkte Zeitschritte Laufzeitergebnisse in sec CUDA9,4 Mex-C - seriell95,7 Mex-C - openmp(4)53,1

17 16 Univ. Paderborn, FG Theoretische Elektrotechnik 16 Ergebnisse Struktur 3: Bragg Reflektor –20 Schichten Anzahl Gitterpunkte Zeitschritte Laufzeitergebnisse in sec CUDA93 Mex-C - seriell1456 Mex-C - openmp(4)696

18 17 Univ. Paderborn, FG Theoretische Elektrotechnik 17 Ergebnisse Struktur 4: Bragg Reflektor –35 Schichten Anzahl Gitterpunkte Zeitschritte Laufzeitergebnisse in sec CUDA568 Mex-C - seriell8991 Mex-C - openmp(4)4853

19 18 Univ. Paderborn, FG Theoretische Elektrotechnik 18 Ergebnisse Vergleich der Methoden Gitterpunkte * ZeitschritteCUDAMEX-C seriell MEX-C openmp (4) , x 8x

20 19 Univ. Paderborn, FG Theoretische Elektrotechnik 19 Ergebnisse im Vergleich S-Parameter Bragg Reflektor (20 Schichten, Struktur 3)

21 20 Univ. Paderborn, FG Theoretische Elektrotechnik 20 Ergebnisse im Vergleich Zeitsignale

22 21 Univ. Paderborn, FG Theoretische Elektrotechnik 21 Projektverlauf (1) Einarbeitung und Inbetriebnahme des Systems Implementierung des Leapfrog – Algorithmus: –in einzelnen Funktionen unter MEX-C –in einer Funktion unter MEX-C Testprogramms auf der GPU –Kleines Beispiel in CUDA Implementierung des Leapfrog – Algorithmus auf der GPU –Zeitupdate-Schema in CUDA

23 22 Univ. Paderborn, FG Theoretische Elektrotechnik 22 Projektverlauf (2) Simulation und Aufnahme der Laufzeitergebnisse von verschiedenen Leapfrog – Varianten Bewertung der Effizienz von CUDA Dokumentation

24 23 Univ. Paderborn, FG Theoretische Elektrotechnik 23 Zusammenfassung Programmieren mit CUDA lohnt sich ab einer gewissen Komplexität des Problems Debuggen ist umständlich CUDA reduziert wesentlich die Berechnungszeit Keine Genauigkeitsverluste Geringe Kosten der Grafikkarte SDK kostenfrei erhältlich

25 24 Univ. Paderborn, FG Theoretische Elektrotechnik 24 Vielen Dank für Ihre Aufmerksamkeit!


Herunterladen ppt "Wissenschaftliches Programmieren mit CUDA Christian Renneke Daniel Klimeck Betreuer: Dipl.-Ing. Bastian Bandlow."

Ähnliche Präsentationen


Google-Anzeigen