TU Wien:Advanced Multiproccessor Programming VU (Träff)

Aus VoWi
Wechseln zu: Navigation, Suche

Daten[Bearbeiten]

Inhalt[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]

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]

Programmierkenntnisse mit C++ sind für die Programmieraufgabe wichtig. Ansonsten sind Kenntnisse aus Parallel Computing, Betriebssysteme und Algorithmen hilfreich, aber nicht notwendig.

Vortrag[Bearbeiten]

Wöchentliche Vorlesung, volle 2 Stunden. Laut LVA-Homepage mit Anwesenheitspflicht, die aber nicht überprüft wird. Bei Bedarf in Englisch.

Übungen[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]

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.

Dauer der Zeugnisausstellung[Bearbeiten]

<2 Wochen nach der Prüfung

Zeitaufwand[Bearbeiten]

Angemessen.

Unterlagen[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]

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]

Keine.