1 Punkte von GN⁺ 2025-03-13 | Noch keine Kommentare. | Auf WhatsApp teilen
  • LLVM enthält seit LLVM 11 im Jahr 2020 den Fortran-Compiler Flang
  • Der Name der anfänglichen ausführbaren Datei war nicht flang, sondern flang-new
  • Mit LLVM 20 wurde flang-new in flang umbenannt, 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-new wird in flang umbenannt
  • 2025: Die ausführbare Datei flang wird 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-new in flang abgeschlossen

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

  1. Fortran-Quellcode
  2. Erzeugung von MLIR (HLFIR + FIR)
  3. FIR-Transformation
  4. LLVM-IR-Transformation
  5. 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 OpenMPIRBuilder wird in LLVM IR umgewandelt
  • Die OpenMP-Implementierung von Flang ist strukturell ähnlich zu Clang

Das Treiberdesign von Flang

  • flang → benutzerfreundlicher Treiber
  • flang -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.

Noch keine Kommentare.