Wintersemester 2022/2023

Die gesamte Organisation der Lehrveranstaltungen erfolgt über die Lernplattform Moodle. Wenn Sie an einer der u.a. Veranstaltungen teilnehmen möchten, melden Sie sich bitte in dem entsprechenden Moodlekurs an.

Die Veranstaltung beginnt mit einer Einführung zu Gegenstand, Anwendungsgebieten und Grundbegriffen des parallelen Rechnens. Wir behandeln Entwurfstechnikenfür parallele Algorithmen (z.B. paralles Divide-and-Conquer) sowie allgemeine Anforderungen an den Entwurf effizienter Programme (z.B. Cacheoptimierung).

Anhand von drei exemplarischen Programmiersystemen werden dann im Hauptteil Grundkenntnisse zur parallelen Programmierung vermittelt:

  • OpenMP für Rechner mit gemeinsamem Speicher,
  • OpenMP Offloading für GPUs und
  • "APGAS für Java" für Rechner mit verteilten und Hypridem Speicher.

In die Veranstaltung sind zwei Praktikumsabschnitte integriert, in denen die Teilnehmer:innen in Zweierteams Programmieraufgaben lösen. Die Ergebnisse werden anschließend in Prüfungsgesprächen vorgestellt und bilden die Basis für die Bewertung der Veranstaltung.

Die Veranstaltung ersetzt die bisherigen Veranstaltungen PV1 und PV2.

Studiengang
Bachelor Informatik

Umfang
4 SWS (6 Credits)

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Herr Dr. Jonas Posner und Herr M.Sc. Lukas Reitz gern Auskunft.

 

 

Die Veranstaltung behandelt eine Auswahl paralleler Algorithmen für verschiedene Probleme und Architekturklassen. Zunächst lernen wir anhand des Binary Forking Modells sowie 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:innen 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 evtl. noch 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:innen, 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.

Studiengang
Master Informatik

Umfang
4 SWS (6 Credits)

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.

 

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 Beispielanwendungen. 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 Asynchronous Many-Task Programmierung AMT. Einzelne Sprachen werden erlernt und erprobt, z.B. Cilk, Chapel, 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 typischerweise in Zweierteams. Das Praktikum bildet zusammen mit einem Abschlussgespräch die Basis für die Bewertung der Veranstaltung.

Studiengang
Master Informatik

Umfang
4 SWS (6 Credits)

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry, Herr Dr. Jonas Posner und Herr M.Sc. Rüdiger Nather gern Auskunft.

High Performance Computing (HPC) Systeme, auch Supercomputer genannt, ermöglichen die Lösung komplexer Probleme aus verschiedenen wissenschaftlichen Bereichen. Traditionell bestehen Supercomputer aus vielen vernetzten Rechenknoten auf denen rechenintensive Anwendungen (z.B. Simulationen) ausgeführt werden. In den letzten Jahren hat sich die Leistung dieser Supercomputer drastisch erhöht und es wird mehr und mehr spezialisierte Hardware wie FPGAs eingesetzt. Gleichzeitig werden die Anwendungen, die auf Supercomputer ausgeführt werden, immer diverser und Bereiche wie Datenanalyse und künstliche Intelligenz werdem immer wichtiger.

In diesem Seminar beschäftigen wir uns mit dem aktuellen Stand und Trends im HPC. Die Teilnehmer stellen je ein Thema vor, welches aus der Literatur erschlossen werden muss. Beispielthemen umfassen unter anderem traditionelle Programmiersprachen (z.B. MPI, OpenMP), neuere Programmiersprachen (z.B. Julia, Chapel), Job Scheduler (z.B. Slurm, Torque), verteilte Dateisysteme (z.B. BeeGFS, Lustre), und Hardwarebeschleuniger (z.B. GPU, FPGA). Die Teilnehmer:innen können nach Absprache Vorschläge für eigene Themen einbringen.

Studiengang
Bachelor/Master Informatik

Umfang
Bachelor 2 SWS (3/4 Credits)
Master 2 SWS (4 Credits)

 

Weitere Informationen, einschließlich der Seminartermine, finden Sie im Vorlesungsverzeichnis Bachelor/Vorlesungverzeichnis Master und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Herr Dr. Jonas Posner und Herr M.Sc. Lukas Reitz gern Auskunft.

 

Während sich Algorithmenentwurf und -analyse traditionell auf abstrakte Berechnungsmodelle wie die Random Access Machine und eine asymptotische Laufzeitabschätzung mittels O-Notation beziehen, stützt sich Algorithm Engineering ergänzend auf die Implementierung und experimentelle Bewertung der Algorithmen. So können praktische Einflussfaktoren auf die Laufzeit angemessen berücksichtigt und die Algorithmen an reale Einsatzszenarien angepasst werden. Zu den Einflussfaktoren gehören unter anderem Hardwareaspekte wie Caches, Plattenspeicher und Branch Prediction, die Einfachheit der Algorithmen, ihre Umsetzung mit Mitteln der Programmiersprache und die Passung zu typischen Eingaben.

Im Seminar werden exemplarisch die Verbesserung konkreter Algorithmen durch Algorithm Engineering; Techniken zur systematischen experimentellen Bewertung der Algorithmen, Berechnungsmodelle mit stärkerem Hardwarebezug sowie Bibliotheken effizienter Algorithmen vorgestellt. Jede:r Teilnehmer:in erarbeitet sich ein Thema aus der Literatur, typischerweise aus einem wissenschaftlichen Konferenz- oder Zeitschriftenbeitrag, und präsentiert dieses in einem Vortrag und einer schriftlichen Ausarbeitung.

Studiengang
Bachelor/Master Informatik

Umfang
Bachelor/Master 2 SWS (4 Credits)
 

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis Bachelor/Vorlesungsverzeichnis Master und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.

In diesem Projekt implementieren die Studierenden in kleinen Gruppen selbstständig zwei bis drei vorgegebene Aufgaben im Umfeld der parallelen Programmierung. Diese Aufgaben sind für alle Gruppen gleich, allerdings verwendet jede Gruppe ein anderes paralleles Programmiersystem. Es werden verschiedene Systeme zur Auswahl gestellt, zum Beispiel Legion, Chapel, Julia und CompsS. Zu den Anforderungen gehören die theoretische Ausarbeitung eines parallelen Algorithmus, die Implementierung sowie das Testen auf dem Cluster der Uni Kassel. Am Ende präsentieren alle Gruppen ihre Ergebnisse und Erfahrungen, über die anschließend diskutiert wird.

Studiengang
Bachelor/Master Informatik

Umfang
Bachelor 8 SWS (12 Credits)
Master 4 SWS (8 Credits)

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis Bachleor/Vorlesungsverzeichnis Master und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry, Herr M.Sc. Lukas Reitz und Herr M.Sc. Rüdiger Nather gern Auskunft.