Literatur vom gleichen Autor/der gleichen Autor*in
plus bei Google Scholar

Bibliografische Daten exportieren
 

Implementierung numerischer Algorithmen auf CUDA–Systemen

Titelangaben

Jahn, Thomas U.:
Implementierung numerischer Algorithmen auf CUDA–Systemen.
Bayreuth , 2010 . - 171 S.
(Diplomarbeit, 2010 , Universität Bayreuth, Fakultät für Mathematik, Physik und Informatik, Lehrstuhl Mathematik V)

Volltext

Link zum Volltext (externe URL): Volltext

Weitere Angaben

Publikationsform: Master-, Magister-, Diplom- oder Zulassungsarbeit (Diplomarbeit)
Zusätzliche Informationen: Überarbeitete Version vom 22. Juli 2010.

Inhaltsverzeichnis:
Einleitung
I Programmieren mit CUDA
1 Technische Vorarbeit
1.1 Anforderungen an die Hardware
1.1.1 Unterstützte Grafikkarten
1.1.2 In dieser Arbeit verwendete PC–Systeme
1.2 Vorbereiten der Entwicklungsumgebung
1.2.1 Installation des CUDA–Treibers
1.2.2 Installation des CUDA–Toolkits

2 Die kleine Welt des nVidia Grafikchips
2.1 Was unterscheidet die GPU von der CPU?
2.2 Device Kernel: Das GPU-Programm
2.2.1 Ablauf einer Kernelausführung
2.2.2 Vorzeitiger Kernelabbruch (Execution-Timeout)
2.3 SIMD als essentielles Prinzip
2.4 Threads, Blöcke und Warps – So arbeitet die GPU
2.4.1 Nummerierung der Threads
2.4.2 Ausführung der Threadblöcke
2.5 Der Speicher auf der Grafikkarte
2.5.1 Device Memory
2.5.2 Shared Memory
2.5.3 Register
2.5.4 Constant Memory
2.5.5 Local Memory
2.6 Fähigkeiten der Grafikprozessoren
2.6.1 Compute Capabilities 1.0
2.6.2 Compute Capabilities 1.1
2.6.3 Compute Capabilities 1.2
2.6.4 Compute Capabilities 1.3

3 Die C–Schnittstelle zur GPU
3.1 Das erste Programm: "Hello, World" mal anders
3.1.1 Aufbau des Quellcodes
3.1.2 Kompilieren und ausführen
3.2 Erweiterter C–Befehlssatz im Device Code
3.2.1 Methoden– und Variablenkennzeichner
3.2.2 Vektor Variablentypen
3.2.3 Konstanten zur Kernellaufzeit
3.2.4 Threadsynchronisation
3.2.5 Intrinsic Functions
3.2.6 Atomic Functions
3.2.7 Abfrage der GPU–Uhr
3.3 Einführung in die CUDA Runtime Library
3.3.1 Fehlercodes der Runtime Library
3.3.2 Auswahl des GPU-Chips
3.3.3 Dynamische Verwaltung von Device Memory
3.4 Einschränkungen und Fehlerquellen
3.4.1 Functionpointer und Rekursion
3.4.2 Parallel oder nicht parallel?
3.4.3 Ausgabe von Zwischenergebnissen und Fehlersuche

4 Kerneloptimierung
4.1 Die richtige Strategie zur Speichernutzung
4.1.1 Paralleler Zugriff auf Device Memory
4.1.2 Shared Memory vs. Device Memory
4.1.3 Speicherbankkonflikte
4.2 Threadbranching
4.3 Maximierung der GPU–Ausnutzung
4.3.1 Die "Größe" des Kernels
4.3.2 Ermitteln der Anzahl aktiver Blöcke
4.3.3 Zusammenhang zwischen GPU–Ausnutzung und Kernellaufzeit
4.4 Die Wahl des richtigen Blockgitters

II Parabolische partielle Differentialgleichungen
5 Numerische Lösung parabolischer PDEs
5.1 Eine Problemstellung
5.2 Methode der finiten Differenzen
5.3 Stabilisierte explizite Runge-Kutta Methode
6 Implementierung des ROCK4–Algorithmus
6.1 Der Abhängigkeitsgraph als Hilfsmittel
6.2 Konzept zur Kernelgestaltung
6.2.1 Abhängigkeitsgraph eines Runge–Kutta–Schritts
6.2.2 Abbildung auf die CUDA–Hardware
6.3 Exemplarische Umsetzung
6.3.1 Speicherung der Konstanten
6.3.2 Abschätzung des Spektralradius
6.3.3 Die erste Auswertung der rechten Seite
6.3.4 Dreifachterm–Rekursion
6.3.5 Implementierung einer Stufe der Methode W
6.3.6 Das eingebettete Verfahren
6.3.7 Feinabstimmung der Kernelgrößen
6.4 Vergleiche mit der CPU
6.4.1 Vergleich der Laufzeiten
6.4.2 Numerische Effekte

III Modellprädiktive Regelung
7 Modellprädiktive Regelung
7.1 Das Konzept MPC
7.1.1 Berechnen der Feedbackkontrolle
7.1.2 Umsetzung in der Praxis
7.2 Abhängigkeitsgraph eines MPC-Schrittes
7.3 Geeignete Problemstellungen

8 MPC eines Objektschwarms
8.1 Aufstellung des Minimierungsproblems
8.2 Hardwarefreundliche Restriktionsfunktion
8.3 Kernelkonzept eines konkreten Beispiels
8.3.1 Die Zielfunktion eines Schwarmobjekts
8.3.2 Bestimmen der Restriktionsfunktion
8.3.3 Einteilung in Threadblöcke
8.4 Implementation der Device Kernels
8.4.1 Modelleigenschaften
8.4.2 Kernel zur Berechnung von Ziel– und Restriktionsfunktion
8.4.3 Kernel zur Berechnung der Gradienten
8.4.4 Feinabstimmung der Kernelgrößen
8.5 Resultate und Geschwindigkeitsvergleiche
8.5.1 Nettolaufzeiten der einzelnen Kernels
8.5.2 Laufzeiten des MPC–Algorithmus
8.5.3 Das Verhalten der Objekte

IV Abschließende Betrachtung
9 Fazit
9.1 Vorteile und Nachteile
9.2 Vorausblick
Keywords: numerische Algorithmen; numerische Lösung parabolischer Differentialgleichungen; modellprädiktive Regelung; Schwarmsteuerung; GPU-Programmierung; SIMD; CUDA-Architektur
Institutionen der Universität: Fakultäten
Fakultäten > Fakultät für Mathematik, Physik und Informatik
Fakultäten > Fakultät für Mathematik, Physik und Informatik > Mathematisches Institut
Fakultäten > Fakultät für Mathematik, Physik und Informatik > Mathematisches Institut > Lehrstuhl Mathematik V (Angewandte Mathematik)
Fakultäten > Fakultät für Mathematik, Physik und Informatik > Mathematisches Institut > Lehrstuhl Mathematik V (Angewandte Mathematik) > Lehrstuhl Mathematik V (Angewandte Mathematik) - Univ.-Prof. Dr. Lars Grüne
Profilfelder
Profilfelder > Advanced Fields
Profilfelder > Advanced Fields > Nichtlineare Dynamik
Titel an der UBT entstanden: Ja
Themengebiete aus DDC: 500 Naturwissenschaften und Mathematik > 510 Mathematik
Eingestellt am: 13 Apr 2015 10:05
Letzte Änderung: 12 Aug 2016 07:08
URI: https://eref.uni-bayreuth.de/id/eprint/9947