Kommentar |
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 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 Kostenfunktion, wie z.B. die Laufzeit eines Programms, minimiert. Die Suche selbst wird 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.
|
Leistungsnachweis |
1. Seminararbeit (kurzes Paper), detaillierter als der Vortrag, Konferenzstil (double column), LaTeX-Vorlage
2. Vortrag vor den anderen Teilnehmenden (ca. 20 Minuten Vortrag + 10 Minuten Fragen) |