Software-Engineering paralleler Systeme

Fakultät

Ingenieurwissenschaften und Informatik

Version

Version 6.0 vom 04.09.2019

Modulkennung

11M1300

Modulname (englisch)

Software-Engineering of Parallel Systems

Studiengänge mit diesem Modul

Informatik - Verteilte und Mobile Anwendungen (M.Sc.)

Niveaustufe

4

Kurzbeschreibung

In der Entwicklung von Prozessoren hat ein Paradigmenwechsel stattgefunden. Wurde in der Vergangenheit die Leistungsfähigkeit der CPU durch eine kontinuierliche Erhöhung der Taktrate erreicht, so ist dieses aus physikalischen Gründen jenseits von 4 GHz nicht mehr kostentechnisch darstellbar. Da weiterhin ein Leistungszuwachs für neue Anwendungen gefordert ist, werden Prozessoren mit mehreren parallelen Rechnerkernen entwickelt und eingesetzt. Dieses stellt insbesondere eine Herausforderung für die Software-Entwicklung aufgrund der bisherigen sequentiellen Programmierung dar. Rechner mit mehreren Kernen haben das Nischendasein verlassen und sind inzwischen in allen Bereichen anzutreffen: vom Supercomputer bis hinzu eingebetteten, technischen Systemen wie automobile Steuergeräte oder Mobiltelefone. Zeitgleich haben Grafikkarten eine Leistungsdichte erreicht, die weit über konventionellen Prozessoren liegt. Multicore wie auch Manycore-Systeme (beispielsweise GPGPU-Systeme; GeneralPurpose computation on Graphics Hardware) erfordern neue Software Entwicklungsmethoden (beispielsweise Algorithmen, Programmiersprachen, Entwurfsmuster), um die Leistungsfähigkeit auszunutzen.

Lehrinhalte
  1. Einführung
  2. Multi-Core Rechnerarchitekturen
  3. Betrachtung spezieller Hardware-Aspekte
  4. Betriebssysteme
  5. Embedded Multi-Core Systeme
  6. Parallele Programmierung und Programmiersprachen
  7. Realisierung ausgewählter Aufgabenstellungen
Lernergebnisse / Kompetenzziele

Wissensverbreiterung
Die Studierenden, die dieses Modul erfolgreich studiert haben, kennen die Architekturen von Multi-Core und Manycore-Systemen sowie Software-Entwicklungsmethoden und können diese miteinander vergleichen und gegeneinander abgrenzen.
Wissensvertiefung
Die Studierenden, die dieses Moduel erfolgreich studiert haben, erwerben in einem aktuellen Thema detailliertes Wissen und kennen den Stand der Entwicklung und Forschung.
Können - instrumentale Kompetenz
Die Studierenden, die dieses Modul erfolgreich studiert haben, können Software für Multi-Core und Manycore-Systeme entwerfen, implementieren und testen. Sie sind in der Lage, Aufgabenstellungen den spezifischen Herausforderungen von Mehrkernsystemen zu bearbeiten sowie Lösungen zu entwickeln, die die Leistungsfähigkeit der Zielsysteme ausnutzen.
Können - kommunikative Kompetenz
Die Studierenden, die dieses Modul erfolgreich studiert haben, können komplexe Probleme von Multi- und Manycore-Systemen identifizieren und Software-Systeme kritisch analysieren. Sie kommunizieren mit Peers, erfahrenden Kollegen und Spezialisten auf professionellem Niveau sowohl in der Rolle des Systemanalytikers als auch in einer umsetzenden Rolle. Die Studierenden können ihre Entwicklungsergebnisse einem Fachpublikum präsentieren und mit diesem diskutieren.
Können - systemische Kompetenz
Die Studierenden, die dieses Modul erfolgreich studiert haben, wenden aktuelle Fähigkeiten und Techniken an. Sie analysieren Aufgabenstellungen von Multi- und Manycore-Systemen und entwickeln, dokumentieren sowie optimieren selbstständig Lösungstrategien. Sie setzen diese alleine oder im Team um.

Lehr-/Lernmethoden

Die Veranstaltung gliedert sich in einen Vorlesungs- und Seminaranteil. Die praktischen Fähigkeiten werden in Programmierübungen erworben.

Empfohlene Vorkenntnisse

C/C++, Software Engineering, Klassische Algorithmen und Datenstrukturen

Modulpromotor

Uelschen, Michael

Lehrende

Uelschen, Michael

Leistungspunkte

5

Lehr-/Lernkonzept
Workload Dozentengebunden
Std. WorkloadLehrtyp
15Vorlesungen
15Seminare
15Übungen
Workload Dozentenungebunden
Std. WorkloadLehrtyp
30Veranstaltungsvor-/-nachbereitung
15Literaturstudium
60Kleingruppen
Literatur

The Art of Multiprocessor Programming; Maurice Herlihy, Nir Shavit; Elsevier; 2008Multi-Core Programmierung; Shameem Akhter, Jason Roberts; INTEL press, 2008Multicore: Parallele Programmierung; Thomas Rauber, Gundula Rünger; Springer, 2007Intel Threading Building Blocks: Outfitting C++ for Multi-Core Processor Parallelism; James Reinders; O'Reilly, 2007

Prüfungsleistung

Projektbericht, schriftlich

Unbenotete Prüfungsleistung

Experimentelle Arbeit

Dauer

1 Semester

Angebotsfrequenz

Unregelmäßig

Lehrsprache

Deutsch