htw saar
Zurück zur Hauptseite

Version des Moduls auswählen:

GPU-Computing

Modulbezeichnung: GPU-Computing
Studiengang: Praktische Informatik, Master, ASPO 01.10.2017
Code: PIM-GPU
SWS/Lehrform: 2V+2P (4 Semesterwochenstunden)
ECTS-Punkte: 5
Studiensemester: 1
Pflichtfach: nein
Arbeitssprache:
Deutsch
Prüfungsart:
Klausur/Projektarbeit
Zuordnung zum Curriculum:
KI784 Kommunikationsinformatik, Master, ASPO 01.10.2010, 1. Semester, Wahlpflichtfach, informatikspezifisch
KIM-GPU Kommunikationsinformatik, Master, ASPO 01.10.2017, 1. Semester, Wahlpflichtfach, informatikspezifisch
PIM-WI72 Praktische Informatik, Master, ASPO 01.10.2011, 1. Semester, Wahlpflichtfach, informatikspezifisch
PIM-GPU Praktische Informatik, Master, ASPO 01.10.2017, 1. Semester, Wahlpflichtfach, informatikspezifisch
Arbeitsaufwand:
Die Präsenzzeit dieses Moduls umfasst bei 15 Semesterwochen 60 Stunden. Der Gesamtumfang des Moduls beträgt bei 5 Creditpoints 150 Stunden. Daher stehen für die Vor- und Nachbereitung der Veranstaltung zusammen mit der Prüfungsvorbereitung 90 Stunden zur Verfügung.
Empfohlene Voraussetzungen (Module):
Keine.
Als Vorkenntnis empfohlen für Module:
Modulverantwortung:
Prof. Dr. Jörg Keller
Dozent: Prof. Dr. Jörg Keller

[letzte Änderung 10.11.2016]
Lernziele:
Arbeitsweise moderner CPU-/GPU-Strukturen verstehen und fortgeschrittene GPU-Programmierparadigmen in praktischen Anwendungen umsetzen können.

[letzte Änderung 13.07.2016]
Inhalt:
Die Vorlesung wiederholt zunächst in kompakter Form Architektur und
Grundlagen der parallelen Programmierung für Multicore-CPUs und GPUs.
Dabei vertieft sie Kenntnisse über Gemeinsamkeiten und Unterschiede,
um die Programmierung von GPUs durch Übertragung paralleler Programme
für Multicores zu vereinfachen. Neben Techniken wie der Regularisierung
von Kontrollfluss und Speicherzugriffen werden auch algorithmische
Techniken anhand mehrerer Anwendungsdomänen gezeigt, die von der
klassischen Numerik bis zur Kryptografie reicht.
 
- Architektur moderner CPU-Kerne
  (Superskalarität, Hyperthreading, etc)
- Architektur moderner Mehrkern-Prozessoren
  (mehrere Cores, gemeinsame Caches, Speicherzugriff)
- Programmierung moderner Mehrkern-Prozessoren
  (Grundlagen POSIX-Threads und OpenMP)
- Fortgeschrittene Programmierung moderner Mehrkern-Prozessoren
  (Beispiele von Koordination durch critical sections, barriers, etc)
 
- Architektur moderner GPU-Architekturen
  (mehrere Multiprozessoren, Multiprozessoren als SIMD-Architekturen)
- Unterschiede zwischen GPUs und CPUs
  (SIMD vs MIMD, Datentransport, Zusammenarbeit CPU/GPU)
- Vorteile von GPUs gegenüber CPUs
  (Rechenleistung, explizite Nutzung lokaler Speicher, massive Parallelität)
- Grundlagen der GPU-Programmierung mit CUDA
  (Beispiel-Programme, Zeitmessung, Relation Berechnung-Transport)
- Unterschiede zwischen CUDA und OpenCL
  (OpenCL allgemeiner, dafür aufwändiger, Code meistens weniger effizient)
 
- Performance-Abhängigkeit von Indizierung und Speichernutzung
  (Unterschiede je nach Dimensionszahl und -größen, Platzierung von Variablen)
- Regularisierung von Code zur Performance-Steigerung
  (Übertragung von Multicore-Code auf GPU, SIMDsierung, etc)
 
- Numerische Anwendungen
  (Parallele numerische Lösung von einfachen Differenzialgleichungen)
- Kombinatorische Anwendungen
  (Probleme in Graphen, Fokus auf Regularisierung)
- Kryptografische Anwendungen
  (Fokus auf Regularität sowie bitserieller Implementierung)
- Harte Probleme
  (NP-harte Probleme, Approximationen, Parallelisierung für GPU)
 


[letzte Änderung 20.07.2016]
Lehrmethoden/Medien:
Cuda-Systeme mit NVidia-Tesla und -Kepler GPU-Architektur

[letzte Änderung 13.07.2016]
Literatur:


[noch nicht erfasst]
Modul angeboten in Semester:
WS 2017/18 (voraussichtlich)
[Thu Sep 21 21:13:08 CEST 2017, CKEY=kg, BKEY=pim2, CID=PIM-GPU, LANGUAGE=de, DATE=21.09.2017]