Original-URL des Artikels: https://www.golem.de/news/llvm-google-will-mit-mlir-den-compilerbau-vereinfachen-2002-146903.html    Veröffentlicht: 27.02.2020 14:24    Kurz-URL: https://glm.io/146903

LLVM

Google will mit MLIR den Compilerbau vereinfachen

Mehrere Google-Forscher überlegen in einer Abhandlung, wie sich der Bau von Intermediate Representations (IR) für domänenspezifische Programmiersprachen vereinfachen lässt. Das könnte große Auswirkungen auf den Compilerbau von LLVM haben.

Der amerikanische Informatiker Chris Lattner ist vor allem als Gründer des Compiler-Projekts LLVM bekannt. Gemeinsam mit weiteren Forschern, die fast ausschließlich Google-Mitarbeiter sind, hat Lattner ein Paper zur Compiler-IR der Zukunft veröffentlicht. Die Untersuchung trägt den Titel MLIR: A Compiler Infrastructure for the End of Moore's Law und ist auf Arxiv.org verfügbar. Ziel des neuen Ansatzes ist es, eine wiederverwendbare und erweiterbare Intermediate Representation (IR) für Compiler-Infrastruktur zu bauen.

Flexiblere IR gesucht

Der Anstoß für die Untersuchung ist dabei leicht nachvollziehbar. Zwar sei die LLVM IR bereits ein wertvoller Ansatz, der Sprachen wie C, C++ und Java abdecke, schreiben die Forscher. Allerdings lassen sich ihnen zufolge viele sprachspezifische Eigenheiten mit der LLVM IR dennoch nur schlecht abbilden. Daher erstellen die Entwickler von Sprachen wie Swift, Rust oder Fortran gern eigene IRs, um sprach- und bibliothekenspezifische Probleme zu modellieren. Der Aufbau solcher IRs benötige aber viel Zeit und Ressourcen und die Umsetzung habe am Ende oft nicht die optimale Qualität, weil das keine Priorität besitze, heißt es in dem Paper. MLIR ist also auch ein Ansatz, dieses Problem in den Griff zu bekommen.

MLIR soll Software- und Hardware-Fragmentierung adressieren und die Kosten für den Bau eines domänenspezifischen Compilers signifikant senken. Dafür will MLIR den Aufwand für das Design und die Implementierung von Code-Generatoren, Übersetzern und Optimierern senken. Das soll auf verschiedenen Abstraktionsebenen passieren, über verschiedene Anwendungsdomänen, Hardware-Plattformen und Laufzeitumgebungen hinweg. Das Paper diskutiert dabei nicht nur die Compiler-Infrastruktur selbst, sondern will auch als Denkanstoß für die zukünftige Arbeit an Compilern dienen. Daneben soll es auch in der Lehre Platz finden.

Konkret soll es künftig mit wenig Aufwand möglich werden, Abstraktionsebenen einzuführen. Das will MLIR unter anderem damit erreichen, dass es SSA-basierte (Static Single Assignment) IR-Datenstrukturen standardisiert, ein deklaratives System anbietet, um IR-Dialekte zu definieren, und eine breite Auswahl an üblicher Infrastruktur anbietet wie etwa Dokumentation, Parsing- und Printing-Logik, Location Tracking und so weiter. Weitere Details zu den Plänen finden sich in dem Paper.

Das LLVM-Projekt selbst pflegt eine eigene Webseite zu der MLIR-Idee mit weiteren Ressourcen für interessierte Entwickler. Dort werden Hintergründe erläutert und auch bereits einige Implementierungen der Idee vorgestellt. Dazu gehören etwa das Machine-Learning-Framework Tensorflow sowie einige wenige weitere Projekte aus diesem IT-Bereich. Auch der neun Fortran-Compiler des LLVM-Projekts, Flang, nutzt demnach bereits eine IR, die an MLIR angelehnt ist.

 (lm-kki)


Verwandte Artikel:
Chris Lattner: LLVM-Gründer wechselt zu RISC-V-Spezialist   
(28.01.2020, https://glm.io/146307 )
Mozilla, Cloudflare und andere: BinaryAST soll Javascript schneller ausführen   
(20.05.2019, https://glm.io/141373 )
App-Entwicklung: Google startet Langzeitsupport für Android-NDK   
(18.10.2019, https://glm.io/144493 )
Compiler: LLVM 9 baut x86-Linux-Kernel   
(20.09.2019, https://glm.io/143986 )
ARM: Memory-Tagging soll Speicherlücken in Android verhindern   
(06.08.2019, https://glm.io/143016 )

© 1997–2020 Golem.de, https://www.golem.de/