Zur Seitennavigation oder mit Tastenkombination für den accesskey-Taste und Taste 1 
Zum Seiteninhalt oder mit Tastenkombination für den accesskey und Taste 2 
Startseite    Anmelden     
Logout in [min] [minutetext]

Projektseminar: Design und Implementierung eines CUDA-Backends für den Lift-Compiler - Einzelansicht

Grunddaten
Veranstaltungsart Projektseminar Langtext
Veranstaltungsnummer 108066 Kurztext
Semester WS 2019/20 SWS 6
Erwartete Teilnehmer/-innen 8 Studienjahr
Max. Teilnehmer/-innen 8
Credits Belegung Belegpflicht
Hyperlink http://www.uni-muenster.de/PVS/lehre/ws19/projektseminar.html
Sprache deutsch
Termine Gruppe: [unbenannt] iCalendar Export für Outlook
  Tag Zeit Rhythmus Dauer Raum Raum-
plan
Lehrperson Status Bemerkung fällt aus am Max. Teilnehmer/-innen
Einzeltermine anzeigen
iCalendar Export für Outlook
Di. 10:00 bis 12:00 woch von 08.10.2019  Einsteinstr. 62 - M A 201 (SR 2)        
Gruppe [unbenannt]:
 


Zugeordnete Personen
Zugeordnete Personen Zuständigkeit
Gorlatch, Sergei, Prof. Dr. verantwort
Fey, Florian begleitend
Köpcke, Bastian begleitend
Studiengänge
Abschluss - Studiengang Sem ECTS Bereich Teilgebiet
MEd Gymnasien u Gesamt - Informatik (E3 079 19) -
Bachelor - Informatik (82 079 7) -
Bachelor - Informatik (82 079 11) -
Master - Informatik (88 079 8) -
Master - Informatik (88 079 14) -
Bachelor - Informatik (82 079 14) -
Prüfungen / Module
Prüfungsnummer Modul
14201 Projektseminar - MEd Gymnasien u Gesamt Informatik Version 2019
18016 Projektseminar - Bachelor Informatik Version 2011
16009 Projektseminar - Bachelor Informatik Version 2007
17016 Projektseminar - Bachelor Informatik Version 2011
13001 Informatik-Projektseminar - Master Informatik Version 2014
14001 Projektseminar - Master Informatik Version 2008
18001 Projektseminar - Bachelor Informatik Version 2014
Zuordnung zu Einrichtungen
Fachbereich 10 Mathematik und Informatik
Inhalt
Kommentar

Die Landschaft der hochperformanten parallelen Prozessoren befindet sich in einem rasanten Umbruch durch die Einführung von spezialisierten Recheneinheiten, die wachsende Rechenleistung auf Kosten allgemeiner Anwendungsmöglichkeiten anbieten. Diese Hardware ist meist schwierig zu programmieren und benötigt Expertenwissen zum Erreichen von maximaler Performanz. Ein Beispiel für solch spezialisierte Hardware sind NVIDIAs Tensor Cores. Mit diesen lassen sich besonders effizient Matrix-Multiplikationen berechnen. Ein großer Nachteil ist, dass nicht jede GPU (Graphics Processing Unit) Tensor Cores unterstützt und dass Programme, die Tensor Cores verwenden, nicht auf solchen GPUs ausgeführt werden können, obwohl das gleiche (eine Matrix-Multiplikation) berechnet werden soll.

Der Lift Compiler, entwickelt an der University of Edinburgh, der University of Glasgow und der WWU, ist ein aktueller Ansatz, um GPU-Programme von abstrakten High-Level-Programmen automatisch zu generieren. High-Level-Programme in Lift beschreiben einzig, was zu berechnen ist, ohne zu beschreiben, wie es berechnet werden soll. Diese High-Level-Programme werden systematisch mithilfe sogenannter Rewrite-Rules in Low-Level-Programme in Lifts Intermediate Language (IL) transformiert. Die IL basiert auf Primitiven, die hardwarenahe Konzepte zur Programmierung von GPUs modellieren. So lässt sich zum Beispiel die Verwendung von spezifischen Speicherbereichen auf der GPU, mit den ihnen gegebenen Vor- und Nachteilen, festlegen. Nichtsdestotrotz lässt sich das gleiche Programm berechnen, unabhängig davon, welcher Speicherbereich verwendet wird. Ein High-Level-Programm kann somit in viele verschiedene Low-Level-Programme transformiert werden, wobei jedes Programm stets dasselbe berechnet, jedoch unterschiedliche Optimierungen oder Hardware verwendet. Lifts Low-Level-Programme werden anschließend in Code für die Zielplattform übersetzt.

CUDA ist die State-of-the-Art-Plattform zur Entwicklung von rechenintensiven hoch-parallelen Programmen auf NVIDIA GPUs. In der Industrie und Wissenschaft ist es unter anderem relevant im Kontext von Wetter-Simulationen, Bioinformatik, Data Science und Machine Learning. CUDA ermöglicht die Verwendung von spezialisierter Hardware wie Tensor Cores, unterstützt spezifische Instruktionen zum schnellen hardwaregestützten Austausch von Daten zwischen Registern von verschiedenen Threads, bietet einen hochentwickelten Profiler zum Erkennen von Bottlenecks bezüglich der Performanz von Programmen und vieles mehr.

In diesem Projektseminar soll der Lift Compiler um ein CUDA Backend erweitert werden. Lifts IL, die derzeit auf OpenCL-spezifischen Primitiven basiert, soll dazu um CUDA-spezifische Primitive ergänzt werden. Insbesondere für spezialisierte Hardware ist dazu eine Analyse der Anforderungen an diese Primitive zur Codegenerierung nötig. Um generierte Lift-Programme ausführen und testen zu können, soll außerdem eine C++-Bibliothek entwickelt werden, die ein Interface zwischen der CUDA-Laufzeitumgebung und dem in Scala entwickelten Lift Compiler darstellt.

Voraussetzungen

Die Teilnahme an diesem Projektseminar setzt grundlegende Kenntnisse der Programmiersprache C++ voraus. Kenntnisse in der parallelen Programmierung sind von Vorteil.

Leistungsnachweis Vorträge, Implementierung eines Softwaresystems, Ausarbeitung, aktive Teilnahme

Strukturbaum
Keine Einordnung ins Vorlesungsverzeichnis vorhanden. Veranstaltung ist aus dem Semester WS 2019/20 , Aktuelles Semester: SoSe 2024