Difference between revisions of "TU Wien:Parallel Computing VU (Träff)"

From VoWi
Jump to navigation Jump to search
(Add comment that some lectures have been recorded)
 
Line 94: Line 94:
  
 
== Verbesserungsvorschläge / Kritik ==
 
== Verbesserungsvorschläge / Kritik ==
'''S20:''' 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...
+
'''S20:''' 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]
  
 
'''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.
 
'''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.

Latest revision as of 20:58, 29 June 2020

Daten[edit]

Lecturers Prof. Dr. scient. Jesper Larsson Träff, Angelos Papatriantafyllou
ECTS 6
Department Forschungsbereich Parallel Computing
When winter and summer semester
Language English
Links tiss:184710 , Mattermost-Channel
Zuordnungen
Bachelor Wirtschaftsinformatik Wahlmodul SPF/INT - Schwerpunkt Informationstechnologie
Bachelor Software & Information Engineering Pflichtmodul Einführung in paralleles Rechnen (Parallel Computing)

Mattermost: Channel "parallel-computing"RegisterMattermost-Infos Mattermost: Channel "parallel-computing"RegisterMattermost-Infos

Inhalt[edit]

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:

  • pthreads
  • OpenMP
  • Cilk
  • MPI

Ablauf[edit]

noch offen

Benötigte/Empfehlenswerte Vorkenntnisse[edit]

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

Vortrag[edit]

noch offen

Übungen[edit]

SS 2019/20[edit]

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

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

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

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.

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

Prüfung Zeugnis Dauer
04.02.2013 noch offen noch offen
08.02.2016 09.02.2016 24 h
24.06.2019 TBD TBD
18.10.2019 04.11.2019 ~2 Wochen

Zeitaufwand[edit]

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.

Unterlagen[edit]

  • 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[edit]

  • 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.

Verbesserungsvorschläge / Kritik[edit]

S20: 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]

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.