IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Des nouvelles de Flang, le compilateur Fortran basé sur LLVM


Sujet :

Fortran

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut Des nouvelles de Flang, le compilateur Fortran basé sur LLVM
    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 souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut Flang, le compilateur Fortran basé sur LLVM, enfin annoncé
    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.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut
    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 ?!?
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 27
    Points : 112
    Points
    112
    Par défaut
    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".

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2017
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    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!

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Plus sérieusement, y'a pas mieux pour ce que ça fait ?!?
    Voir ce genre de commentaire d'un membre confirmé çà fait peur. Comme dit ci dessus Fortran 90 (avec petite modif, 95) c'est l'équivalent de Matlab (et/ou numpy) .. mais à la vitesse de C. Quant à Fortran ++ c'est Fortran 2003. Depuis toujours (ou au moins en même temps que C) le multithread openmp effectif (et aussi mpi). Quant au coarray (Fortran 2008) on attend les autres. En quoi croyez vous que les supercalculateurs scientifiques sont programmés? Fortran ou C++.
    Le seul écueil est le manque d'interface graphique directe et reconnue, il en faut passer par une interface C ou C++ (par ailleurs normalisée lors de Fortran 2003).

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2012, 09h16
  2. Réponses: 0
    Dernier message: 30/08/2012, 20h18
  3. Compilateur Fortran gratuit sur Windows XP
    Par Physicien dans le forum Fortran
    Réponses: 3
    Dernier message: 08/01/2007, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo