TU Wien:Parallel Computing VU (Träff)

Aus VoWi
Wechseln zu: Navigation, Suche


Daten[Bearbeiten]

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]

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

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]

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.