Technische Universität Ilmenau

Parallel Computing - Modultafeln of TU Ilmenau

The Modultafeln have a pure informational character. The legally binding information can be found in the corresponding Studienplan and Modulhandbuch, which are served on the pages of the course offers. Please also pay attention to this legal advice (german only).
Information on the room and time of planned courses can be found in the e-calendar of events. Courses and examinations that are not listed in the e-calendar of events are planned "by appointment". A list of the events concerned can be found here: courses, examinations.

subject properties subject number 101655 - common information
subject number101655
departmentDepartment of Computer Science and Automation
ID of group2234 (Group for Software Engineering for safety-critical Systems)
subject leaderProf. Dr. Patrick Mäder
languageDeutsch
term Sommersemester
previous knowledge and experience

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

learning outcome
  • 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
content

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
media of instruction
  • Vorlesungsfolien
  • Tutorials, White-Paper und wissenschaftliche Beiträge
  • Entwicklungswerkzeuge
  • Auszüge aus Entwicklungsprojekten
  • Aufgabenblätter als PDF
literature / references
  • 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)
evaluation of teaching

Pflichtevaluation:

 

Freiwillige Evaluation:

SS 2017 (Vorlesung, Seminar)

SS 2018 (Vorlesung, Seminar)

SS 2019 (Vorlesung, Seminar)

Hospitation:

Details reference subject
subject nameParallel Computing
examination number2200592
credit points5
SWS4
on-campus program (h)45
self-study (h)105
Obligationobligatory
examalternative examination performance
details of the certificate
    • 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)
Signup details for alternative examinationsDie 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):
maximum number of participants12
Details in major Master Informatik 2013, Master Ingenieurinformatik 2014
subject nameParallel Computing
examination number2200592
credit points5
on-campus program (h)45
self-study (h)105
Obligationobligatory elective
examalternative examination performance
details of the certificate
    • 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)
Signup details for alternative examinationsDie 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):
maximum number of participants12