1 points par GN⁺ 2025-03-13 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • LLVM inclut le compilateur Fortran Flang depuis LLVM 11 en 2020
  • Au départ, le nom de l’exécutable était flang-new et non flang
  • Dans LLVM 20, flang-new a été renommé en flang, reconnaissant ainsi la maturité de Flang
  • Après des années de développement, Flang s’est imposé comme le compilateur Fortran officiel

L’importance de Fortran

  • Fortran est né dans les années 1950 comme langage de traduction de formules (Formula Translation)
  • Il est largement utilisé dans le calcul scientifique (modélisation météorologique, dynamique des fluides, chimie computationnelle, etc.)
  • L’écosystème Fortran s’est récemment redynamisé
    • avec l’apparition de fpm, du package manager Fortran, d’une bibliothèque standard non officielle, de LFortran, etc.
  • Plus de 80 % du code exécuté sur le supercalculateur ARCHER2 est écrit en Fortran

Pourquoi un nouveau compilateur Fortran est nécessaire

  • Compilateurs Fortran existants :
    • compilateur Intel Fortran, compilateurs NVIDIA HPC, etc.
    • compilateur open source : GFortran
  • Premiers partenaires du projet Flang : des laboratoires nationaux américains et NVIDIA
  • Objectifs :
    • fournir une licence open source adaptée à un usage commercial
    • construire une communauté active de développeurs de compilateurs Fortran
    • soutenir le développement Fortran avec des outils basés sur LLVM
    • offrir une plateforme d’expérimentation pour proposer de nouveaux standards du langage
  • La présence de plusieurs implémentations permet de réduire les problèmes de compatibilité et d’encourager les améliorations

Chronologie de Flang

  • 1989 : fondation du Portland Group (PGI)
  • 2015 : lancement du projet Classic Flang (mené par NVIDIA et des laboratoires nationaux américains)
  • 2017 : première version de Classic Flang et passage en open source
  • 2018 : début de la réécriture du front-end de Classic Flang en F18
  • 2019 : intégration de F18 au projet LLVM
  • 2020 : introduction du nouveau pilote flang-new
  • 2022 : NVIDIA apporte FIR (Fortran IR) à LLVM
  • 2024 : flang-new est renommé en flang
  • 2025 : inclusion de l’exécutable flang dans LLVM 20.1

Le processus de changement de nom de Flang

  • Le changement de nom de Flang a été discuté à plusieurs reprises
  • Critères de décision :
    • résolution des principaux problèmes de fonctionnalités et de performances
    • affichage de messages d’erreur clairs pour les fonctionnalités du langage inachevées
    • nécessité d’obtenir de bons résultats face aux autres compilateurs Fortran en comparaison de performances
    • validation de la stabilité au moyen d’une suite de tests étendue
  • Conseil de Chris Lattner, cofondateur de LLVM :
    > « Il faut résoudre le conflit de noms entre l’ancien Flang et le nouveau Flang »
  • En octobre 2024, après un consensus de la communauté, le renommage flang-newflang a été finalisé

Le processus de compilation de Flang et l’introduction de MLIR

MLIR (Multi-Level Intermediate Representation)

  • Avec LLVM IR seul, il est difficile de préserver les informations des langages de haut niveau
  • MLIR permet de conserver les caractéristiques des langages de haut niveau et de les optimiser
  • Flang construit FIR (Fortran IR) sur la base de MLIR
  • FIR préserve des informations propres à Fortran, comme les tableaux et les types

HLFIR (High Level FIR)

  • Une représentation de niveau supérieur au sein de FIR
  • Prise en charge de l’optimisation des tableaux et de la syntaxe Fortran avancée

Étapes de compilation

  1. Code source Fortran
  2. Génération de MLIR (HLFIR + FIR)
  3. Transformation de FIR
  4. Transformation vers LLVM IR
  5. Machine IR → assembleur → exécutable

La prise en charge d’OpenMP dans Flang

  • OpenMP est une API standard pour la programmation parallèle
  • Flang ajoute à MLIR un dialect dédié à OpenMP
  • Conversion vers LLVM IR via OpenMPIRBuilder
  • L’implémentation OpenMP de Flang est structurellement similaire à celle de Clang

La conception du pilote de Flang

  • flang → pilote convivial pour l’utilisateur
  • flang -fc1 → pilote de front-end orienté développeur
  • Implémentation basée sur la bibliothèque clangDriver de Clang
  • Possibilité de prendre en charge diverses cibles et divers outils

Contributions et réactions autour de Flang

  • Arm : développement d’une toolchain HPC basée sur Flang
  • Fujitsu : contribution à l’amélioration de Flang via une suite de tests HPC
  • Linaro : correction de défauts grâce à la suite de tests de Fujitsu
  • SciPy : l’adoption de Flang a permis de résoudre des problèmes de support sous Windows
  • Barcelona Supercomputing Center : prise en charge de la vectorisation RISC-V et d’un modèle de parallélisme interne
  • Chris Lattner :
    > « Flang est le symbole du modèle de collaboration qu’offre le projet LLVM »
  • AMD : développe un compilateur Fortran de nouvelle génération basé sur Flang

Comment contribuer à Flang

  • Flang est un projet open source en évolution continue
  • Il est possible de l’utiliser directement et de fournir des retours
  • Il existe différentes manières de contribuer : code, documentation, etc.
  • Suit le processus de contribution standard de LLVM

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.