LLVM-Fortran-Compiler Flang erhält erste offizielle Release
(blog.llvm.org)- LLVM enthält seit LLVM 11 im Jahr 2020 den Fortran-Compiler Flang
- Der Name der anfänglichen ausführbaren Datei war nicht
flang, sondernflang-new - Mit LLVM 20 wurde
flang-newinflangumbenannt, was die Reife von Flang anerkennt - Nach jahrelanger Entwicklung hat sich Flang als offizieller Fortran-Compiler etabliert
Die Bedeutung von Fortran
- Fortran begann in den 1950er-Jahren als Sprache für Formula Translation
- Wird breit in wissenschaftlichen Berechnungen eingesetzt (Wettermodellierung, Strömungsmechanik, Computerchemie usw.)
- In jüngster Zeit wurde das Fortran-Ökosystem wieder belebt
- Fortran-Paketmanager (fpm), eine inoffizielle Standardbibliothek, LFortran usw. sind entstanden
- Mehr als 80 % des auf dem Supercomputer ARCHER2 ausgeführten Codes sind in Fortran geschrieben
Warum ein neuer Fortran-Compiler nötig ist
- Bestehende Fortran-Compiler:
- Intel-Fortran-Compiler, NVIDIA-HPC-Compiler usw.
- Open-Source-Compiler: GFortran
- Frühere Partner des Flang-Projekts: US-amerikanische nationale Forschungslabore und NVIDIA
- Ziele:
- Open Source sein und eine für den kommerziellen Einsatz geeignete Lizenz bieten
- Eine aktive Community von Fortran-Compiler-Entwicklern aufbauen
- Fortran-Entwicklung mit LLVM-basierten Tools unterstützen
- Eine experimentelle Plattform für Vorschläge zu neuen Sprachstandards bereitstellen
- Mehrere Implementierungen können Kompatibilitätsprobleme entschärfen und Verbesserungen ermöglichen
Die Timeline von Flang
- 1989: Gründung der Portland Group (PGI)
- 2015: Start des Classic-Flang-Projekts (geführt von NVIDIA und US-amerikanischen Forschungslaboren)
- 2017: Erste Release von Classic Flang und Umstellung auf Open Source
- 2018: Beginn der Neuschreibung des Frontends von Classic Flang als F18
- 2019: F18 wird in das LLVM-Projekt integriert
- 2020: Einführung des neuen Flang-Treibers
flang-new - 2022: NVIDIA steuert FIR (Fortran IR) zu LLVM bei
- 2024:
flang-newwird inflangumbenannt - 2025: Die ausführbare Datei
flangwird in LLVM 20.1 aufgenommen
Der Prozess der Umbenennung von Flang
- Die Umbenennung von Flang wurde mehrfach diskutiert
- Entscheidungskriterien:
- Behebung zentraler Funktions- und Leistungsprobleme
- Unfertige Sprachfunktionen müssen klare Fehlermeldungen ausgeben
- Es werden gute Ergebnisse in Leistungsvergleichen mit anderen Fortran-Compilern benötigt
- Bestätigung der Stabilität durch umfangreiche Test-Suites
- Rat des LLVM-Mitgründers Chris Lattner:
"Das Problem von Namenskonflikten zwischen dem bestehenden Flang und dem neuen Flang muss gelöst werden"
- Im Oktober 2024 wurde nach Konsens in der Community die Umbenennung von
flang-newinflangabgeschlossen
Der Kompilierungsprozess von Flang und die Einführung von MLIR
MLIR (Multi-Level Intermediate Representation)
- Allein mit LLVM IR ist es schwierig, Informationen auf Sprachebene zu bewahren
- MLIR kann die Eigenschaften höherer Programmiersprachen erhalten und optimierbar machen
- Flang baut FIR (Fortran IR) auf Basis von MLIR auf
- FIR bewahrt Informationen zu Fortran-Arrays, Typen usw.
HLFIR (High Level FIR)
- Eine Darstellung auf höherer Ebene über FIR
- Unterstützt Array-Optimierungen und fortgeschrittene Fortran-Syntax
Kompilierungsstufen
- Fortran-Quellcode
- Erzeugung von MLIR (HLFIR + FIR)
- FIR-Transformation
- LLVM-IR-Transformation
- Machine IR → Assembler → ausführbare Datei
OpenMP-Unterstützung in Flang
- OpenMP ist eine Standard-API für parallele Programmierung
- Flang ergänzt MLIR um einen OpenMP-spezifischen Dialekt
- Mit
OpenMPIRBuilderwird in LLVM IR umgewandelt - Die OpenMP-Implementierung von Flang ist strukturell ähnlich zu Clang
Das Treiberdesign von Flang
flang→ benutzerfreundlicher Treiberflang -fc1→ entwicklerfreundlicher Frontend-Treiber- Implementiert auf Basis der
clangDriver-Bibliothek von Clang - Unterstützung für verschiedene Targets und Tools möglich
Beiträge und Reaktionen rund um Flang
- Arm: Entwicklung einer HPC-Toolchain auf Basis von Flang
- Fujitsu: Beiträge zur Verbesserung von Flang über HPC-Test-Suites
- Linaro: Fehlerbehebungen mithilfe der Fujitsu-Test-Suites
- SciPy: Löst Probleme bei der Windows-Unterstützung durch die Einführung von Flang
- Barcelona Supercomputing Center: Unterstützung für RISC-V-Vektorisierung und interne Parallelisierungsmodelle
- Chris Lattner:
"Flang ist ein Symbol für das Kollaborationsmodell, das das LLVM-Projekt bietet"
- AMD: Entwickelt den Fortran-Compiler der nächsten Generation auf Basis von Flang
Wie man zu Flang beitragen kann
- Flang entwickelt sich als Open-Source-Projekt kontinuierlich weiter
- Man kann es direkt ausprobieren und Feedback geben
- Es gibt viele Möglichkeiten zur Mitwirkung, etwa Code-Beiträge oder Dokumentationskorrekturen
- Es folgt dem standardmäßigen Beitragsprozess von LLVM
Noch keine Kommentare.