Parallel Computing

    Nummer
    pac
    ECTS
    3.0
    Anspruchsniveau
    advanced
    Inhaltsübersicht
    Eine Konstante der vergangenen Jahre sind immer grösser werdende Datenmengen, aber auch immer komplexer werdende Modellierungsansätze. Beide Entwicklungen verlangen wachsende Rechenkapazität, um die vorliegenden Daten verwertbar zu machen. Parallele Organisation von Rechenschritten ermöglicht dabei schnelleres Prozessieren und steigert damit die Effizienz der Datenverarbeitung. Es lassen sich aber nicht beliebige Rechenvorgänge parallelisieren und skalieren. Algorithmen müssen auf Parallelisierbarkeit untersucht werden. Es haben sich weiter eine Reihe von Ansätzen etabliert, welche systematisches Parallelisieren ermöglichen. Die effiziente und korrekte Anwendung eben dieser Patterns ist bei der Verarbeitung grosser Datenmengen unabdingbar. Im Modul Parallel Computing werden die Studierenden schrittweise in verschiedene parallele Programmier- und Ausführungspattern eingeführt. Es werden verschiedene Ansätze basierend auf herkömmlicher Hauptprozessor- (CPU) Algorithmik, über die parallele Grafikhardware- (GPU) basierte Programmierung bis hin zur Cloud-optimierten Verarbeitung entwickelt. Die Themen sind:
    • Einführung ins Thema paralleles Datenverarbeiten
    • Threads, Locks, CPU-Hardware
    • SSE, AVX, OpenMP
    • GPU-Hardware, OpenCL
    • CUDA C++ Kernels, Memory Management und Ausführungsmodell
    • Ausführungspattern: Prefix Sum, Convolution, Geometric Decomposition
    • Kommunikationspattern: Basics, Scatter/Gather, Pub/Sub, MapReduce
    • Ausführen von komplexen Computation Graphs
    • Messaging Systeme für parallele Datenverarbeitung
    Lernziele
    Ziel dieses Moduls ist es, dass die Studierenden die Grundlagen der Parallelen Datenverarbeitung kennen und anwenden können. Die Studierenden
    • kennen und verstehen verschiedene Organisationsmuster für paralleles Rechnen und können diese erklären;
    • können erkennen, ob ein Problem parallelisiert werden kann;
    • können für ein Rechenproblem eine angepasste parallele Lösung entwerfen;
    • kennen verschiedene Prozessortypen und können für diese effiziente, parallelisierte Algorithmen korrekt implementieren;
    • können die parallele Ausführung mittels geeigneter Frameworks von lokalen Systemen auf Cloud/Cluster basierte Systeme skalieren;
    • verstehen die Limitationen der Skalierbarkeit von parallelisierten Datenverarbeitungen;
    • kennen state-of-the-art Werkzeuge und Frameworks für die parallele Datenverarbeitung und können diese gezielt und sicher einsetzen.
    Empfohlene Vorkenntnisse
    System Programmierung (syspr)
    Leistungsbewertung
    Erfahrungsnote, Gewichtung 100 %