TU Wien:Advanced Multiprocessor Programming VU (Träff)
Daten[edit | edit source]
Lecturers | Prof. Dr. Scient. Jesper Larsson Träff, Martin Wimmer |
---|---|
ECTS | 4 |
Department | Forschungsbereich Parallel Computing |
When | summer semester |
Language | English |
Links | tiss:184726, Homepage |
Mattermost: Channel "advanced-multiproccessor-programming" • Register • Mattermost-Infos
Inhalt[edit | edit source]
Aus TISS:
Speichermodelle, Synchronisationsprobleme, -operatione, und -primitive, atomische Operationen, Konsensus, Universalität und Unmöglichkeit, "Locks", "Lock- and Wait-free" Datenstrukturen und Algorithmen (Warteschlangen, Listen, Hash-Tabellen, Suchstrukturen, ua.), "Work-stealing". Programmierprojekt (C/C++ mit Pthreads, oder Java, oder...)
Aus Studentensicht: Der erste Teil war theoretischer Natur (Amdahl's law, mutual exclusion, registers and impossibility of achieving censuns >2 with registers, atomic operations, lock implementations, deadlock-, starvation-, lock- and wait-freedom, linearization, memory consistency models. Der zweite Teil war eher praktischer Natur: Implementierung von Locks und lock- and wait-free data structures. Am Ende gab es eine kurze Einführung in das C++11 Speichermodel und atomare Operationen in C++.
Persönliche Meinung: Der theoretische und praktische Teil ergänzen einander sehr gut.
Ablauf[edit | edit source]
Wöchentliche Vorlesung, volle 2 Stunden. 2 theoretische Übungsblätter, eine praktische Programmierübung in einer 2er Gruppe. Prüfung am Ende des Semesters.
Benötigte/Empfehlenswerte Vorkenntnisse[edit | edit source]
Programmierkenntnisse mit C++ sind für die Programmieraufgabe wichtig. Ansonsten sind Kenntnisse aus Parallel Computing, Betriebssysteme und Algorithmen hilfreich, aber nicht notwendig.
Vortrag[edit | edit source]
Wöchentliche Vorlesung, volle 2 Stunden. Laut LVA-Homepage mit Anwesenheitspflicht, die aber nicht überprüft wird. Bei Bedarf in Englisch.
Übungen[edit | edit source]
2 theoretische Übungsblätter sind zu Hause auszuarbeiten und dann in einer Übungsstunde an der Tafel zu präsentieren. Läuft sehr locker ab: Studenten können sich freiwillig melden, es ist mehr eine gemeinsame Diskussion der Beispiele.
Praktische Programmieraufgabe: Im ersten Teil geht es nur darum, das verwendete Framework zum Laufen zu bringen und damit ein bisschen umgehen zu lernen. Für die eigentliche Aufgabe muss man eine parallele Datenstruktur implementieren. Die meisten Datenstrukturen waren lock-and-wait free, es gab aber auch eine die mit Locks implementiert werden musste. Abgeben werden muss ein detailiertes Protokol (Beschreibung der Datenstruktur, theoretische Analyse zu Linearisierung, Deadlock- und Starvation-freedom, Benchmarks usw).
Prüfung, Benotung[edit | edit source]
Mündliche Prüfung zu Beginn der Sommerferien, wobei es eher ein Abgabegespräch zur Programmieraufgabe ist: Man diskutiert mit den Vortragenden und seinem Buddy aus der Programmierübung das erstellte Protokol. Wenn man sich Mühe gegeben hat, ist es viel mehr eine Diskussion als eine Prüfung: es wird gefragt, warum und wie man Sachen implementiert hat, ob etwas nicht funktioniert hat usw. und wertvolles Feedback zum Erstellen von Protokollen/Papers gegeben.
SS2021 Oral discussion about the project and some basic questions related to the lecture material (e.g. definition of lock-free, wait-free, ABA problem, TSO etc..)
Dauer der Zeugnisausstellung[edit | edit source]
<2 Wochen nach der Prüfung
Zeitaufwand[edit | edit source]
Angemessen.
Unterlagen[edit | edit source]
Vorlesungsfolien auf der LVA-Homepage sowie das dort vorgeschlagene Buch: Maurice Herlihy, Nir Shavit: The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Revised 1st Edition, 2012.
Tipps[edit | edit source]
Aufwand der Programmieraufgabe nicht unterschätzen! Die LVA-Leitung legt großen Wert auf ordentliche und vollständige Protokolle. Die theoretischen Übungsaufgaben müssen auch abgegeben werden und sollten daher sauber ausgearbeitet sein.
Verbesserungsvorschläge / Kritik[edit | edit source]
Keine.