Leitfaden Motivation Was ist CUDA ? NVIDIA Grafikkarte Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Matrixmultiplikation
Programmieren im Großen von Markus Schmidt und Benno Kröger.
PC-Kauf im IV. Quartal 1998 Dipl.-Ing. Jörg Dannenberg
< CUDA implementation>
Constantin Timm Informatik 12 TU Dortmund
B-Bäume.
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
der Universität Oldenburg
Datenbankzugriff im WWW (Kommerzielle Systeme)
BUS-Systeme (PCI) Allgemeines über BUS-Systeme Allgemeines zum PCI-Bus
D. Köhn Institut für Geowissenschaften (Abteilung Geophysik), CAU Kiel
MuSofT-das Projekt Lernmodule der Lehreinheit LE 3.1 Prozeßqualität am Beispiel des V-Modell.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Computerkurs: Quantitative Auswertung biochemischer Experimente Tag 8 Einführung in die numerische Integration Aufgabe 18: Simulation einer Assoziationskinetik.
OpenMP Präsentation im Rahmen des Seminars
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 12.1.
MuSofT-das Projekt Lernmodule der Lehreinheit LE 3.1 Prozeßqualität am Beispiel des V-Modell.
Haupt- und Arbeitsspeicher
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Vorlesung 2 Rechnerarchitektur Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Signalisierung von Benutzeranforderungen zur Anpassung von Videoströmen
Datenmanagement in Sensornetzen PRESTO - Feedback gesteuertes Datenmanagement - SS 2007 Sören Wenzlaff.
PCI-Express als Grafikschnittstelle
Grundschutztools
Random Heightmap on GPU
Matrix Multiplication on CUDA
< Best practices >
Beschleunigung Virtueller Privater Netze durch Netzwerkprozessoren
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Gliederung Motivation und Ziele Grundlagen der Rotman Linsen
Mikrocomputertechnik-Labor SS‘04
Supercomputer FSJS-X3000 Lehrlingswettbewerb Züri Oberland 2013 Uster
Duo- und Quad Prozessor-Architektur
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Animierte Schneeakkumulation mit dem Diffusionsschneemodell Dresden, Informatik Fakultät Institut für Softwaretechnik, Professur Computergraphik.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Clustering mittels Grafikprozessor
INTEL Pentium 4 Prozessor
Aurora mALX © Christian Barby FIN
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Parallel Matrix Multiplication
Adaption von K-Means Algorithmen an Datenbanken
Algorithm Engineering „GPU Algorithmen“
Analyse von Ablaufdiagrammen
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Ein Vortrag von Simon Bayer
Analyseprodukte numerischer Modelle
0 Univ. Paderborn, FG Theoretische Elektrotechnik 0 Übersicht Motivation und Zielsetzung Grundlagen Funktionsprinzip einer Grafikarter.
Eine Übersicht von Margarete Streitwieser
Kurzvortrag Grafikkarten
Arbeitsberatung der ITG Fachgruppe Matthias Fiedler, Gunter Scheller 13. Juni 2003 Fakultät für Elektrotechnik und Informationstechnik Fachbereich.
Central Processing Unit von David Kleuker und Thomas Auner
PhysX auf der GPU in Batman: Arkham Asylum & bei Fluid Simulations Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie.
Aktueller Stand der Technik. Auf dem Markt sind heute bereits 64-Bit Mikrocontroller. Die meiste Verwendung finden allerdings noch immer die 8-Bit Modelle.
NOTEBOOKS Grundausstattung und Preisvergleich. Bekannte Hersteller AppleHPSonyToshiba.
Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow.
Wissenschaftliches Programmieren „CUDA“ Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow.
SPEICHER ROM + RAM ROM RAM Arten von RAM (DDR-RAM, SDRAM) Beispiel
Entwicklungstrends der PC-Technologie
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
Parallele Lösung von Differential-Algebraischen Gleichungssystemen und Sensitivitätssystemen Seminarvortrag Daniel Abele
Paralleleles Rechnen auf Grafikkarten Einführung Christian Schwarz.
Blowfish mit CUDA Dominik Oepen Inhalt ● Blowfish Grundlagen ● Implementierungsdetails ● Performance ● Fazit.
PC Aufrüsten, Auftrag 1 Systemtools, Benchmark
Die Komponenten Von einem PC.
 Präsentation transkript:

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

Leitfaden Motivation Was ist CUDA ? NVIDIA Grafikkarte Programmierung FIT im Zeitbereich Ergebnisse Projektverlauf Zusammenfassung

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

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

Vergleich GPU v. CPU Hardware-Modell Caches beschreiben. Daten raussuchen! Quelle: NVIDIA CUDA Programming Guide

Vergleich GPU v. CPU NVIDIA GeForce GTX 260 Stream-Prozessoren: 192 24 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 Core i7 (Bloomfield) [Bearbeiten] Einführungstermin: 17. November 2008 Taktfrequenz(en): 2,67 GHz (Core i7 920), 2,93 GHz (Core i7 940), 3,2 GHz (Core i7-965 EE) Kerne 4 Cache: L1 je Kern 32 KByte 8-fach assoziativ, L2 256 KB, L3 8 MB Die-Größe: 275 mm² Datenbus: 64 Bit Adressbus: 36 Bit Transistoren/Fertigungstechnik: 731 Millionen bei 45 nm Adressierbarer Speicher: 64 GB Quelle: http://img2.abload.de/img/gtx260_01ytg.jpg

Programmierung Host Application Aus C: CublasDdot() CUDA Libraries .cu Datei, mit selbstgeschriebenen Kernel auf „Runtime“Abstraktion CUDA Runtime .cu Datei, mit voller Kontrolle, aber alles „von Hand“ CUDA Driver Quelle: NVIDIA CUDA Programming Guide Device

Kernel0<<< x ,y >>>() Programmierung C Program Sequential Execution Serial code Parallel kernel Kernel0<<< x ,y >>>() Quelle: NVIDIA CUDA Programming Guide Host „Daten draufkopieren“ Device Grid 0 Host „Daten / Ergebnisse runterkopieren“

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 Elektr. Randbedingung Innenleiter Inhomogen gefüllter Koaxialleiter Quelle: Übung zu Elektromagnetischen Feldsimulation, Projekt 7

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

FIT im Zeitbereich Curlmatrix Nu*Nv Nu 1 Muss nicht mit übergeben werden, sondern ergibt sich aus der Struktur: Multiplikation des E-Vektors mit der Curl-Matrix resultiert in 4 Multiplikationen mit +-1, alle anderen einträge Null. Sicherstellen der Korrekten zugriffe auf E,H Quelle: Vorlesungsskript zu Elekromagnetische Feldsimulation

Programmierung Leapfrog Algorithmus Beispiel: H-Update umgesetzt in C-Code

„Implementierung der Curl-Matrix“ Programmierung Leapfrog Algorithmus Beispiel: H-Update als Kernel-Funktion „Implementierung der Curl-Matrix“

Programmierung Leapfrog Algorithmus Aufruf der Kernel-Funktion Berechnung der aktuellen Hx-Komponente, aus der alten, zwei Ex- und zwei Ez-Komponenten.

Laufzeitergebnisse in sec Struktur 1: Inhomogener Koaxialleiter Anregung: E- /H-Feld einer TEM-Welle Anzahl Laufzeitergebnisse in sec Gitterpunkte Zeitschritte Matlab Mex-C CUDA 2.416 1.200 1,8 0,7 1,1

Laufzeitergebnisse in sec Struktur 2: Bragg Reflektor 4 Schichten Laufzeitergebnisse in sec CUDA 9,4 Mex-C - seriell 95,7 Mex-C - openmp(4) 53,1 Anzahl Gitterpunkte Zeitschritte 76.874 10.000

Laufzeitergebnisse in sec Struktur 3: Bragg Reflektor 20 Schichten Laufzeitergebnisse in sec CUDA 93 Mex-C - seriell 1456 Mex-C - openmp(4) 696 Anzahl Gitterpunkte Zeitschritte 173.978 57.000

Laufzeitergebnisse in sec Struktur 4: Bragg Reflektor 35 Schichten Laufzeitergebnisse in sec CUDA 568 Mex-C - seriell 8991 Mex-C - openmp(4) 4853 Anzahl Gitterpunkte Zeitschritte 693.825 99.004

Gitterpunkte * Zeitschritte Ergebnisse Vergleich der Methoden 15x 8x Gitterpunkte * Zeitschritte CUDA MEX-C seriell MEX-C openmp(4) 768.740.000 9,4 96 53 9.916.746.000 93 1456 696 68.691.450.300 568 8991 4853

Ergebnisse im Vergleich S-Parameter Bragg Reflektor (20 Schichten, Struktur 3)

Ergebnisse im Vergleich Zeitsignale

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

Projektverlauf (2) Simulation und Aufnahme der Laufzeitergebnisse von verschiedenen Leapfrog – Varianten Bewertung der Effizienz von CUDA Dokumentation Bewertung der Effizienz von CUDA Anhand eines genügend großen beispiels Fehler??? Genauigkeit?

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

Vielen Dank für Ihre Aufmerksamkeit!