Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
fortran [Le 09/06/2021, 12:04]
vmagnin [Compilateurs] Utiliser plusieurs compilateurs
fortran [Le 09/09/2021, 15:31] (Version actuelle)
86.67.213.205 [Editeurs et Environnement de Développement Intégré] findent
Ligne 3: Ligne 3:
 ====== Fortran ====== ====== Fortran ======
  
-Fortran est un langage de programmation normalisé destiné au calcul scientifique. Il intègre la programmation orientée objet et l'​interfaçage avec le langage C depuis Fortran 2003 et la programmation parallèle //​(coarrays)//​ depuis Fortran 2008. La dernière ​norme est Fortran 2018 et la suivante ​est en préparation ​(nommée 202X pour l'​instant).+Fortran est un langage de programmation normalisé destiné au calcul scientifique. Il intègre la programmation orientée objet et l'​interfaçage avec le langage C depuis Fortran 2003 et la programmation parallèle //​(coarrays)//​ depuis Fortran 2008. La norme actuelle ​est Fortran 2018 : elle améliore en particulier l'​interfaçage entre C et Fortran et ajoute de nouveaux concepts pour la programmation parallèle //(teams, events, collective subroutines).//​ La prochaine norme est prévue pour 2023 (nommée ​Fortran ​202X pour l'​instant).
  
 ===== Compilateurs ===== ===== Compilateurs =====
  
 Le langage Fortran dispose de [[https://​fortran-lang.org/​compilers/​|nombreux compilateurs]],​ en particulier : Le langage Fortran dispose de [[https://​fortran-lang.org/​compilers/​|nombreux compilateurs]],​ en particulier :
-  * Le compilateur libre GNU Fortran (GFortran). Le compilateur [[http://​www.g95.org/​|g95]] n'est plus développé depuis 2013.+  * Le compilateur libre GNU Fortran (GFortran).
   * Le propriétaire Intel Fortran Compiler (ifort), et son successeur ifx basé sur LLVM (actuellement en version beta), téléchargeables gratuitement pour tous les développeurs depuis début 2021.   * Le propriétaire Intel Fortran Compiler (ifort), et son successeur ifx basé sur LLVM (actuellement en version beta), téléchargeables gratuitement pour tous les développeurs depuis début 2021.
   * Le compilateur commercial [[http://​www.pgroup.com/​resources/​docs.htm| PGI]] édité par [[wp>​The_Portland_Group]],​ qui devrait être remplacé prochainement par le compilateur [[https://​github.com/​flang-compiler/​flang|Flang]] intégré à LLVM.   * Le compilateur commercial [[http://​www.pgroup.com/​resources/​docs.htm| PGI]] édité par [[wp>​The_Portland_Group]],​ qui devrait être remplacé prochainement par le compilateur [[https://​github.com/​flang-compiler/​flang|Flang]] intégré à LLVM.
  
-gfortran est très utilisé par les scientifiques,​ bien que le compilateur Intel ifort puisse être plus performant sur certains problèmes ([[https://​polyhedron.com/?​page_id=175|voir une comparaison des différents compilateurs ici)]]. Mais plutôt que de fier aux benchmarks, qui se concentrent sur des problèmes spécifiques,​ il vaut mieux faire le test sur vos programmes. Il est de toute façon toujours conseillé de compiler ses programmes avec plusieurs compilateurs afin d'​obtenir un code plus robuste : un compilateur peut afficher des messages de diagnostique différents,​ et à l'​exécution certains bogues subtiles peuvent se révéler avec un compilateur mais pas un autre.+gfortran est très utilisé par les scientifiques,​ bien que le compilateur Intel ifort puisse être plus performant sur certains problèmes ([[https://​polyhedron.com/?​page_id=175|voir une comparaison des différents compilateurs ici)]]. Mais plutôt que de se fier aux benchmarks, qui se concentrent sur des problèmes spécifiques,​ il vaut mieux faire le test sur vos programmes. Il est de toute façon toujours conseillé de compiler ses programmes avec plusieurs compilateurs afin d'​obtenir un code plus robuste : un compilateur peut afficher des messages de diagnostique différents,​ et à l'​exécution certains bogues subtiles peuvent se révéler avec un compilateur mais pas un autre.
  
 Un autre compilateur prometteur est actuellement en développement : [[https://​lfortran.org/​|LFortran]],​ qui permettra de travailler en Fortran de façon interactive,​ à l'aide par exemple de Jupyter. Un autre compilateur prometteur est actuellement en développement : [[https://​lfortran.org/​|LFortran]],​ qui permettra de travailler en Fortran de façon interactive,​ à l'aide par exemple de Jupyter.
Ligne 145: Ligne 145:
 export FOR_COARRAY_NUM_IMAGES=4 export FOR_COARRAY_NUM_IMAGES=4
 </​code>​ </​code>​
 +ou utiliser l'​option de compilation ''​-coarray-num-images=4''​ pour les cotableaux.
 ===== Editeurs et Environnement de Développement Intégré ===== ===== Editeurs et Environnement de Développement Intégré =====
  
Ligne 157: Ligne 158:
   * [[:​netbeans]] (cf [[http://​netbeans.org/​community/​releases/​67/​cpp-setup-instructions.html]])   * [[:​netbeans]] (cf [[http://​netbeans.org/​community/​releases/​67/​cpp-setup-instructions.html]])
  
 +[[apt>​findent|findent]] est un utilitaire en ligne de commandes permettant d'​indenter automatiquement un code Fortran et de transformer un code du format fixe vers le format libre du Fortran moderne.
  
 ===== Débogueurs et outils d'​analyse ===== ===== Débogueurs et outils d'​analyse =====
Ligne 184: Ligne 186:
 ===== Gestionnaire de paquets Fortran fpm ===== ===== Gestionnaire de paquets Fortran fpm =====
  
-Depuis 2020, [[https://​github.com/​fortran-lang/​fpm|fpm (Fortran Package Manager)]] est en développement. Bien que disponible en version 0.2.0 alpha au 30 avril 2021, il est déjà pleinement utilisable pour des projets simples. Vous pouvez l'​installer en ligne de commandes à l'aide de git :+Depuis 2020, [[https://​github.com/​fortran-lang/​fpm|fpm (Fortran Package Manager)]] est en développement. Bien que disponible en version 0.4.0 alpha au 30 août 2021, il est déjà pleinement utilisable pour des projets simples. Vous pouvez l'​installer en ligne de commandes à l'aide de git :
 <​code>​ <​code>​
 git clone https://​github.com/​fortran-lang/​fpm.git git clone https://​github.com/​fortran-lang/​fpm.git
Ligne 206: Ligne 208:
 ===== Bibliothèques graphiques ===== ===== Bibliothèques graphiques =====
  
-Fortran ne dispose pas d'​instructions graphiques. La visualisation des résultats se fait soit avec des programmes externes comme [[gnuplot]] ou [[apt>​paraview|ParaView]], ​soit avec des bibliothèques graphiques, comme par exemple :+Fortran ne dispose pas d'​instructions graphiques. La visualisation des résultats ​peut se faire avec des programmes externes comme [[gnuplot]] ou [[apt>​paraview|ParaView]], ​ou des bibliothèques graphiques, comme par exemple :
   * [[apt>​libplot-dev libplplotfortran0|PLplot]],​   * [[apt>​libplot-dev libplplotfortran0|PLplot]],​
   * [[https://​github.com/​vmagnin/​gtk-fortran/​wiki|gtk-fortran]] qui permet de créer des interfaces GTK en Fortran,   * [[https://​github.com/​vmagnin/​gtk-fortran/​wiki|gtk-fortran]] qui permet de créer des interfaces GTK en Fortran,
   * [[https://​github.com/​kookma/​ogpf|ogpf]] qui permet d'​appeler simplement gnuplot depuis un programme en Fortran, grâce à son interface orientée objet. Il peut être installé en tant que paquet fpm.   * [[https://​github.com/​kookma/​ogpf|ogpf]] qui permet d'​appeler simplement gnuplot depuis un programme en Fortran, grâce à son interface orientée objet. Il peut être installé en tant que paquet fpm.
  
 +Un programme Fortran peut également générer facilement des fichiers graphiques au format [[https://​fr.wikipedia.org/​wiki/​Portable_pixmap|Portable pixmap (PPM)]] (voir cet [[https://​github.com/​certik/​fortran-utils/​blob/​master/​src/​ppm.f90|exemple]]).
 ===== Liens ===== ===== Liens =====
   * La page française [[wpfr>​Fortran|Fortran]] fournit de nombreuses informations,​ liens et références bibliographiques concernant le Fortran.   * La page française [[wpfr>​Fortran|Fortran]] fournit de nombreuses informations,​ liens et références bibliographiques concernant le Fortran.
  • fortran.1623233077.txt.gz
  • Dernière modification: Le 09/06/2021, 12:04
  • par vmagnin