toplogo
Увійти

LOOPer: Ein gelernter automatischer Codeoptimierungscompiler für polyhedrale Compiler


Основні поняття
LOOPer ist der erste polyhedrale Autoscheduler, der ein tiefes lernbasiertes Kostenmodell verwendet und eine große Menge an affinen Transformationen und Programme abdeckt. Es unterstützt die Erkundung einer großen Menge an affinen Transformationen, was die Anwendung komplexer Folgen von polyhedralen Transformationen ermöglicht. Es unterstützt auch die Optimierung von Programmen mit mehreren Schleifen-Nestern und mit rechteckigen und nicht-rechteckigen Iterationsdomänen, was die Optimierung eines umfangreichen Satzes von Programmen ermöglicht.
Анотація
Der Artikel stellt LOOPer vor, einen neuen polyhedralen Autoscheduler, der eine tiefes lernbasiertes Kostenmodell verwendet, um eine große Menge an affinen Transformationen und Programme zu unterstützen. LOOPer adressiert die Einschränkungen bestehender polyhedraler Autoscheduler wie Tiramisu, die nur eine kleine Teilmenge an affinen Transformationen und Programme mit einzelnen Schleifen-Nestern und rechteckigen Iterationsdomänen unterstützen. LOOPer unterstützt stattdessen: Eine große Menge an affinen Transformationen, einschließlich Folgen von Transformationen Programme mit mehreren Schleifen-Nestern Programme mit rechteckigen und nicht-rechteckigen Iterationsdomänen Das ermöglicht die Optimierung eines umfangreichen Satzes von Programmen. LOOPer verwendet ein tiefes lernbasiertes Kostenmodell, um die Transformationen zu evaluieren und die Suche zu steuern. Die Evaluation zeigt, dass LOOPer im Vergleich zu anderen Compilern wie Tiramisu und Pluto signifikante Leistungssteigerungen erzielt, mit einer durchschnittlichen Beschleunigung von 1,59x gegenüber Tiramisu und 1,34x gegenüber Pluto auf dem PolyBench-Benchmark.
Статистика
LOOPer erzielt eine durchschnittliche Beschleunigung von 1,59x gegenüber Tiramisu auf dem PolyBench-Benchmark. LOOPer erzielt eine durchschnittliche Beschleunigung von 1,34x gegenüber Pluto auf dem PolyBench-Benchmark.
Цитати
Keine relevanten Zitate gefunden.

Ключові висновки, отримані з

by Massinissa M... о arxiv.org 03-19-2024

https://arxiv.org/pdf/2403.11522.pdf
LOOPer

Глибші Запити

Wie könnte man LOOPer noch weiter verbessern, um eine noch größere Menge an affinen Transformationen und Programmen zu unterstützen?

Um LOOPer weiter zu verbessern und eine größere Vielfalt an affinen Transformationen und Programmen zu unterstützen, könnten folgende Maßnahmen ergriffen werden: Erweiterung des Transformationsspektrums: LOOPer könnte um weitere affine Transformationen erweitert werden, die bisher nicht abgedeckt sind. Dies könnte die Implementierung von Transformationen wie Loop Distribution, Loop Fission oder Loop Fusion beinhalten, um eine breitere Palette von Optimierungsmöglichkeiten zu bieten. Flexiblere Transformationsschritte: Die Möglichkeit, mehrere Transformationsschritte in beliebiger Reihenfolge anzuwenden, könnte die Flexibilität von LOOPer erhöhen. Durch die Unterstützung von komplexen Sequenzen von Transformationen könnten noch umfassendere Optimierungen erreicht werden. Berücksichtigung von Nicht-rechteckigen Iterationsbereichen: Die Erweiterung der Unterstützung für Programme mit nicht-rechteckigen Iterationsbereichen würde LOOPer befähigen, eine breitere Palette von Programmen zu optimieren, die bisher nicht abgedeckt waren. Integration von Domänenwissen: Durch die Integration von domänenspezifischem Wissen in das Modell könnte LOOPer besser auf spezifische Anforderungen bestimmter Anwendungsgebiete eingehen und optimale Transformationen vorschlagen.

Welche zusätzlichen Hardwareinformationen könnten in das Kostenmodell aufgenommen werden, um die Vorhersagegenauigkeit weiter zu erhöhen?

Um die Vorhersagegenauigkeit des Kostenmodells von LOOPer weiter zu verbessern, könnten zusätzliche Hardwareinformationen integriert werden. Dazu gehören: Spezifische Hardwaremerkmale: Die Berücksichtigung von spezifischen Merkmalen der Zielhardware, wie Cache-Größe, Speicherbandbreite und Pipelining-Eigenschaften, könnte dazu beitragen, die Leistungsvorhersagen genauer zu gestalten. Architekturabhängige Optimierungen: Die Einbeziehung von Informationen über die Hardwarearchitektur, wie SIMD-Einheiten oder Vektorisierungsmöglichkeiten, könnte dazu beitragen, Transformationen zu priorisieren, die die Hardwareeffizienz maximieren. Energieverbrauchsmessungen: Die Integration von Schätzungen zum Energieverbrauch der optimierten Programme könnte dazu beitragen, energieeffiziente Optimierungen vorzuschlagen und die Gesamtleistung der Anwendungen zu verbessern. Dynamische Ressourcenauslastung: Die Berücksichtigung der aktuellen Auslastung der Hardwareressourcen während der Ausführung der optimierten Programme könnte dazu beitragen, Vorhersagen zu treffen, die die Ressourcennutzung optimieren und Engpässe vermeiden.

Wie könnte man LOOPer so erweitern, dass es auch andere Hardwarearchitekturen wie GPUs oder spezielle Hardware-Beschleuniger unterstützt?

Um LOOPer zu erweitern und die Unterstützung für andere Hardwarearchitekturen wie GPUs oder spezielle Hardware-Beschleuniger zu ermöglichen, könnten folgende Schritte unternommen werden: Anpassung des Kostenmodells: Das Kostenmodell von LOOPer könnte um spezifische Merkmale und Optimierungstechniken für GPUs und Hardware-Beschleuniger erweitert werden. Dies könnte die Integration von GPU-spezifischen Transformationen und Parallelisierungstechniken umfassen. Hardware-spezifische Optimierung: Durch die Implementierung von Hardware-spezifischen Optimierungen, die auf die Architektur von GPUs oder Hardware-Beschleunigern zugeschnitten sind, könnte LOOPer die Leistung für diese speziellen Hardwareumgebungen maximieren. Parallele Ausführungsoptimierungen: Die Integration von Optimierungen, die die parallele Ausführung auf GPUs oder Hardware-Beschleunigern maximieren, könnte die Effizienz der optimierten Programme weiter steigern und die Leistung auf diesen Plattformen verbessern. Hardware-Abstraktionsschicht: Die Implementierung einer Hardware-Abstraktionsschicht in LOOPer könnte es ermöglichen, die Optimierungen plattformunabhängig zu gestalten und die Anpassung an verschiedene Hardwarearchitekturen zu erleichtern.
0
visual_icon
generate_icon
translate_icon
scholar_search_icon
star