Wintersemester 2019/2020

Parallele Programmierung

Die Veranstaltung behandelt zunächst die etablierten Programmiersysteme OpenMP und MPI in größerer Tiefe als im Bachelorstudium. Der Schwerpunkt wird auf fortgeschrittene Sprachkonstrukte wie OpenMP-Tasks, MPI-Kommunikatoren und hybride MPI/OpenMP-Programmierung gelegt. Wir diskutieren den Einsatz der Konstrukte anhand von Beispiel-anwendungen. Dabei stehen die Entwurfsziele Performance und Skalierbarkeit im Vordergrund. Außerdem werden einige komplexere Synchronisationsprobleme besprochen.

Im zweiten Teil der Veranstaltung werden aktuelle parallele Programmiersysteme vorgestellt und mit den etablierten Systemen verglichen. Typische Herangehensweisen dieser Systeme sind der Partitioned Global Address Space (PGAS) und die Taskbasierte Parallele Programmierung (TaPP). Einzelne Sprachen werden erlernt und erprobt, z.B. Chapel, TBB, HPX und Charm++. Daneben diskutieren wir Querschnittsthemen wie Entwurfsmuster, Fehlertoleranz und Elastizität.

Für den Besuch der Veranstaltung sind Vorkenntnisse aus Parallelverarbeitung 1 und 2 von Vorteil, aber nicht zwingend erforderlich. Die Veranstaltung gliedert sich in einen Vorlesungs- und einen Praktikumsteil. Der Praktikumsteil umfasst die Entwicklung von Programmen mit den behandelten Programmiersystemen. Im Praktikum arbeiten Sie typischer-weise in Zweierteams. Das Praktikum bildet zusammen mit einem Abschlussgespräch die Basis für die Bewertung der Veranstaltung.

 

Teilnehmerkreis:

Studierende im Master Informatik nach PO 2010 oder 2018. Für Studierende nach PO 2018 kann die Veranstaltung sowohl im Wahlpflichtbereich als auch in die Schwerpunkte Softwareentwicklung (als Pflichtveranstaltung) und Umweltinformatik (als Wahlpflichtveranstaltung) eingebracht werden.

 

Veranstaltungszeiten:

  • Montag, 12:15 - 13:45 Uhr, Raum 2307A

  • Freitag, 10:15 - 11:45 Uhr, Raum 2307A 

Die erste Veranstaltung findet am Freitag, 18.10.2019 statt.

 

Dozentin:

Prof. Dr. Claudia Fohry

 

Alle weiteren Informationen zur Veranstaltung finden Sie in Moodle.

Parallele Algorithmen

Die Veranstaltung behandelt eine Auswahl paralleler Algorithmen für verschiedene Probleme und Architekturklassen. Zunächst lernen wir anhand des Modells der Parallel Random Access Machine grundlegende Entwurfstechniken und Techniken für die Laufzeitabschätzung kennen. Danach betrachten wir Algorithmen für Mehrkernprozessoren und Cluster, die sich mittels OpenMP bzw. MPI umsetzen lassen. Je nach Vorkenntnissen und Interesse der Teilnehmer ist die Umsetzung ebenfalls Bestandteil der Veranstaltung. Die betrachteten Algorithmen reichen von regulären Algorithmen für Matrixberechnungen über parallele Optimierungsverfahren bis zu parallelen Graphalgorithmen. Abschließend werden Algorithmen für spezielle Szenarien behandelt: fehlertolerante parallele Algorithmen sowie effiziente Algorithmen für Speicherhierarchien.


Die Bewertung der Veranstaltung erfolgt auf Basis einer Projektarbeit mit abschließendem Prüfungsgespräch. Schwerpunkt des Projekts ist die eigene Entwicklung effizienter Algorithmen. Diese werden bezüglich ihrer Laufzeit analysiert sowie, bei entsprechenden Vorkenntnissen der Teilnehmer, implementiert und experimentell bewertet.


Die Veranstaltung ergänzt die Veranstaltungen “Einführung in die Parallelverarbeitung“ (Bachelor) und “Parallele Programmierung“ (Master), kann aber auch ohne Vorkenntnisse in paralleler Programmierung belegt werden.


Teilnehmerkreis:
Studierende im Master Informatik nach PO 2010 oder 2018. Für Studierende nach PO 2018 kann die Veranstaltung sowohl im Wahlpflichtbereich als auch in die Schwerpunkte Softwareentwicklung (als Pflichtveranstaltung) und Umweltinformatik (als Wahlpflichtveranstaltung) eingebracht werden.


Termine:

Mittwoch 8:30 - 10:00 Uhr in Raum 2307A
Donnerstag 08:30 - 10:00 Uhr in Raum 2307A
Die erste Vorlesung findet am 18.04.19 statt.


Umfang:
Master 4 SWS (6 CP)


Für weitere Auskünfte steht Ihnen Frau Prof. Dr. Claudia Fohry (fohry@uni-kassel.de) gern zur Verfügung

Seminar - Java Concurrency

Moderne Applikationen verwenden heutzutage Nebenläufigkeit, damit sie mehrere Operationen parallel auf Mehrkernprozessoren ausführen können. Dadurch können zum Beispiel Benutzeroberfläche, Berechnungen und Netzwerkkommunikation parallel ausgeführt werden. Je nach Anforderungen an die Applikation entstehen dabei verschiedene Heraus-forderungen.


Java untersützt die nebenläufige Programmierung seit Version 5.0 mit High-Level Concurrency APIs aus dem Paket java.util.concurrent. Im Seminar stellen die Teilnehmer ver-schiedene Arten von nebenläufiger Programmierung mit Hilfe der aktuellen Java Version vor. Die Funktionalitäten erschließen sie sich dabei aus der Literatur, ergänzt durch Beispiele mit eigenen Programmen. Beispielthemen beinhalten Executors, Callable and Futures, Phaser, Fork/Join Framework, Parallel Streams, Concurrent Data Structures und Synchronisation. Die Teilnehmer können nach Absprache Vorschläge einbringen.


Teilnehmerkreis:

Studierende im Master Informatik nach PO 2010 oder 2018. Für Studierende nach PO 2018 kann die Veranstaltung sowohl im Wahlpflichtbereich als auch in die Schwerpunkte Softwareentwicklung (als Pflichtveranstaltung) und Umweltinformatik (als Wahlpflichtveranstaltung) eingebracht werden.


Termine:

Montag, 21.10.2019 von 10:15 - 11:00 Uhr im Raum 2307A des Fachgebietes

Dozentin:

Prof. Dr. Claudia Fohry und M.Sc. Jonas Posner

 

Alle weiteren Informationen zur Veranstaltung finden Sie in Moodle.