f18 officiellement proposé comme sous-projet LLVM
Le compilateur Fortran libre développé notamment par NVIDIA

Le , par dourouc05

34PARTAGES

13  0 
La suite de compilateurs LLVM est notamment connue pour Clang, son compilateur C et C++, mais aussi pour la kyrielle d'autres projets qui utilisent son infrastructure afin de faciliter leur développement (comme Julia, qui utilise LLVM pour garantir une exécution extrêmement rapide).

Il y a de cela un certain temps (en 2015, précisément), NVIDIA voulait ajouter Fortran à la liste des langages implémentés par LLVM, avec le projet Flang. Il a fallu du temps avant que le projet soit vraiment officialisé. Le développement a eu lieu avec bien d'autres parties intéressées, comme ARM ou le DoE (ministère américain de l'énergie). Désormais, NVIDIA cherche à faire intégrer le code source du successeur de Flang, f18, dans le projet LLVM, au même niveau que Clang.

Pour le moment, f18 implémente une bonne partie du langage Fortran : l'analyse syntaxique gère toute la norme Fortran 2018 ainsi qu'OpenMP 4.5, même si toute l'infrastructure derrière cette analyse syntaxique n'est pas encore prête. L'objectif de ses développeurs est de soumettre le code à LLVM (y compris l'implémentation de la bibliothèque standard), puis de continuer le développement des fonctionnalités manquantes : il faut encore effectuer un certain nombre de refactorisations (notamment pour découpler la bibliothèque standard du compilateur), des choix cohérents avec le reste de l'infrastructure LLVM doivent être posés.

Le plus gros frein, selon les développeurs de f18, est l'utilisation de C++17 pour l'implémentation du compilateur, alors que LLVM est en pleine transition vers C++14 (un processus assez lent pour s'assurer que tous ceux qui utilisent LLVM ne soient pas tirés en arrière par des besoins trop évolués). Certains développeurs de LLVM trouvent que ce n'est pas un problème, puisqu'il n'y a pas de rétrocompatibilité cassée : f18 est un tout nouveau projet pour LLVM ; certains ressortent des excuses basées sur le fait que toutes les machines utilisées par le projet LLVM ne sont pas forcément assez à jour pour C++17, ce qui limiterait les possibilités en termes d'intégration continue. L'intégration des deux projets pourrait aussi être limitée par le fait que certains développeurs de LLVM pourraient souhaiter utiliser certaines fonctionnalités de f18 dans d'autres parties du projet.

Source : GitHub, LLVM Mailing list

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 04/05/2019 à 17:16
Cela fait quelques années que NVIDIA et d'autres sociétés investissent dans Fortran, l'un des plus vieux langages de programmation (il a fait sa première apparition en 1957), afin d'apporter l'infrastructure nécessaire au projet LLVM pour la compilation de code Fortran. En début de cette année, le résultat de ces développements a été proposé officiellement à la communauté LLVM : les réponses sont maintenant connues, le projet est acceptée… avec quelques remarques.

Tout a commencé avec Flang, qui est basé sur le code de PGI, un compilateur très renommé pour Fortran, notamment. PGI est extrêmement avancé au niveau de l'analyse syntaxique de Fortran, puisqu'il implémente l'entièreté de Fortran 2003 et de bonnes parties de Fortran 2008 et 2018, sans oublier des extensions comme OpenMP 4.5 et OpenAcc 2.6.

Seulement, PGI est entièrement écrit en C, de par son âge. Au contraire, LLVM est un code bien plus moderne, entièrement en C++ selon les meilleures pratiques les plus récentes. C'est pourquoi Flang est en cours de réécriture en C++, d'abord sous le nom de f18 (pour Fortran 18).

L'objectif est aussi de fournir un code qui facilite l'écriture d'outils pour travailler sur le code Fortran (au niveau de ce que Clang fournit pour le C++).

C'est ce projet f18 qui a été accepté par LLVM pour intégration. Une chose est sûre quant au nom, il changera, mais il n'y a pas encore de consensus : il fait trop référence à la version 2018 de la norme Fortran et n'est pas assez clair pour le grand public. Le dépôt Git s'appellera probablement fortran, tout simplement.

Un autre point bloquant est l'utilisation de C++17, mais ce point est temporaire (quand tout le projet LLVM sera passé à C++17). Vu que f18 est loin d'être finalisé, à cause de la réécriture en C++ de flang, la première version publique n'est pas près d'arriver…

En attendant, les chiffres de performance à l'exécution sont intéressants : flang dépasse déjà GCC 8, malgré un code moins mature.


Source : présentation au LLVM Developers' Meeting.

Voir aussi : f18 et flang sur GitHub.

 
Responsable bénévole de la rubrique HPC : Thibaut Cuvelier -

Partenaire : Hébergement Web