TU Wien:Parallel Computing VU (Träff)

Aus VoWi
Zur Navigation springen Zur Suche springen
Ähnlich benannte LVAs (Materialien):

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Stephan FelberSascha HunoldJesper Larsson Träff
ECTS 6,0
Letzte Abhaltung 2024S
Sprache Deutsch
Abkürzung parcomp
Mattermost parallel-computingRegisterMattermost-Infos
Links tiss:184710, eLearning
Zuordnungen
Bachelorstudium Informatik Modul Parallel Computing (Breite Wahl)
Bachelorstudium Wirtschaftsinformatik Modul SPF/INT - Schwerpunkt Informationstechnologie (Gebundenes Wahlfach)
Bachelorstudium Software & Information Engineering Modul Einführung in paralleles Rechnen (Parallel Computing) (Pflichtfach)
Bachelorstudium Technische Informatik Modul Parallel Computing (Gebundenes Wahlfach)


Inhalt[Bearbeiten | Quelltext bearbeiten]

Es werden verschiedene Frameworks für die Parallelisierung von Algorithmen und auch parallelisierbare Algorithmen selbst vorgestellt. Im speziellen wird auf folgende Frameworks bzw. Spracherweiterungen eingegangen:

  • Grundlagen Parallel Computing
  • Modelle von parallelen Rechnern
  • Erweiterung von Konzepten wie Laufzeit, Aufwand, etc. für parallele Algorithmen
  • Definitionen von Speedup, Parallelism, etc.
  • Anwenden der Konzepte auf einigen Beispielalgorithmen
  • OpenMP
  • pthreads (Im S20 nicht mehr behandelt, aber wurde in der VO erwähnt)
  • Cilk (Im S20 nicht mehr behandelt, aber wurde in der VO erwähnt)
  • MPI

Ablauf[Bearbeiten | Quelltext bearbeiten]

Wöchentliche Vorlesung, ca. jeden Monat ein Übungsbeispiel. Drei Beispiele insgesamt. Die Beispiele dürfen alleine oder in Gruppen von zwei Personen bearbeitet werden, wobei die Arbeit nicht geteilt werden soll (Jedes Mitglied der Gruppe soll alle Beispiele selbst lösen). Am Ende des Semesters gab es eine schritfliche Prüfung.

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]

C Kenntnisse sind sehr wichtig, da die Projekte alle in C bzw. Erweiterungen von C (OpenMP & MPI) zu programmieren sind. Darüber hinaus sollte man eventuell auch ein bisschen mit Shell-Skripten umgehen können.

Deswegen ist es empfehlenswert TU Wien:Betriebssysteme UE vorher zu absolvieren.

Basics der Laufzeitanalyse und Vorwissen aus Algorithmen und Datenstrukturen von Vorteil.

Vortrag[Bearbeiten | Quelltext bearbeiten]

Eigene Erfahrung SS23: Grauenhafte Akustik. Lässt Fragen zu und geht auf diese ein, wenn sie bei der grauenhaften Akustik verstanden werden und stellt gelegentlich Fragen. Bemühte Absicht lag vor (bat z.B. mehrmals um Rückmeldungen), weniger jedoch die erhoffte Besserung (z.B. Rückmeldungen aber keine Besserung). Außerdem: Redundante Folien deren wesentlicher Inhalt wohl auf einem Bruchteil (Zehntel?) unterzubringen wäre. Schlechtes Englisch in Folien und Skript.

Eigene Erfahrung S20: Die zweite Hälfte der VO wurde aufgezeichnet, die erste Hälfte ist leider entfallen. Ich fand den Vortrag eigentlich ganz gut und angenehm. Hätte für meinen Geschmack schneller sein können, aber sonst fand ich es leicht dem Vortrag zu folgen. Der Vortrag wurde auf Deutsch abgehalten.

Übungen[Bearbeiten | Quelltext bearbeiten]

SS 2023[Bearbeiten | Quelltext bearbeiten]

Es gab zwar wieder 3 Übungsblätter, allerdings wurden diese nicht bewertet (also sind nicht in die Note eingeflossen) sondern dienten nur als Übung, für welche man Feedback erhalten hat. Dies wurde damit begründet, da ja jeder die Übungen nur mit Chat-GPT lösen würde, wenn sie eine Anforderung wären. Alles in allem wurde man also nur durch die Tests bewertet, was diese ganze LVA eigentlich mehr zu VO als VU macht.

SS 2022[Bearbeiten | Quelltext bearbeiten]

Es gab ein Übungsblatt kombiniert mit einem Projekt. Der erste Teil bestand daraus theoretische Beispiele zu lösen. Im zweiten Teil musste man Algorithmen in C (bzw. in OpenMP und MPI) implementieren, auf Hydra (ein Rechner der LVA) benchmarken, dazu dann Plots erstellen und diskutieren und noch weitere Fragen zu den Algorithmen beantworten. Es gab auch eine Übung am Anfang des Semesters, die daraus bestand sich erfolgreich Zugang zu Hydra zu verschaffen (nicht viel Arbeit).

SS 2020[Bearbeiten | Quelltext bearbeiten]

Drei Übungsblätter:

  1. Übungsblatt: zehn Beispiele
  2. Übungsblatt: sieben Beispiele
  3. Übungsblatt: sieben Beispiele

, wobei beim 2. und 3. Übungsblatt Programmierbeispiele dabei waren. Dabei war immer ein Teil des Programms gegeben und es mussten nur einzelne Funktionen selbst implementiert werden.

SS 2019/20[Bearbeiten | Quelltext bearbeiten]

Tipp: Nachdem alle Übungsblätter abgegeben wurden, haben sie mir nachträglich Punkte für Übungsblatt 2. abgezogen. Also nicht zu knapp rechnen.

WS 2015/16[Bearbeiten | Quelltext bearbeiten]

Aus 5 Projekten muss eines ausgewählt werden und - je nach Projekt - in verschiedenen Variationen (verschiedene Lösungsansätze, verschiedene Algorithmen) und mit verschiedenen Laufzeitsystemen implementiert werden. Dabei ist jedenfalls zumindest eine sequentielle, pthreads oder OpenMP, Cilk und MPI Implementierung notwendig. In Summe kommt man auf rund 10 Implementierungen, die mit geschickten #ifdefs jedoch überschaubar bleiben. Diese müssen dann in einem Abschlussbericht verglichen und analysiert werden, vor allem hinsichtlich der Performance auf den großen Rechnern des Instituts. Es kommt nicht so sehr darauf an, dass man einen perfekten Speedup erreicht, sondern darauf, dass man gewissenhaft misst und dokumentiert und die Stärken, Schwächen und Eigenheiten seiner Lösung dokumentiert.

Die Projekte finden in 2er Gruppen statt.

Tipp: Früh benchmarken, damit die Systeme nicht ausgelastet sind.

alter Modus[Bearbeiten | Quelltext bearbeiten]

Es müssen kleine Projekte(Algorithmen) in C bzw. C-Erweiterungen(Cilk) unter Verwendung bestimmter Frameworks(pthreads, OpenMP, Cilk, MPI) realisiert werden. Im WS2012 mussten zumindest 2 von 3 Projekten entweder mit pthreads oder OpenMP(OpenMP wird empfohlen), 1 von 2 Projekten in Cilk und 3 von 4 Projekten in MPI implementiert werden. Das ergibt insgesamt eine Anzahl von 6 Projekten, dabei muss für jedes Projekt noch ein Report verfasst werden. Die Inhalte der Reports sollen sich hauptsächlich mit einem Performance-Vergleich des implementierten parallelen Algorithmus mit einem sequentiellen Algorithmus befassen.

Die Konzepte und Algorithmen welche beachtet bzw. implementiert werden sollen erklärt der Prof. prinzipiell in der VU. Daneben sind auch teilweise etwas kryptische Erklärungen in den Folien zu finden. Letzten Endes muss glaube ich jeder selbst eine Variante der erklärten bzw. geforderten Algorithmen entwickeln da die Code-Schnipsel und Erklärungen oft nicht vollständig ausreichen um den Anforderungen gerecht zu werden.

Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]

SS2023: Test 1 von 3: 60 Minuten, 12 Fragen (Multiple Choice), randomisiert, ausführliche Angaben, schnelle und klare Fragebeantwortung/Kommunikation

S20: Vier Übungen, wobei die erste (exercise 0) nur die Abgabe eines public key ist. Lt. der Vorbesprechungsfolien ist die Benotung im Vergleich zum S19 etwas entschärft worden. Man muss zwar immer noch alle vier Übungen abgeben, muss aber nur noch in Summe mindestens 50% der erreichbaren Punkte haben (es muss also nicht mehr jedes einzelne Übungsblatt positiv sein). Bei der Prüfung müssen mindestens 50% der Punkte erreicht werden. Die Aufgabenblätter zählen 60%, die Prüfung 40% zur Endnote.

Ich fand die Prüfung doch schon sehr anspruchsvoll. Hauptsächlich, weil viel zu wenig Zeit für die Bearbeitung der Aufgaben zur Verfügung stand. Die Angabe war 14 (!) A4 Seiten lang (14 Seiten echte Angabe + 2 Seiten Info) und die Prüfung bestand aus insgesamt 60 Wahr/Falsch Fragen. Dabei waren manche Fragen recht kurz, andere wiederum sehr lang. Die meisten Aufgaben der Prüfung waren wie kürzere Versionen der Übungsbeispiele. Die prüfung beinhaltete auch diverse Code Beispiele. Es war z.B. ein Snippet gegeben mit MPI Aufrufen und man musste entscheiden, wie das Ergebnis des Programmes aussehen könnte. Die Grundlagen aus den ersten paar Einheiten wurden auch ausgiebig geprüft. Zur Bearbeitung der 60 Aufgaben stand eine Stunde (60 Minuten) zur Verfügung. Insgesamt war die Zeit am Ende schon sehr knapp. Ich denke, dass viele Probleme mit der Prüfung hatten. Der Notenspiegel für die Prüfung wurde dann heruntergesetzt.

SS2019 Vor allem die Benotung wurde stark verschärft. Es gibt 3 Übungsblätter und 2 Programmierprojekte, sowie eine Abschlussprüfung. Alle Teilleistungen müssen ausnahmslos positiv sein. Wer also zum Beispiel eines der Übungsblätter vergisst oder unter 50% der Punkte erreicht, bekommt nach jetzigem Stand ein negatives Zeugnis und muss es somit nächstes Jahr nochmal versuchen. Nach derzeitigem Stand gibt es auch keine Möglichkeit negative Teilleistungen zu wiederholen, auch die Abschlussprüfung darf scheinbar nicht wiederholt werden.

Update: Es scheint doch so, dass nur die Summe der Punkte alle Aufgaben und Projekte zusammen über 50% liegen muss. Es müssen aber alle Aufgaben zumindest abgegeben werden (Vermutlich müssen Lösungsansätzen vorhanden sein). Weiteres wird es mehrere Prüfungstermine geben, wobei einem zwei antritte zur verfügung stehen. Die Prüfung besteht aus einem reinen MC-Teil, welcher mit der Hand verbessert wird. Ein bzw. kein richtig gesetztes Kreuz bringt 0.5P ein vergessenes bzw. ein falsch Kreuz -0.5P. Zwischen den einzelnen Fragen gibt es keine negativen Punkte, die minimale Anzahl an Punkte pro Frage ist 0. Die Prüfung gilt mit 17 von 37 Punkten als bestanden (~47%). Zu beachten ist, dass man bei dieser Bewertung nach oben hin extrem schnell Punkte verliert, für ein Gut bzw. Sehr Gut darf man nur wenig Fehler machen. Die Fragen sind eigentlich fast ausschließlich Praxisbeispiele bzw. Rechenbeispiele, dabei sind die einzelnen MC-Antworten wie an der TU gewohnt oft nicht wirklich eindeutig. Es lohnt sich also überhaupt nicht die 1200 Folien durchzugehen, jedoch sollte man sich Code bzw. Befehle anschauen, da auch vor allem MPI-Befehle zur Prüfung kommen, welche kein Thema in der Übung sind.

WS2017/18: Abgabegespräch mit Prüfungsteil. Es wurden Fragen zum Projekt, und zu den unterschiedlichen Implementierungen gestellt. Es wird von den Teammitgliedern erwartet alle Teile des Programmes zu verstehen, und auch erklären zu können, was bei 8 verschiedenen Programmen nicht ohne ist. Daneben werden auch noch Fragen zu den verwendeten Frameworks und in der Vorlesung vorgestellten Algorithmen gestellt, auch wenn diese keinen Bezug zum Projekt haben.

WS2015/16: Verläuft ähnlich einem Abgabegespräch. Es wird das Verständnis des gewählten Projektthemas geprüft und Fragen zu den Implementierungsvarianten gestellt. Die Laufzeit des implementierten Algorithmus sollten die Studierenden wissen.

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

Semester Prüfung am Zeugnis erhalten am Bekanntgabe der Ergebnisse nach
2015W 08.02.2016 09.02.2016
2019S 18.10.2019 04.11.2019
2020S 09.07.2020 15.07.2020 27 h

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

Die Projekte sind vom Umfang her zumindest zu Beginn überschaubar. Spätestens bei den MPI Projekten wird man feststellen, dass man einige Zeit benötigen wird um die Algorithmen wirklich richtig hin zu bekommen.

Der Lernaufwand für die Prüfung sollte nicht all zu hoch sein wenn man sich mit den Algorithmen beschäftigt hat und ein bisschen in den Folien nachliest.

Meine Erfahrung: Der Lernaufwand ist nicht extrem hoch, aber man sollte ihn auch nicht vernachlässigen.

SS 2023:[Bearbeiten | Quelltext bearbeiten]

Kaum Aufwand gehabt (siehe Punkt SS23 bei Übungen). Für die ersten beiden Prüfungen jeweils ein paar Stunden gelernt bis man die Konzepte versteht. Gesamt eher vergleichbar mit einer LVA im Ausmaß von 3 ECTs

Unterlagen[Bearbeiten | Quelltext bearbeiten]

  • Parallel Programming (im TUNET/VPN gratis downloadbar)
  • Bertil Schmidt, Jorge Gonzaalez-Domiinguez and Christian Hundt and Moritz Schlarb: Parallel Programming. Concepts and Practice. Morgan Kaufmann, 2018.

Tipps[Bearbeiten | Quelltext bearbeiten]

  • Beginnt so früh es euch nur möglich ist mit den Projekten und seht zu, dass ihr von Beginn an einen zuverlässigen Partner bekommt. Ohne Partner ist der Aufwand doch ziemlich hoch.
  • Benchmarks für sequentiell, openMP und cilk möglichst früh durchführen. Schon eine Woche vor der Deadline ist der Server oft ausgelastet, was wegen fehlendem Scheduling zu verfälschten Ergebnissen beim Benchmarken mit vielen Threads führen kann.
  • openMP und cilk sind schnell implementiert, da man das sequentielle Programm leicht anpassen kann. Die MPI Implementierung erfordert dagegen mehr Aufwand, da hier das Paradigma ein völlig anderes ist.

Highlights / Lob[Bearbeiten | Quelltext bearbeiten]

noch offen

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

2023S: Grauenhafte Akustik in VO und redundante Folien (mit "Geschwafel" und Wiederholungen) und schlechtes Englisch - typische Informatiker-LVA? Vorangegangene Kritiken sprechen für sich.

2022S: Die LVA weigert sich, aufzuzeichen oder zu streamen ("der Hörsaal ist sonst leer"), so können Corona-Positive und Personen in Quarantäne nicht teilnehmen. Gleich in der ersten Vorlesung gab es Coronafälle und trotzdem weigerte sich die LVA weiterhin, zu streamen.

2020S: Ich bin mit der Kommunikation seitens des LVA-Teams sehr unzufrieden. Der Umgang mit der Lage im S20 (Corona) war meiner Meinung nach absolut mangelhaft. Die Folien der Vorlesung wurden zwar hochgeladen, allerdings waren diese alleine wenig hilfreich. Irgendwann wurde dann auch ein Skriptum nachgereicht, allerdings ist das auch eher dünn gehalten und reicht meiner Meinung nach absolut nicht aus um die Aufgaben zu lösen. Aufzeichnungen der VO, wie dies in vielen anderen Fächern während des distance-learning umgesetzt wurde, gibt es auch nicht. Wenn ich das alles hätte selbst lernen wollen, hätte ich mir für 50€ das Buch gekauft und mir die Studiengebühren für das Semester lieber gespart... [Anmerkung 29.6.: Mittlerweile gibt es 8 aufgenommene VOs. Das Parallel Programming Buch ist übrigens gratis über TU VPN]

2020S (andere Meinung): Ich finde nicht, dass die Kommunikation des LVA-Teams schlecht war. Das LVA-Team (vor allem Prof. Hunold) hat schnell auf Fragen per E-Mail oder TUWEL geantwortet. Bezüglich der Prüfung wurde insbesondere was den Inhalt als auch den Modus angegangen ist ausführlich informiert und die Übungsblätter waren im großen und ganzen schnell und einheitlich (!) korrigiert. Lediglich bei Übungsblatt 2 hat die Korrektur etwas länger gedauert, weil der Leitung zu Inkonsistenzen aufgefallen sind. Außerdem waren die Übungsvideos mit Musterlösungen hilfreich und gut gemacht. Prüfungsergebnis war nach einem Tag auf TUWEL verfügbar.

2020S (andere Meinung): Ich bin auch nicht sehr zufrieden mit der LVA Durchführung dieses Semester. Ich fands ein bisschen zynisch in der ersten VO darauf hinzuweisen, dass Folien lernen den LVA Besuch nicht ersetzt und andererseits unter den besonderen Umständen trotzdem lang nur Folien zur Verfügung zu stellen. Weiters wurden die Folien laufend durch aktuellere Versionen ersetzt, das wurde aber nicht kommuniziert. Das Skriptum war wirklich nur eine Ergänzung zu den Folien.

2019S: Eine fürchterliche LVA, wer kann sollte diese LVA unbedingt vermeiden. Miserable Kommunikation seitens der LVA Leitung, die Prüfung, welche eigentlich kein Killer werden sollte war zwar nicht unschaffbar aber an eine gute Note braucht man eigentlich nicht zu denken. Zusammenfassend teilt sich diese LVA wohl Platz 1 der schlechtesten Lehrveranstaltungen im SE-Bachelor gemeinsam mit Funktionale Programmierung.

Ich persönlich finde die LVA war schlecht organisiert. Informationen gab es nur auf der LVA-Seite bzw. in den PDFs welche dort zum Download angeboten wurden. Die Inhalte der veröffentlichten PDFs haben sich ohne Ankündigungen während des Semester geändert. Wir haben Prof. Träff angeraten das TUWEL-System zu verwenden jedoch hatte er bis zum WS12 keine Ahnung davon, dass es solch ein System gibt. Die Abgabemodalitäten waren nicht ganz klar, ich persönlich habe ihm die PDFs per Email geschickt und in diesen ein öffentliches Repository referenziert in welchen der Code verfügbar gemacht wurde. (Update WS2015/16: TUWEL wird für die Abgabe des Reports verwendet. Es existiert eine fixe Abgabedeadline.)

Weiters sind meiner Meinung nach die Folien noch nicht wirklich ausgereift. Hier und da mangelt es an den entscheidenden Aspekten um den Inhalt vollständig zu verstehen. Die Angaben für die Projekte sind darüber hinaus auch nicht immer wirklich verständlich(vielleicht geht es nur mir so aber es war teilweise nicht ganz klar was verlangt wird).

Es gibt kein Benotungsschema, dahingehend ist es schwierig einzuschätzen was man tun muss um die jeweilige Note zu erhalten.

Materialien

Neues Material hinzufügen