Automatische Programm-Optimierung für Moderne Many-Core Systeme
Veranstaltungsnummer 108351
Beschreibung
Die effiziente Programmierung von Anwendungen für parallele Systeme mit sogenannten Beschleunigern (accelerator, z.B. GPU oder Intel Xeon Phi) ist eine Herausforderung selbst für erfahrene Experten. Hochoptimierte Anwendungen sind oft in low-level Programmiermodellen wie OpenCL oder CUDA geschrieben. Expertenwissen wird benötigt um effiziente Anwendungen in diesen Programmiermodellen zu entwickeln, da Programmierer Details wie Speicher- und Threadhierarchien selbst verwalten müssen. Zudem ist die Performance von optimierten Anwendungen nicht portabel: Anwendungen die für ein bestimmtes System optimiert sind erreichen schlechte Performance auf anderen Systemen. Dieses Problem ist bekannt als das Performance Portability Problem.
Das Lift Projekt, entwickelt an der University of Edinburgh und der WWU, ist ein neuer Ansatz optimierten OpenCL Code von abstrakten high-level Programmen automatisch zu generieren. High-level Programme geschrieben in Lift beschreiben einzig was zu berechnen ist ohne zu beschreiben wie es berechnet werden soll. Diese high-level Programme werden systematisch mithilfe sogenannter rewrite rules in low-level Programme in Lifts Intermediate Language (IL) transformiert. Rewrite Rules codieren typische Optimierungen wie Tiling oder Register Blocking und repräsentieren verschiedene Möglichkeiten Programme zu optimieren. Ein high-level Program kann deswegen in viele verschiedene low-level Programme transformiert werden wobei jedes Programm stets dasselbe berechnet, jedoch unterschiedliche Optimierungen verwendet. Lifts low-level Programme werden anschließend in OpenCL Code übersetzt.
Low-level Programme enthalten üblicherweise numerische Parameter (z.B. die Größe einer Kachel (Tile) falls Tiling als eine mögliche Optimierung angewendet wurde). Die Performance eines OpenCL Programs hängt stark von der Wahl solcher Parameter ab. Autotuning ist ein Ansatz geeignete Werte für diese Parameter zu finden. Das AutoTuning Framework (ATF), entwickelt an der WWU basierend auf dem OpenTuner entwickelt am MIT, ermöglicht es einfach geeignete Werte für generische tuning Parameter in OpenCL Code zu finden.
In diesem Projektseminar werden wir das Lift Projekt mit dem ATF vereinen. Numerische Parameter in Lifts low-level Programmen, die derzeit ad-hoc möglichst geschickt gewählt werden, sollen durch den Autotuning Ansatz automatisch bestimmt werden. Durch diesen Ansatz erreichen wir echte Performance Portability: High-level Programme, geschrieben in Lift, werden hardware-spezifisch mithilfe von rewrite rules optimiert und numerische Parameter werden mithilfe von Autotuning bestimmt, sodass hohe Performance für verschiedene Architekturen von Beschleunigern garantiert werden kann.
Veranstalter
Ansprechpartner: Bastian Hagedorn M.Sc. und Dipl.-Inf. Ari Rasch