TU Wien:Parallel Computing VU (Träff)

Aus VoWi
Zur Navigation springen Zur Suche springen

Daten[Bearbeiten]

Vortragende Prof. Dr. scient. Jesper Larsson Träff, Angelos Papatriantafyllou
ECTS 6
Abteilung Forschungsbereich Parallel Computing
Wann Winter- und Sommersemester
Sprache English
Zuordnungen
Bachelor Wirtschaftsinformatik Wahlmodul SPF/INT - Schwerpunkt Informationstechnologie
Bachelor Software & Information Engineering Pflichtmodul Einführung in paralleles Rechnen (Parallel Computing)

Mattermost: Channel "parallel-computing" Team invite & account creation link Mattermost-Infos Mattermost: Channel "parallel-computing" Team invite & account creation link Mattermost-Infos

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

  • pthreads
  • OpenMP
  • Cilk
  • MPI

Ablauf[Bearbeiten]

noch offen

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten]

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

noch offen

Übungen[Bearbeiten]

WS 2015/16[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]

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]

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]

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

Unterlagen[Bearbeiten]

noch offen

Tipps[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.

Verbesserungsvorschläge / Kritik[Bearbeiten]

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.