Pattern-Based Heterogeneous Parallelization

Aus SDQ-Institutsseminar
Vortragende(r) Lukas Böhm
Vortragstyp Masterarbeit
Betreuer(in) Philip Pfaffe
Termin Fr 2. November 2018
Vortragsmodus
Kurzfassung In dieser Arbeit werden zwei neue Arten der Codegenerierung durch den automatisch parallelisierenden Übersetzer Aphes für beschleunigte Ausführung vorgestellt. Diese basieren auf zwei zusätzlich erkannten Mustern von implizitem Parallelismus in Eingabeprogrammen, nämlich Reduktionen in Schleifen und rekursive Funktionen die das Teile-und-herrsche-Muster umsetzen. Aphes hebt sich in zwei Punkten von herkömmlichen parallelisierenden Übersetzern hervor, die über das reine Parallelisieren hinausgehen: Der erste Punkt ist, dass Aphes sich auf heterogene Systeme spezialisiert. Das zweite Hervorstellungsmerkmal ist der Einsatz von Online-Autotuning. Beide Aspekte wurden während der Umsetzung dieser Arbeit beachtet. Aus diesem Grund setzen die von uns implementierten Code-Generatoren sowohl lokale Beschleunigung über OpenMP und C++11 Threads als auch entfernte Beschleunigung mittels Nvidias CUDA um. Desweiteren setzt der generierte Code weiter auf die bereits in Aphes vorhandene Infrastruktur zum Autotuning des generierten Maschinencodes zur Laufzeit.

Während unserer Tests ließen sich in mit Aphes kompilierten Programmen mit Reduktionen in Schleifen Beschleunigungen von bis zu Faktor 50 gegenüber mit Clang kompilierten Programmen beobachten. Von Aphes transformierter Code mit rekursiven Funktionen erzielte Beschleunigungswerte von 3,15 gegenüber herkömmlich mit GCC und Clang generierten ausführbaren Dateien des gleichen Programms. In allen Fällen war der Autotuner in der Lage, innerhalb der ersten 50 Ausführungsiterationen des zu optimierenden Kernels zu konvergieren. Allerdings wiesen die konvergierten Ausführungszeiten teils erhebliche Unterschiede zwischen den Testläufen auf.