Seminar: Strategien zur Automatischen Programmoptimierung

Moderne Prozessoren, wie z.B. Multi-Core-CPUs und GPUs, haben ein hohes Leistungspotenzial, erfordern jedoch eine komplexe Programmierung, um dieses Potenzial abzurufen. Insbesondere für die effiziente Ausnutzung der tiefen und komplexen Speicher- und Kern-Hierarchien dieser Prozessoren sind spezielle Low-Level-Programmiertechniken erforderlich, welche in der Regel durch aufwändige und fehleranfällige Speicherzugriffsmuster und Parallelisierungsstrategien gekennzeichnet sind. Die Menge an verfügbaren Kombinationen von Optimierungen ist von enormer Größe. Zusätzlich können viele Optimierungen um sogenannte numerische Parameter (z.B. Anzahl an Threads oder Größe der Vektorregister) ergänzt werden. Performante und effiziente Konfigurationen abzuleiten, ist ein sehr aufwändiges Optimierungsproblem. Eine sinnvolle Auswahl manuell zu treffen, kann eine sehr schwere bis nahezu unmögliche Aufgabe sein.

Automatisierte Ansätze unterstützen die Programmierung, indem Konfigurations- und Optimierungsoptionen möglichst automatisch gewählt werden. Hierbei unterscheiden sich die Ansätze in den verwendeten Optimierungsstrategien, Entscheidungskriterien, Einsatzzwecken, Codierung von Konfigurationen sowie Repräsentation und Verwaltung von Suchräumen.

In diesem Seminar wollen wir uns fundiert mit verschiedenen Ansätzen und Techniken aus dem Bereich Auto-Tuning, Auto-Scheduling und AutoML, sowie mit High-level und Code-generation Frameworks auseinandersetzen. Die Themen werden nach Vorkenntnissen und Interessen vergeben. Ziel ist es, allen Teilnehmenden einen guten Überblick über Thematik und Methodik zu geben.

Struktur 

  1.  Seminararbeit (kurzes Paper), detaillierter als der Vortrag, Konferenzstil (double column), LaTeX Vorlage
  2. Vortrag vor den anderen Teilnehmern (ca. 20 Minuten Vortrag + 10 Minuten Fragen)

LearnWeb

Die Verwaltung wird über das LearnWeb durchgeführt. Der zugehörige Kurs findet sich unter diesem Link