Projektseminar:
Implementierung paralleler Programmiermuster auf
modernen many-core Systemen in OpenCL
(Belegnummer 102415)
Inhalt
Spätestens mit dem Erreichen der natürlichen physikalischen Grenzen von single-core Systemen haben many-core Systeme, wie Beispielsweise multi-core Prozessoren (CPUs) oder Grafikkarten (GPUs), zunehmend an Bedeutung gewonnen.
Die Programmierung von many-core Systemen unterscheidet sich dabei jedoch maßgeblich von der herkömmlichen Art der Programmierung und ist in vielerlei Hinsichten anspruchsvoller. Beispielsweise muss sich der Programmierer explizit um die Verwaltung der Parallelität kümmern, was mit Herausforderungen wie Synchronisation und effizienten Datentransfers einhergeht. Auch erfordert die Entwicklung effizienter Algorithmen detaillierte Kenntnisse der zugrundeliegenden Hardware.
Dies motiviert die Erforschung von Ansätzen zur Vereinfachung der parallelen Programmierung. Einen bedeutenden Zweig stellt dabei die Abstraktion durch “parallele Programmiermuster” dar, in der Fachsprache auch als “algorithmische Skelette” bezeichnet. Durch Verwendung dieser wird es dem Anwender möglich, seine Programme weiterhin auf einem algorithmischen Level zu formulieren, ohne sich dabei explizit den Herausforderungen der Parallelität stellen zu müssen.
In diesem Projektseminar wollen wir uns mit der Umsetzung solcher parallelen Programmiermuster auseinandersetzen. Hierfür werden wir uns zunächst detailliert mit der Architektur verschiedener moderner many-core Systeme, wie beispielsweise den Intel Sandy/Ivy Bridge CPUs, NVIDIA Kepler GPUs oder den Intel Xeon Phis auseinandersetzen. Anschließend werden wir dieses Wissen nutzen, um verschiedene parallele Programmiermuster systematisch in optimierten Programmcode umzusetzen. Die Umsetzung wird dabei in OpenCL geschehen, einem populären Standard zur uniformen Programmierung von many-core Systemen. Im Rahmen einer Evaluation werden wir die gewonnen Ergebnisse dann detailliert analysieren und mit den Resultaten bestehender Ansätze vergleichen.
Die Teilnehmer sollen im Anschluss an das Projektseminar detaillierte Kenntnisse über moderne many-core Systeme erlangt haben und dieses Wissen für eine effiziente Programmierung dieser nutzen können.
Vorkenntnisse
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
Termine
- Der Termin für die Vorbesprechung ist Mittwoch, der 23. Juli um 11:00 Uhr (st.) im Lichthof des 6. Stocks, Einsteinstr. 62.
- Die wöchentlichen Treffen werden Dienstags, um 10:00 Uhr (ct.) im SR 7 der Einsteinstr. 62 stattfinden.
Veranstalter
Prof. Sergei Gorlatch, Dipl.-Inf. Ari Rasch, Dipl.-Inf. Michael Haidl
Material