Home | english  | Impressum | Sitemap | KIT

Softwareentwicklung für moderne, parallele Plattformen

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


23.04.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

30.04.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

07.05.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

21.05.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

28.05.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

11.06.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

18.06.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

25.06.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

02.07.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

09.07.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten

16.07.2015
09:45 - 11:15 wöchentlich
50.34 Raum 131 50.34 INFORMATIK, Kollegiengebäude am Fasanengarten


Dozent: Dr.-Ing. Korbinian Molitorisz
Luis Manuel Carril Rodríguez
Prof.Dr. Walter Tichy
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.