Kurzfassung
|
Parallelisierende Compiler und Auto-Tuner sind zwei der vielen Technologien, die Entwick-
lern das Schreiben von leistungsfähigen Anwendungen für moderne heterogene Systeme
erleichtern können. In dieser Arbeit stellen wir einen parallelisierenden Compiler vor, der
Parallelität in Programmen erkennen und parallelen Code für heterogene Systeme erzeu-
gen kann. Außerdem verwendet der vorgestellte Compiler Auto-Tuning, um eine optimale
Partitionierung der parallelisierten Codeabschnitte auf mehrere Plattformen zur Laufzeit
zu finden, welche die Ausführungszeit minimiert. Anstatt jedoch die Parallelisierung ein-
mal für jeden parallelen Abschnitt zu optimieren und die gefundenen Konfigurationen so
lange zu behalten wie das Programm ausgeführt wird, sind Programme, die von unserem
Compiler generiert wurden, in der Lage zwischen verschiedenen Anwendungskontexten zu
unterscheiden, sodass Kontextänderungen erkannt und die aktuelle Konfiguration für je-
den vorkommenden Kontext individuell angepasst werden kann. Zur Beschreibung von
Kontexten verwenden wir sogenannte Indikatoren, die bestimmte Laufzeiteigenschaften
des Codes ausdrücken und in den Programmcode eingefügt werden, damit sie bei der Aus-
führung ausgewertet und vom Auto-Tuner verwendet werden können. Darüber hinaus
speichern wir gefundene Konfigurationen und die zugehörigen Kontexte in einer Daten-
bank, sodass wir Konfigurationen aus früheren Läufen wiederverwenden können, wenn die
Anwendung erneut ausgeführt wird.
Wir evaluieren unseren Ansatz mit der Polybench Benchmark-Sammlung. Die Ergeb-
nisse zeigen, dass wir in der Lage sind, Kontextänderungen zur Laufzeit zu erkennen und
die Konfiguration dem neuen Kontext entsprechend anzupassen, was im Allgemeinen zu
niedrigeren Ausführungszeiten führt.
|