Des nouvelles de Flang : le compilateur Fortran basé sur LLVM
Implémenterait Fortran 2008 et améliorerait les messages d'erreur par rapport à PGI

Le , par dourouc05, Responsable Qt
Après un an et demi de travaux, le compilateur Fortran basé sur LLVM promis par NVIDIA arrive enfin sur GitHub, bien que sans annonce officielle. Le projet a commencé avec un étudiant (financé par le programme Google Summer of Code) en 2013 sous le nom de Flang (analogue de Clang, le compilateur LLVM pour le C et ses dérivés), puis a été repris par NVIDIA et la sécurité nucléaire du département américain en 2015. L’objectif était de fournir un compilateur libre de très haute qualité, notamment basé sur celui de PGI.

Avec le développement de LLVM, ce projet apporte de plus en plus de promesses à l’écosystème Fortran. Par exemple, LLVM permet de compiler du code pour les GPU NVIDIA : grâce à Flang, il sera très facile d’offrir un compilateur libre pour ce faire (sans devoir utiliser celui de PGI). Également, OpenMP permet de décharger l’exécution du code sur un accélérateur : GCC ne le permet pas encore pour des cartes graphiques, uniquement les coprocesseurs Intel Xeon Phi ; LLVM, quant à lui, gère les cartes NVIDIA et les coprocesseurs Intel Xeon Phi.

Pour le moment, Flang fonctionne avec LLVM 3.9 (presque la dernière version). Les sources de la version 1.0 sont en ligne depuis une semaine (avec des commits d’employés de NVIDIA et de PGI), mais aucune annonce officielle n’a encore été faite (la documentation fait référence à un site qui n’existe pas encore, http://flang.nvidia.com/). La norme Fortran 2008 est implémentée, mais aucune information n’est donnée sur le niveau de compatibilité (le compilateur de PGI n’implémente pas toute la norme). La grande différence par rapport au compilateur de PGI devrait être la qualité des messages d’erreur, du niveau de Clang.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de dourouc05 dourouc05 - Responsable Qt https://www.developpez.com
le 28/08/2017 à 22:34
Le compilateur Fortran pour LLVM a été officiellement présenté
Les premiers détails techniques de Flang disponibles

L’annonce du développement de Flang est loin d’être récente : elle date de novembre 2015. Ensuite, silence radio, jusqu’à l’ouverture du dépôt Flang sur GitHub, en mai de cette année. Un développeur de NVIDIA vient d’annoncer officiellement l’ouverture du projet au grand public.

En quelques mots, Flang est la culmination d’un effort de NVIDIA, plus particulièrement sa filiale PGI (connue pour son compilateur Fortran), sous l’impulsion donnée par la NNSA du Département de l’énergie américain. Ces presque deux ans de projet ont mené assez loin. L’objectif était de partir du compilateur existant de PGI et de le porter pour qu’il utilise l’infrastructure de LLVM (représentation intermédiaire, passes d’optimisation, génération du code assembleur, etc.), pas d’écrire un compilateur de zéro.

En l’état, Flang possède les mêmes fonctionnalités que le compilateur de PGI, c’est-à-dire l’entièreté de la norme Fortran 2003, quelques fonctionnalités de la révision de 2008 et des extensions propriétaires pour améliorer la compatibilité avec le Fortran primitif. Contrairement à Clang, qui est à la pointe en termes de fonctionnalités des derniers standards C++, Flang ne s’intéresse pas à Fortran 2015 pour le moment ; pour Fortran 2008, la priorité est mise sur les sous-modules et les constructions BLOCK et DO CONCURRENT. Au niveau d’OpenMP, Flang utilise la bibliothèque de support de LLVM ; la version 4.5 de la norme est presque entièrement implémentée pour les processeurs multicœurs.

Contrairement à Clang et au projet LLVM en général, Flang est principalement écrit en C et cela ne devrait pas changer. Ce choix a été posé pour reprendre autant de code de PGI que possible, tout en respectant les règles de codage du projet LLVM. L’objectif est de passer à C++ dans le futur, les développeurs sont ouverts à la discussion, mais préféreront se focaliser sur des points précis à discuter avec la communauté. Au niveau de la licence, Flang est actuellement disponible sous la licence Apache, mais sera distribué sous la même licence que LLVM lorsque son code aura été approuvé pour intégration à LLVM. En l’état, Flang passe toute la suite de tests de PGI, de nouveaux sont ajoutés en permanence.

Côté technique, Flang n’utilise pas les API de LLVM pour générer la représentation intermédiaire des programmes Fortran : il écrit directement dans un fichier, puis fait appel à opt et llc au besoin par la suite. La partie frontale de Flang est organisée en deux exécutables, l’un étant prévu pour les utilisateurs (il gère les paramètres de compilation) et appelant le deuxième pour la compilation effective. Pour le moment, il ne fonctionne que sous Linux, sur les architectures x86-64 (pour le grand public), ARM (comme les téléphones portables et certains nouveaux supercalculateurs) et OpenPOWER.

Source : [Flang-announce] Flang Fortran front-end for LLVM.
Avatar de Thorna Thorna - Membre éprouvé https://www.developpez.com
le 29/08/2017 à 7:37
Les vieux ont la santé...
"Inventé en 1954, c'est le plus ancien langage de programmation de haut niveau, suivi notamment par Lisp (1958), Algol (1958) et COBOL (1959)."
A part Algol qui a disparu, les autres sont toujours là. Et on n'entend pas parler de Fortran++, ni de Gortrand, encore moins de Hortran... Est-ce que ça veut dire que la résistance au changement est bien plus forte qu'on ne le pense, ou bien que Fortran (et Lisp et Cobol) sont les langages du siècle ou du millénaire ? Et même, ils ont passé le siècle et le millénaire !
Plus sérieusement, y'a pas mieux pour ce que ça fait ?!?
Avatar de Capitaine_aizen Capitaine_aizen - Membre régulier https://www.developpez.com
le 29/08/2017 à 10:11
Plus sérieusement, y'a pas mieux pour ce que ça fait ?!?
A ma connaissance Fortran est un langage très utilisé dans le milieu scientifique et industriel. Beaucoup d'équipes scientifiques à travers le monde codent encore en Fortran (par habitude, enseignement ou par nostalgie^^). De plus, manipuler des tenseurs en Fortran est beaucoup user-friendly qu'en C/C++. (Je compare avec les car la "seule menace" pour le Fortran en terme de performance c'est le C/C++).

Ensuite, les libraries de calculs scientifiques comme BLAS ou LAPACK pour l'algèbre linéaires sont très présentes dans les codes bas-niveau (Fortran, C++...) comme dans les codes haut-niveau (Matlab, IDL, Python...) à travers des wrappers.

Enfin si tu demandes à un scientifique de changer de Fortran pour un autre langage, il va te dire : "Qu'est-ce que tu proposes comme alternative ?" avec comme contrainte (pour mon expérience) : Free, Open-Source, Multi-platform (comprendre Linux & MacOs), User-friendly, Rapide (compatible avec OpenMP, MPI et éventuellement avec du SIMD comme SSE et AVX). Les langages comme MATLAB et IDL, ça passe pas. Python, ok, mais pour l'aspect OpenMP on oublie. MPI, ça marche mais c'est un peu galère et le SIMD sans invoquer du C ou du Fortran tu peux oublier. Reste alors le C/C++, mais la gestion de la mémoire est, comme dirait un confrère, "Pain in my ass".
Avatar de djip007 djip007 - Nouveau Candidat au Club https://www.developpez.com
le 23/09/2017 à 1:09
Sans compter la manipulation de tableau de dimention jusqu'a 7 (ou 14 si un compilateur respecte la norme....)

- la norme 90 est une vrai evolution du fortran bien plus que ce que le C a evolue depuis ces debut en particulier une vrai gestion de type tableau a plusieurs dimension ce que ne sais faire ni le C ni le C++ ni java...
- la norme 2003 ajoute l'objet au langage (un Fortran++ en sorte) entre autre
- la norme 2008 des coarray et DO CONCURRENT entre autre... que ni le C ni le C++ ne sais faire...
- et la nouvelle norme 2015....

Ce n'est pas parce que il herite d'un version normalisé en 1964 qu'il n'a pas evolué et n'est pas "moderne"
Et pour faire des caclul y a pas mieux... aucun equivalant!
Responsable bénévole de la rubrique HPC : Thibaut Cuvelier -