Modulbeschreibung

Parallele Programmierung

Kurzzeichen:
M_ParProg
Unterrichtssprache:
Englisch
ECTS-Credits:
4
Leitidee:

Programming parallel, concurrent and asynchronous systems.

Students can:

  • present the concepts of concurrency and apply them in programs
  • explain the correctness criteria of concurrency, recognize and avoid typical dangers
  • accelerate programs using parallelization on multi-cores, GPUs and clusters
  • design programs in a non-blocking manner using asynchronicity
  • explain different programming models for concurrency
Modulverantwortung:
Prof. Dr. Purandare Mitra
Standort (angeboten):
Rapperswil-Jona, St.Gallen (Informatik Raster)
Zusätzliche Eingangskompetenzen:

 Paralleler oder vorgängiger Besuch von Betriebssysteme 2 vorteilhaft. 

Modultyp:
Wahlpflicht-Modul für Elektrotechnik STD_05(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Elektrotechnik STD_14(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Elektrotechnik STD_21(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Elektrotechnik STD_24(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Informatik Retro STD_14_UG(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik und Aufbau Informatik (I-gai)
Wahlpflicht-Modul für Software Engineering STD_14 (PF)Kategorie:Kernmodule Informatik Profile (I-KMP)
Wahlpflicht-Modul für Informatik STD_11(Empfohlenes Semester: 4)Kategorie:Aufbau Informatik (I-a)
Wahlpflicht-Modul für Informatik STD_14(Empfohlenes Semester: 4)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Wahlpflicht-Modul für Informatik STD_21(Empfohlenes Semester: 4)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Wahlpflicht-Modul für Informatik STD_23(Empfohlenes Semester: 4)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Modulbewertung:
Note von 1 - 6

Leistungsnachweise und deren Gewichtung

Modulschlussprüfung:
Schriftliche Prüfung, 120 Minuten

Inhalte

Modul- und Lerninhalt:

Basics of multi-threading und synchronization:

  • Introduction to concurrent und parallel programming
  • Multi-threading with Java und .NET
  • Critical sections and synchronisations methods
  • Monitor-concepts und their usage in the respective languages
  • Special synchronization primitives, e.g., Semaphore, Reader-Writer Locks, latches, barrieres
  • Correctness conditions; problems due to data races, race conditions, deadlocks und starvation

 

Thread Pools for efficient parallelization and asynchronicity:

  • Thread Pools: mechanism, concept, work-stealing, Java und .NET
  • Task- und Data-Parallelism
  • Parallelization of algorithms
  • Asynchronous Programming in Java (CompletableFutures)
  • C# Async-Await Programming

 

Selected topics in concurrency:

  • GUI und concurrency, asynchronous programming in GUI
  • Memory models in Java and .NET: atomicity, visibility, order, memory barriers
  • lock-free programming
  • Non-blocking data structures

 

Massive parallelization:

    • GPU parallelization: concept, kernels, launch configs, memory management, optimizations
    • HPC cluster parallelization with MPI
    • OpenMP

Advanced programming models for concurrency (optional, depending on the number of lecture weeks in the semester):

  • Distributed parallelization with Actors and CSP
  • Reactive programming
  • Hardware and software transactional memory

 

Technologies used in the module: Java, .NET C#, C/C++ (for GPU, MPI, OpenMP, etc.).