Technische Universität Ilmenau

Parallel Computing - Modultafeln der TU Ilmenau

Die Modultafeln sind ein Informationsangebot zu unseren Studiengängen. Rechtlich verbindliche Angaben zum Verlauf des Studiums entnehmen Sie bitte dem jeweiligen Studienplan (Anlage zur Studienordnung). Bitte beachten Sie diesen rechtlichen Hinweis.
Angaben zum Raum und Zeitpunkt von geplanten Lehrveranstaltungen entnehmen Sie bitte dem e-Veranstaltungskalender. Lehrveranstaltungen und Prüfungen, die nicht im e-Veranstaltungskalender abgebildet sind, werden "nach Vereinbarung" geplant. Eine Auflistung der betroffenen Veranstaltungen finden Sie hier: Lehrveranstaltungen, Prüfungen.

Fachinformationen zu Fachnummer 101655 - allgemeine Informationen
Fachnummer101655
FakultätFakultät für Informatik und Automatisierung
Fachgebietsnummer2234 (SP/JP Softwaretechnik für sicherheitskritische Systeme)
Fachverantwortliche(r)Prof. Dr. Patrick Mäder
SpracheDeutsch
TurnusSommersemester
Vorkenntnisse

Grundkenntnisse in C und C++ Programmierung sind von Vorteil.

Lernergebnisse
  • Kenntnis der grundlegenden Terminologie paralleler Systeme
  • Kenntnis verschiedener Kategorisierungen paralleler Systeme und paralleler Software
  • Kenntnis von Analyse- und Bewertungsmethoden von parallelen Entwürfen
  • Kenntnis und Fähigkeit der Anwendung grundlegender Entwurfsprinzipien für parallele Algorithmen
  • Fähigkeit zum Entwurf und zur Implementierung paralleler Algorithmen
  • Fähigkeit zur Implementierung von parallelen Algorithmen auf verschiedenen Hardware Plattformen
  • Kenntnis und Fähigkeit zur Anwendung verschiedener Synchronisationsmechanismen
  • Kenntnis von Optimierungsmethoden für parallel Programme
  • Fähigkeit zur eigenständigen Entwicklung einer geeigneten parallelen Lösung und deren Bewertung für ein gegebenes Problem
Inhalt

Inhalt:

Ziel dieser Vorlesung ist es eine strukturierte Einführung in die Konzepte der Parallelprogrammierung zu geben. Am Ende der Veranstaltung sollen Studierende in der Lage sein, funktionierende Parallelprogramme zu entwerfen und zu implementieren. Dabei werden sowohl CPU (z.B. pThreads) als auch GPU (z.B. Cuda) Programmiermodelle vermittelt. Darüber hinaus erlernen Studierende fundamentale Konzepte der Parallelisierung und werden in die Lage versetzt über die Korrektheit, Performance und die Konstruktion von Parallelprogrammen mittels verschiedener Parallelisierungsparadigmen (z.B. Task-Parallelisierung, Daten-Parallelisierung) und Mechanismen (z.B. Threads, Task, Locks, Communication Channels) zu urteilen. Die Lehrveranstaltung vermittelt neben einem strukturierten Einstieg in die Konzepte der parallelen Programmierung auch insbesondere praktische Aspekte der Programmierung massiv paralleler Systeme. Die in der Vorlesung vermittelten Konzepte werden durch Programmierübungen praktisch vertieft.

Schwerpunkte:

  • Grundlagen der Entwicklung paralleler Algorithmen
    • Dekompositionstechniken
    • Verteilung (mapping) und planen (scheduling) der Berechnungen
    • Muster paralleler Algorithmen
  • Programmierung von Systemen mit gemeinsamen Adressbereich
    • Threads
    • Synchronisation
    • Pthreads
    • OpenMP
  • Architekturen paralleler Systeme
    • Systeme mit gemeinsamen Speicher
    • Cache Coherence
    • Interconnection Networks und Routing
  • Programmierung skalierbarer Systeme
    • Nachrichtenbasierte Systeme
    • MPI
  • Analytische Programmmodellierung und Leistungsbewertung
    • Kennzahlen und Bewertungsmöglichkeiten
    • Performance-Messung
  • Parallele Algorithmen
    • Nichtnumerische Algorithmen
    • Numerische Algorithmen
  • Programmierung massiv-paralleler Systeme
    • GPU und CUDA Programmierung
    • OpenCL
  • MapReduce and Warehouse-scale Computing
Medienformen
  • Vorlesungsfolien
  • Tutorials, White-Paper und wissenschaftliche Beiträge
  • Entwicklungswerkzeuge
  • Auszüge aus Entwicklungsprojekten
  • Aufgabenblätter als PDF
Literatur
  • Introduction to Parallel Computing: Zbigniew J. Czech, Cambridge University Press (2017)
  • Introduction to Parallel Computing (Second Edition): Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar, Addison Wesley (2003), ISBN 0-201-64865-2
  • Programming Massively Parallel Processors: A Hands-on Approach, D.B. Kirk and W.W. Hwu, Morgan Kaufmann, 2. Ed. (2012)
  • Parallelism in Matrix Computations, E. Gallopoulos, B. Philippe, A.H. Sameh, Springer (2015)
  • Parallel Programming, T. Rauber and G. Rünger, Springer (2013)
Lehrevaluation

Pflichtevaluation:

 

Freiwillige Evaluation:

SS 2017 (Vorlesung, Seminar)

SS 2018 (Vorlesung, Seminar)

SS 2019 (Vorlesung, Seminar)

Hospitation:

Spezifik Referenzfach
FachnameParallel Computing
Prüfungsnummer
Leistungspunkte5
SWS
Präsenzstudium (h)45
Selbststudium (h)105
VerpflichtungWahlpflicht
Abschlussalternative Prüfungsleistung
Details zum Abschluss
    • First-term test on fundamentals of parallel programming -- roughly 2nd/3rd week of June (graded with up to 25 points)
    • Shared parallel programming assignment -- issued ~June 1st, due ~June 14th (graded with up to 25 points)
    • Distributed and GPU programming assignment -- issued ~June 22nd, due ~July 5th (graded with up to 25 points) 
    • Second-term test on programming models and cloud computing -- final week of the semester = 3rd week of July (graded with up to 25 points)
Anmeldemodalitäten für alternative PL oder SLDie Anmeldung zur alternativen semesterbegleitenden Abschlussleistung erfolgt über das Prüfungsverwaltungssystem (thoska) außerhalb des zentralen Prüfungsanmeldezeitraumes. Die früheste Anmeldung ist generell ca. 2-3 Wochen nach Semesterbeginn möglich. Der späteste Zeitpunkt für die An- oder Abmeldung von dieser konkreten Abschlussleistung ist festgelegt auf den (falls keine Angabe, erscheint dies in Kürze):
max. Teilnehmerzahl12
Spezifik im Studiengang Master Informatik 2013, Master Ingenieurinformatik 2014
FachnameParallel Computing
Prüfungsnummer2200592
Leistungspunkte5
Präsenzstudium (h)45
Selbststudium (h)105
VerpflichtungWahlpflicht
Abschlussalternative Prüfungsleistung
Details zum Abschluss
    • First-term test on fundamentals of parallel programming -- roughly 2nd/3rd week of June (graded with up to 25 points)
    • Shared parallel programming assignment -- issued ~June 1st, due ~June 14th (graded with up to 25 points)
    • Distributed and GPU programming assignment -- issued ~June 22nd, due ~July 5th (graded with up to 25 points) 
    • Second-term test on programming models and cloud computing -- final week of the semester = 3rd week of July (graded with up to 25 points)
Anmeldemodalitäten für alternative PL oder SLDie Anmeldung zur alternativen semesterbegleitenden Abschlussleistung erfolgt über das Prüfungsverwaltungssystem (thoska) außerhalb des zentralen Prüfungsanmeldezeitraumes. Die früheste Anmeldung ist generell ca. 2-3 Wochen nach Semesterbeginn möglich. Der späteste Zeitpunkt für die An- oder Abmeldung von dieser konkreten Abschlussleistung ist festgelegt auf den (falls keine Angabe, erscheint dies in Kürze):
max. Teilnehmerzahl12

Informationen und Handreichungen zur Pflege von Modul- und Fachbeschreibungen durch den Modul- oder Fachverantwortlichen finden Sie auf den Infoseiten zum Modulkatalog.