TU Wien:Advanced Multiprocessor Programming VU (Träff)
Daten[Bearbeiten | Quelltext bearbeiten]
Vortragende | Prof. Dr. Scient. Jesper Larsson Träff, Martin Wimmer |
---|---|
ECTS | 4 |
Alias | Advanced Multiprocessor Programming (en) |
Letzte Abhaltung | 2024W |
Sprache | English |
Mattermost | weiterfuehrende-multiprocessor-programmierung • Register • Mattermost-Infos |
Links | tiss:184726 , Homepage |
Inhalt[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
Programmierkenntnisse mit C++ sind für die Programmieraufgabe wichtig. Ansonsten sind Kenntnisse aus Parallel Computing, Betriebssysteme und Algorithmen hilfreich, aber nicht notwendig.
Vortrag[Bearbeiten | Quelltext bearbeiten]
Wöchentliche Vorlesung, volle 2 Stunden. Laut LVA-Homepage mit Anwesenheitspflicht, die aber nicht überprüft wird. Bei Bedarf in Englisch.
Übungen[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
<2 Wochen nach der Prüfung
Zeitaufwand[Bearbeiten | Quelltext bearbeiten]
Angemessen.
Unterlagen[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
Keine.