Seminar: Explorative Methoden zur Compilergestützten 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 sinvolle Auswahl manuell zu treffen, kann für den Programmierer eine sehr schwere bis nahezu unmögliche Aufgabe sein.
Automatisierte Ansätze wie Auto-Tuning und Auto-Scheduling verwenden explorative Methoden, um gute Konfigurationen abzuleiten. Hierbei wird ein Suchraum aus möglichen Konfigurationen aufgebaut. Anschließend wird eine zugehörige Kostenfunktione, wie z.B. die Laufzeit eines Programms, minimiert. Die Suche selbst wird dabei durch Auswertung der Kostenfunktion gesteuert. Die Einsatzzwecke sind vielseitig und beinhalten Compiler-Flag-Tuning, Hyperparameter-Optimierungen (z.B. für Machine Learning Systeme), Auto-Scheduling (z.B. für Code-Generierungssysteme) und Parameter-Auto-Tuning für GPU-Kernel. Die Grenzen sind fließend und einzelne Ansätze können kombiniert verwendet werden.
In diesem Seminar wollen wir uns fundiert mit verschiedenen Ansätzen und Techniken auseinandersetzen. Dies beinhaltet verschiedene Kategorien von Suchstrategien, Arten von Suchräumen und Anwendungen (Compiler-Flag Optimierung, Kernel-Tuning, Auto-Scheduling). Die Themen werden nach Vorkenntnissen und Interessen vergeben. Ziel ist es, allen Teilnehmenden einen guten Überblick über Thematik und Methodik zu geben.
Struktur
- Seminararbeit (kurzes Paper), detaillierter als der Vortrag, Konferenzstil (double column), LaTeX Vorlage
- 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.