TU Wien:GPU Architectures and Programming VU (Bartocci)

Aus VoWi
Wechseln zu: Navigation, Suche

Daten[Bearbeiten]

Inhalt[Bearbeiten]

GPU Architekturen und Programmierung von NVIDIA GPUs mittels CUDA.

Ablauf[Bearbeiten]

2 Mal pro Woche Vorlesung.

Ausgabe des Projekts Ende März/Anfang April.

Nach der Projekt/Gruppeneinteilung gibt es drei Gruppendiskussionen (jede Gruppe 30 Minuten mit dem Leiter) und zwei Workshoptage (alle Gruppen geben Präsentation) zu den Vorlesungszeiten während dem restlichen Semester.

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten]

C/C++

Vortrag[Bearbeiten]

Mittelmäßig. Der Vortrage hat anfangs Folien von NVIDIA verwendet und später aufgezeichnete Vorlesungen zum Thema von amerikanischen Unis gezeigt.

SS14: Es wurden nur mehr Folien aus diversen Quellen vorgetragen.

Übungen[Bearbeiten]

Eine größere Programmierübung in Gruppen (2-4 Studenten).

Habe im SS13 die LVA besucht: Ich hatte damit eigentlich relativ positive erfahrungen gemacht. Die Vorträge hätten vielleicht etwas besser sein können (es wurden fast ausschließlich auf Nvidia's CUDA eingegangen, OpenCL nur rudimentär) trotzdem für mich ohne viel vorerfahrung sehr lehrreich. Vor allem das familiäre Flair im fand ich angenehm (Bibliothek der technischen Inf. mit ca. 10-15 Hörer).

Allerdings waren die Projekte wesentlich interessanter: Gearbeitet wurde in Gruppen zu 2-5 Personen. Projektideen kamen vom LVA Leiter (Ezio), wobei man aber auch seine eigenen Vorschläge einbringen kann. Die Zusammenarbeit bzw. Betreuung mit Ezio lief im großen und ganzen eigentlich problemlos (wenn man englisch spricht . Umfang: kA. ich würde meinen, vergleichbar mit Übungsteil von "space based computing middleware". Allerdings sollte man doch C/C++ sprechen und erfahrungen mit "händischem memory management" und pointern haben Prinzipiell werden zu Projektbeginn gemeinsam mit Ezio die nötigen Konzepte erarbeitet, die man dann selbstständig umsetzt (sprich eine CUDA implementierung). Im laufe des Semesters werden mit 2 bis 3 Präsentationen der Status/Abschluss des Projekts allen LVA Teilnehmern vorgetragen. Zum Abschluss ist noch ein Protokoll nötig. Benotung erfolgt ausschließlich auf Basis des Projekts.

zu den Projektthemen: Unsere Arbeit lag im Umfeld von Signal processing, genauer, eine CUDA implementierung für Signal temporal Logic. Basis war eine Paper, in dem die Konzepte und Algorithmen vorgestellt wurden, gemeinsam mit einer Matlab implementierung. Die schwierigkeit dabei lag, die sequenziellen Algorithmen so zu modifizieren, dass sie parallelisierbarer wurden um von der Power der GFX-Karten zu profitieren. Dabei bekamen wir sehr viel Unterstützung von Ezio selbst, der bereits Vorschläge dazu mitbrachte. Im Laufe des Projekts kamen wir allerdings drauf, dass manche Algorithmen nicht sinnvoll parallelisierbar waren, wodurch wir wieder teilweise sequenzielle Implementierungen umsetzten. Daher konnten wir unser Projektziel eigentlich nicht erreichen (signifikanter Performancegewinn). Dies hatte aber keinen negativen Einfluss auf die Benotung. Wir bekamen alle eine Eins

andere Teams arbeiteten an:

  • autonome Positionserkennung in einem beliebigen Raum
  • Geisterfahrerkennung durch Analyse von Videodaten von Autobahnen
  • CUDA Implementierung einer Simulation von Strömungseigenschaften des menschlichen Herzens (auf basis einer existierenden Implementierung). Dies wurde eigentlich in zwei Projekte aufgeteilt: simulation und visualisierung. Das Ergebnis konnte sich wirklich sehen lassen

Für die Projektarbeit, sollte man doch zugriff auf eine CUDA fähiges Device haben. Wir haben aber auch ssh Zugriff auf einen Rechner vom Institut bekommen, der mit einer entsprechenden Karte ausgestattet war. Zusätzlich bekommt man die Möglichkeit (nach Absprache) mit den Kepler Karten vom Institut herum zuspielen.

Prüfung, Benotung[Bearbeiten]

Benotung besteht offiziell aus den Präsentationen bei den beiden Workshoptage, dem Labor Protokoll und dem Code. Benotung scheint auf Gruppenbasis zu erfolgen.

Dauer der Zeugnisausstellung[Bearbeiten]

SS14: Workshoptag 1.7., Bekanntgabe der Note 3.7., Zeugnis erhalten am 12.7.

Zeitaufwand[Bearbeiten]

Stark abhängig von Projekt und Gruppenmitgliedern. Im Schnitt wird auf die 6 ECTS nicht viel fehlen.

Unterlagen[Bearbeiten]

Tipps[Bearbeiten]

  • Debugging und Performanceoptimierung sind bei CUDA extrem grauslich und sollten vom Zeitaufwand nicht unterschätzt werden.
  • Der Cuda Compiler compiliert zwar C++, man sollte sich aber nicht erwarten dass alle Sprachfeatures unterstützt werden.
  • Projekte werden in den selben Einheit bekannt gegeben in der zugeteilt wird. Zuteilung erfolgt in einer Art first-come first-serve, während noch nicht alle Projekte vorgestellt wurden.
  • Die Projekte wirkten stark unterschiedlich im Aufwand. Man sollte sich nicht zu stark von einem interessanten Thema ziehen lassen, wenn Zeitaufwand nicht gut abschätzbar ist.
  • Das Laborprotokoll nicht unterschätzen. Eine sinnvolle Einführung in das Thema und eine kurze Codeerklärung brauchen auch seine Zeit, ohne auf Pitfalls/Probleme einzugehen.
  • Die Gruppendiskussionen nutzen. Man kann Fragen stellen und das Problem genauer abstecken.

Verbesserungsvorschläge / Kritik[Bearbeiten]

  • Die Vorlesungen waren sehr häufig ein Ablesen des Bildschirmes, womit der Besuch nach ein paar Einheiten nicht sehr sinnvoll wirkte.
  • Die Organisation wirkte teilweise sehr chaotisch. Besonders dass es erst in der letzten Vorlesung um Debugging von CUDA Code ging war ziemlich merkwürdig.