Projektseminar:
Auto-Tuning
von Stencil-Berechnungen
auf modernen Many-Core-Systemen

(Belegnummer 104181)

Inhalt

Many-Core-Systeme, ausgestattet mit CPUs sowie sog. Beschleunigern wie z.B. Grafikkarten (GPUs) oder Intel Xeon Phi Prozessoren, gewinnen aufgrund ihrer hohen Performance zunehmend an Bedeutung. Die Programmierung solcher Systeme geschieht zurzeit meistens in OpenCL -- einem Standard zur einheitlichen Programmierung heterogener Hardware-Architekturen. Eine grundlegende Schwäche von OpenCL-Anwendungen ist die fehlende Portabilität von Performance: so kann Programmcode mit einer hohen Performance auf CPUs eine schlechte Performance auf GPUs aufweisen und umgekehrt. Zudem kann die Performance zusätzlich für verschiedene Eingabegrößen der jeweiligen Anwendung stark variieren.

Auto-Tuning ist ein Ansatz, um automatisiert optimierten Code zu generieren: 1) Anwendungen werden parametrisiert in „Tuning-Parametern“ implementiert; 2) durch eine automatisierte Wahl von Parameterwerten wird die Anwendung für unterschiedliche Hardware und Eingabegrößen optimiert.

Im Rahmen dieses Projektseminars soll die Effektivität des Auto-Tuning-Ansatzes für die Generierung von optimiertem OpenCL-Code für Stencil-Berechnungen untersucht werden. Stencil-Berechnungen stellen eine Klasse numerischer Algorithmen dar: i) sie operieren auf multi-dimensionalen Arrays und ii) Array-Elemente werden basierend auf den Werten ihrer Nachbarelemente berechnet. Große Relevanz haben sie beispielsweise in der Bilderverarbeitung und Computersimulation.

Die Teilnehmer werden sich zunächst mit der Hardware moderner Prozessoren -- Intel CPUs, NVIDIA GPUs und Intel Xeon Phis -- auseinandersetzen, und sich mit Optimierungen in OpenCL vertraut machen. Dieses Wissen soll anschließend verwendet werden, um eine in Tuning-Parametern parametrisierte OpenCL-Implementierung für Stencil-Berechnungen zu entwickeln. Für die Bestimmung konkreter Parameterwerte soll die Bibliothek OpenTuner verwendet werden, welche derzeit am MIT entwickelt wird. Diese verspricht eine hohe Effektivität für die Bestimmung von Tuning-Parameter-Werten beliebiger Anwendungen. Die im Projekt entwickelte Implementierung soll abschließend im Rahmen einer Evaluation detailliert analysiert und mit verwandten Ansätzen verglichen werden.

Die Teilnehmer werden detaillierte Kenntnisse über die Architektur und Programmierung moderner Many-Core-Systeme erlangen und sich ein Bild von der modernen Forschung auf diesem Gebiet machen.


Vorkenntnisse

Grundlegende Kenntnisse der Programmiersprache C++ werden vorausgesetzt. 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 3. Februar um 11:00 Uhr (ct.) im Lichthof des 7. 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. Tim Humernbrum, Dipl.-Inf. Ari Rasch


Material