Home | english  | Impressum | Sitemap | KIT

Softwareentwicklung für moderne, parallele Plattformen

Softwareentwicklung für moderne, parallele Plattformen
Typ: Vorlesung (V)
Semester: SS 2016
Zeit: 21.04.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten


28.04.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

12.05.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

19.05.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

02.06.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

09.06.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

16.06.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

23.06.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

30.06.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

07.07.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

14.07.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

21.07.2016
15:45 - 17:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten


Dozent: Prof.Dr. Walter Tichy
Luis Manuel Carril Rodríguez
Philip Pfaffe
SWS: 2
LVNr.: 24660
Voraussetzungen

Allgemeines Wissen der Softwaretechnik und Programmiersprachen, wie in üblichen Grundlagenveranstaltungen gelehrt.

Kenntnisse zu Grundlagen aus der Vorlesung Multikern-Rechner und Rechnerbündel [24112] im Wintersemester sind hilfreich.

Empfehlungen:

Grundlegende Kenntnisse über C/C++, Java, Betriebssysteme, Rechnerarchitektur. Die Vorlesung ist thematisch in sich abgeschlossen, kann aber ergänzend zu "Multikernrechner und Rechnerbündel" gehört werden.

BeschreibungMultikern-Prozessoren (Prozessoren mit mehreren parallelen Rechenkernen auf einem Chip) werden zum üblichen Standard. Die Vorlesung befasst sich mit aktuellen Themen im Bereich der Softwareentwicklung für Multikernrechner. Vorgestellt werden in diesem Kontext Entwurfsmuster, Parallelität in aktuellen Programmiersprachen, Multicore-Bibliotheken, Compiler-Interna von OpenMP sowie Fehlerfindungsmethoden für parallele Programme. Darüber hinaus werden auch Googles MapReduce-Ansatz und Programmiermodelle für GPGPUs (General-Purpose computations on Graphics Processing Units) besprochen, mit denen handelsübliche Grafikkarten als allgemeine datenparallele Rechner benutzt werden können.
LiteraturhinweiseWird in der Vorlesung bekannt gegeben.

Weiterführende Literatur

Wird in der Vorlesung bekannt gegeben.

Lehrinhalt

Multikern-Prozessoren (Prozessoren mit mehreren parallelen Rechenkernen auf einem Chip) werden zum üblichen Standard. Die Vorlesung befasst sich mit aktuellen Themen im Bereich der Softwareentwicklung für Multikernrechner. Vorgestellt werden in diesem Kontext Entwurfsmuster, Parallelität in aktuellen Programmiersprachen, Multicore-Bibliotheken, Compiler-Interna von OpenMP sowie Fehlerfindungsmethoden für parallele Programme. Darüber hinaus werden auch Googles MapReduce-Ansatz und Programmiermodelle für GPGPUs (General-Purpose computations on Graphics Processing Units) besprochen, mit denen handelsübliche Grafikkarten als allgemeine datenparallele Rechner benutzt werden können.

Anmerkung

Die Lehrveranstaltung wird im SS 2012 als Blockveranstaltung angeboten.

Arbeitsbelastung

3 LP entspricht ca. 90 Arbeitsstunden, davon
ca. 30 Std. Vorlesungsbesuch
ca. 45 Std. Vor- und Nachbereitung
ca. 15 Std. Prüfungsvorbereitung

Ziel

Der Studierende

  • kann Grundbegriffe der Softwaretechnik für parallele Systeme wiedergeben, Metriken zum Vermessen paralleler Software anwenden und parallele Systeme nach Kontroll- & Datenfluss sowie Organisation des physikalischen Speichers klassifizieren.
  • kann Strategien zum Auffinden von Parallelität anwenden und geeignete Architektur-Muster (Fließband, Auftraggeber-Arbeiter, Work Pool, Work Stealing, Erzeuger-Verbraucher) auswählen.
  • versteht Implementierungs-Muster (Array-Zugriffsmuster, Reduktion, Leader/Followers, Mutex Wrapper Facade, Scoped Locking, Thread-Safe Interface, Resource Ordering) und kann diese anwenden.
  • kann das .NET-Framework beschreiben und die Besonderheiten der Laufzeitumgebung, insbesondere der Just-In-Time Übersetzung, nennen.
  • beherrscht es parallele Programme in Java und C++ entwerfen. Er versteht es Fäden zu erzeugen, kritischer Abschnitte abzuleiten und Konstrukte für Warten und Benachrichtigung anzuwenden.
  • kann die Ansätze zur Parallelisierung von Bibliotheken (STL, pThreads, TBB, OpenMP) unterscheiden.
  • kann die Allzweck-Berechnung auf GPUs erläutern und die Anwendbarkeit in gegebenen Situation bewerten.
  • kennt typische Fehler und Messeffekte in parallelen Programmen. Er kennt die Problematik von Wettlaufsituationen und kann Lösungsansätze ableiten. Er versteht Happens-before Beziehungen und kann diese mit logischen Uhren ermitteln.
  • versteht und kann die Bedingungen für Verklemmungen erläutern. Er kann die Ursache von Verklemmungen ableiten und Methoden zur Behandlung oder Verhinderung von Verklemmungen auswählen.
  • hat die Fähigkeit aktuelle Forschungsthemen im Bereich Multikernrechner zu erklären.
Prüfung

Die Erfolgskontrolle erfolgt in Form einer mündlichen Prüfung im Umfang von 20 min. nach § 4, Abs. 2, 2 SPO.