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.