Langage Fortran (Avancé) - idris.fr ?· Fortran 90 explained,SciencePublications,Oxford,1994,(294pages),…

Download Langage Fortran (Avancé) - idris.fr ?· Fortran 90 explained,SciencePublications,Oxford,1994,(294pages),…

Post on 30-Jul-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

<ul><li><p>Langage Fortran(Avanc)</p><p>Patrick CordeHerv Delouis</p><p>Patrick.Corde@idris.fr</p><p>4 juillet 2018</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 1 / 317</p><p>Table des matires I</p><p>1 IntroductionHistoriqueCompatibilit norme 77/90Apports de Fortran 90Apports de Fortran 95bibliographiedocumentation</p><p>2 GnralitsStructure dun programmeCompilation, dition des liens, excutionlments syntaxiques</p><p>Les identificateursLe format libre Les commentairesLe format fixe Les dclarationsTypage des donnes : paramtre KINDTypage des donnes : paramtre KIND (nouveauts norme 2008)</p><p>3 Types drivsDfinition et dclaration de structuresInitialisation (constructeur de structure)Constructeur de structure : norme 2003Symbole % daccs un champTypes drivs et procdures</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 2 / 317</p></li><li><p>Table des matires II</p><p>Types drivs et entres/sorties4 Programmation structure</p><p>IntroductionBoucles DOLe bloc SELECT-CASELa structure block</p><p>5 Extensions tableauxDfinitions (rang, profil, tendue, ...)Manipulations de tableaux (conformance, constructeur, section, taille, ...)Initialisation de tableauxSections de tableauxSections irrguliresTableau en argument dune procdure (taille et profil implicites)Section de tableau non contigu en argument dune procdureFonctions intrinsques tableaux</p><p>Interrogation (maxloc, lbound, shape, ...)Rduction (all, any, count, sum, . . . )Multiplication (matmul, dot_product, . . . )Construction/transformation (reshape, cshift, pack, spread, transpose, . . . )</p><p>Instruction et bloc WHEREExpressions dinitialisationExemples dexpressions tableaux</p><p>6 Gestion mmoireExpressions de spcification</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 3 / 317</p><p>Table des matires III</p><p>Tableaux automatiquesTableaux dynamiques ALLOCATABLE, profil diffrArgument muet ALLOCATABLE : norme 2003Composante allouable dun type driv : norme 2003Allocation dun scalaire ALLOCATABLE : norme 2003Allocation/rallocation via laffectation : norme 2003Procdure MOVE_ALLOC de rallocation : norme 2003</p><p>7 PointeursDfinition, tats dun pointeurDclaration dun pointeurSymbole =&gt;Symbole = appliqu aux pointeursAllocation dynamique de mmoireImbrication de zones dynamiquesFonction NULL() et instruction NULLIFYFonction intrinsque ASSOCIATEDSituations viterDclaration de tableaux de pointeurs Passage dun pointeur en argument de procdurePassage dune cible en argument de procdurePointeur, tableau profil diffr et COMMONListe chane</p><p>8 Interface de procdures et modulesPatrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 4 / 317</p></li><li><p>Table des matires IV</p><p>Interface implicite : dfinitionInterface implicite : exempleArguments : attributs INTENT et OPTIONALPassage darguments par mot-clInterface explicite : procdure interneInterface explicite : 5 possibilitsInterface explicite : bloc interfaceInterface explicite : ses apportsInterface explicite : module et bloc interfaceInterface explicite : module avec procdureCas dinterface explicite obligatoireArgument de type procdural et bloc interface</p><p>9 Interface gnriqueIntroductionExemple avec module procedureExemple : contrle de procdure F77</p><p>10 Surcharge ou cration doprateursIntroductionInterface operatorInterface assignment</p><p>11 Contrle de visibilit, concept dencapsulation et gestion de zones dynamiquesIntroductionInstructions PRIVATE et PUBLIC</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 5 / 317</p><p>Table des matires V</p><p>Attributs PRIVATE et PUBLICType driv semi-privExemple avec contrle de la visibilitParamtre ONLY de linstruction USE</p><p>12 Procdures rcursivesClauses RESULT et RECURSIVEExemple : suite de Fibonacci</p><p>13 Nouveauts sur les E/SAccs aux fichiers pr-connectsOPEN (status, position, pad, action, delim)INQUIRE (recl, action, iolength,...)Entres-sorties sur les fichiers texte (advance=no)Paramtres IOSTAT et IOMSG de linstruction READParamtres IOSTAT et IOMSG de linstruction READInstruction NAMELISTSpcification de format minimum</p><p>14 Nouvelles fonctions intrinsquesAccs lenvironnement, ...Prcision/codage numrique : tiny/huge, sign, nearest, spacing, ...Mesure de temps, date, nombres alatoiresTransformation (transfer)Conversion entiers/caractres (char, ichar, ...)Comparaison de chanes (lge, lgt, lle, llt)</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 6 / 317</p></li><li><p>Table des matires VI</p><p>Manipulation de chanes (adjustl, index, ...)Oprations sur les bits (iand, ior, ishft, ...)</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 7 / 317</p><p>Introduction</p><p>1 IntroductionHistoriqueCompatibilit norme 77/90Apports de Fortran 90Apports de Fortran 95bibliographiedocumentation</p><p>2 Gnralits</p><p>3 Types drivs</p><p>4 Programmation structure</p><p>5 Extensions tableaux</p><p>6 Gestion mmoire</p><p>7 Pointeurs</p><p>8 Interface de procdures et modules</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 8 / 317</p></li><li><p>Introduction</p><p>9 Interface gnrique</p><p>10 Surcharge ou cration doprateurs</p><p>11 Contrle de visibilit, concept dencapsulation et gestion de zones dynamiques</p><p>12 Procdures rcursives</p><p>13 Nouveauts sur les E/S</p><p>14 Nouvelles fonctions intrinsques</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 9 / 317</p><p>Introduction Historique</p><p> Code machine (notation numrique en octal) ; Assembleurs de codes mnmoniques ; 1954 : projet cration du premier langage</p><p>symbolique FORTRAN par John Backus dIBM (Mathematical FORmulaTRANslating System) :</p><p> Efficacit du code gnr (performance) ; Langage quasi naturel pour scientifiques (productivit, maintenance, lisibilit).</p><p> 1957 : Livraison des premiers compilateurs ; 1958 : Fortran II (IBM) sous-programmes compilables de faon indpendante. Gnralisation aux autres constructeurs mais :</p><p> divergences des extensions ncessit de normalisation ; ASA American Standards Association (ANSI American Nat. Standards Institute).</p><p>Comit charg du dveloppement dune norme Fortran. 1966 : Fortran IV (Fortran 66) ; volution par extensions divergentes. . . 1977 : Fortran V (Fortran 77).quasi compatible :aucune itration des boucles nulles (DO I=1,0)</p><p> Nouveauts principales : type caractre ; IF-THEN-ELSE ; E/S accs direct et OPEN.</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 10 / 317</p></li><li><p>Introduction Historique</p><p> Travail des comits X3J3/ANSI et WG5/ISO pour moderniser Fortran 77 : Standardisation : inclusion dextensions ; Dveloppement : nouveaux concepts dj exploits par langages plus rcents APL,</p><p>Algol, PASCAL, Ada ; . . . Performances en calcul scientifique ; Totalement compatible avec Fortran 77.</p><p> 1991/1992 : Norme Fortran 90 (ISO et ANSI) ; 1994 : Premiers compilateurs Fortran 90 Cray et IBM ; 1997 : Norme Fortran 95 (ISO et ANSI) ; 1999 : Premiers compilateurs Fortran 95 sur Cray T3E puis IBM RS/6000 ; septembre 2004 : Norme Fortran 2003 (ISO et ANSI) ; octobre 2010 : Norme Fortran 2008 (ISO et ANSI).</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 11 / 317</p><p>Introduction Compatibilit norme 77/90</p><p>Compatibilit norme 77/90</p><p> La norme 77 est totalement incluse dans la norme 90. Quelques comportements diffrents :</p><p> beaucoup plus de fonctions/sous-progr. intrinsques risque dhomonymie avecprocdures externes Fortran 77 et donc de rsultats diffrents ! EXTERNAL recommandpour les procdures externes non intrinsques,</p><p> attribut SAVE automatiquement donn aux variables initialises par linstruction DATA(en Fortran 77 ctait constructeur dpendant ) ;</p><p> E/S - En lecture avec format, si Input list &gt; Record length (ou plus exactement si unefin denregistrement est atteinte avant la fin de lexploration du format associ lavalorisation de linput list) :</p><p> OK en Fortran 90 car au niveau de lOPEN, PAD="YES" pris par dfaut. Erreur en Fortran 77 !</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 12 / 317</p></li><li><p>Introduction Apports de Fortran 90</p><p>Apports de Fortran 90</p><p> Procdures internes (CONTAINS), modules (USE) ; Format libre , identificateurs, dclarations ; Prcision des nombres : KIND portabilit ; Objets de types drivs ; DOEND DO, SELECT CASE, WHERE ; Extensions tableaux : profil, conformance, manipulation, fonctions ; Allocation dynamique de mmoire (ALLOCATE) ; Pointeurs ; Arguments : OPTIONAL, INTENT, PRESENT. Passage par mot-cl ; Bloc interface, interface gnrique, surcharge doprateurs ; Procdures rcursives ; Nouvelles fonctions intrinsques ; Normalisation directive INCLUDE.</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 13 / 317</p><p>Introduction Apports de Fortran 95</p><p>Apports de Fortran 95</p><p> FORALL(i=1:n,j=1:m,y(i,j)/=0.) x(i,j)=1./y(i,j)(cf. Annexe C page 317).</p><p> Les attributs PURE et ELEMENTAL pour des procdures sans effet de bord et pour lesecond des arguments muets lmentaires mais appel possible avec arguments detype tableaux(cf. Annexe C pages 313, 315).</p><p> Fonction intrinsque NULL() pour forcer un pointeur ltat nul y compris lors de sadclaration (cf. chap. 7 page 147).</p><p> Libration automatique des tableaux dynamiques locaux nayant pas lattribut SAVE(cf. chap. 6 page 125).</p><p> Valeur initiale par dfaut pour les composantes dun type driv(cf. chap. 3 page 55).</p><p> Fonction intrinsque CPU_TIME (cf. chap. 14 page 247). Bloc WHERE : imbrication possible (cf. chap. 5 page 115). Expressions dinitialisation tendues (cf. chap. 5 page 117). MAXLOC/MINLOC : ajout argument dim (cf. Chap. 5 page 89). Ajout generic_spec (cf. Chap. 9 page 189) au niveau delinstruction END INTERFACE [generic_spec]</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 14 / 317</p></li><li><p>Introduction bibliographie</p><p>bibliographie</p><p> Adams, Brainerd, Hendrickson, Maine, Martin, Smith, The Fortran 2003Handbook, Springer, 2009, (712 pages), ISBN 978-1-84628-378-9 ;</p><p> Walters S. Brainerd, Guide to Fortran 2008 Programming, Springer, 2015,ISBN 978-1-4471-6758-7 ;</p><p> Chivers Ian, Sleightholme Jane, Introduction to Programming with Fortran,2015, ISBN 978-3-319-17701-4 ;</p><p> Michael Metcalf, John Reid, Malcom Cohen, Modern Fortran Explained, 2011,ISBN 978-0199601424 ;</p><p> Norman S. Clerman, Walter Spector, Modern Fortran : Style and Usage,Cambridge University Press, 2012, ISBN 978-0521730525 ;</p><p> Arjen Markus, Modern Fortran in Practice, Cambridge University Press,juin 2012, (272 pages), ISBN 978-1-10760-347-9 ;</p><p> Chamberland Luc, Fortran 90 : A Reference Guide, Prentice Hall,ISBN 0-13-397332-8 ;</p><p> Delannoy Claude, Programmer en Fortran 90 Guide complet, Eyrolles, 1997,(413 pages), ISBN 2-212-08982-1 ;</p><p> Dubesset M., Vignes J., Les spcificits du Fortran 90, ditions Technip, 1993,(400 pages), ISBN 2-7108-0652-5 ;</p><p> Ellis, Phillips, Lahey, Fortran 90 Programming, Addisson-Wesley, 1994,(825 pages), ISBN 0-201-54446-6 ;</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 15 / 317</p><p>Introduction bibliographie</p><p> Kerrigan James F., Migrating to Fortran 90, OReilly &amp; Associates Inc.,1994, (389 pages), ISBN 1-56592-049-X ;</p><p> Lignelet P., Fortran 90 : approche par la pratique, ditions Studio Image(srie informatique), 1993, ISBN 2-909615-01-4 ;</p><p> Lignelet P., Manuel complet du langage Fortran 90 et Fortran 95, calcul intensifet gnie logiciel, Col. Mesures physiques,Masson, 1996, (320 pages),ISBN 2-225-85229-4 ;</p><p> Lignelet P., Structures de donnes et leurs algorithmes avec Fortran 90 etFortran 95, Masson, 1996, (360 pages), ISBN 2-225-85373-8 ;</p><p> Morgan and Schoenfelder, Programming in Fortran 90, Alfred Waller Ltd., 1993,ISBN 1-872474-06-3 ;</p><p> Metcalf M., Reid J., Fortran 90 explained, Science Publications, Oxford, 1994, (294 pages),</p><p>ISBN 0-19-853772-7, Traduction franaise par Pichon B. et Caillat M.,Fortran 90 : les concepts fondamentaux, ditions AFNOR, 1993, ISBN2-12-486513-7 ;</p><p> Fortran 95/2003 explained, Oxford University Press, 2004, (416 pages),ISBN 0-19-852693-8 ;</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 16 / 317</p></li><li><p>Introduction bibliographie</p><p> Olagnon Michel, Traitement de donnes numriques avec Fortran 90,Masson, 1996, (364 pages), ISBN 2-225-85259-6</p><p> Redwine Cooper, Upgrading to Fortran 90,Springer, 1995, ISBN 0-387-97995-6 ;</p><p> International Standard ISO/IEC 1539-1:1997(E) Information technology - Progr.languages - Fortran - Part1 : Base language. Disponible auprs de lAFNOR.</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 17 / 317</p><p>Introduction documentation</p><p> Documentation IBM/Blue Gene/Q : Getting Started with XL Fortran Compiler Reference Language Reference Optimization and programming guide</p><p>disponibles sur le serveur Web IDRIS ladresse :http://www.idris.fr/turing/doc-ibm.html</p><p> Documentation gnrale Supports de cours Fortran 95 IDRIS :</p><p>http://www.idris.fr, choix Supports de cours puis Fortran The Fortran Company :</p><p>http://www.fortran.com tat davancement de lintgration de la norme Fortran 2003 :</p><p>http://fortranwiki.org/fortran/show/Fortran+2003+status tat davancement de lintgration de la norme Fortran 2008 :</p><p>http://fortranwiki.org/fortran/show/Fortran+2008+status</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 18 / 317</p><p>http://www.idris.fr/turing/doc-ibm.htmlhttp://www.idris.frhttp://www.fortran.comhttp://fortranwiki.org/fortran/show/Fortran+2003+statushttp://fortranwiki.org/fortran/show/Fortran+2008+status</p></li><li><p>Gnralits</p><p>1 Introduction</p><p>2 GnralitsStructure dun programmeCompilation, dition des liens, excutionlments syntaxiques</p><p>3 Types drivs</p><p>4 Programmation structure</p><p>5 Extensions tableaux</p><p>6 Gestion mmoire</p><p>7 Pointeurs</p><p>8 Interface de procdures et modules</p><p>9 Interface gnrique</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 19 / 317</p><p>Gnralits</p><p>10 Surcharge ou cration doprateurs</p><p>11 Contrle de visibilit, concept dencapsulation et gestion de zones dynamiques</p><p>12 Procdures rcursives</p><p>13 Nouveauts sur les E/S</p><p>14 Nouvelles fonctions intrinsques</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 20 / 317</p></li><li><p>Gnralits Structure dun programme</p><p>Structure dun programme</p><p>CONTAINS</p><p>CONTAINS</p><p>CONTAINS</p><p>CONTAINS</p><p>USE</p><p>USE</p><p>Sousprogramme</p><p>Fonction</p><p>Procedureinterne</p><p>Fonction</p><p>PartiePrivee</p><p>Sousprogramme</p><p>Programme principal Module</p><p>PartiePublique</p><p>Fonction</p><p>Procedure interne</p><p>Procedure interne</p><p>Sousprogramme</p><p>interneProcedure</p><p>Procedure interne</p><p>Patrick Corde Herv Delouis ( Patrick.Corde@idris.fr ) Langage Fortran(Avanc) 4 juillet 2018 21 / 317</p><p>Gnralits Compilation, dition des liens, excution</p><p>Compilation, dition des liens, excution</p><p> Le compilateur cre pour chaque fichier source : un fichier objet de mme nom suffix par .o, autant de fichiers nom_module.mod quil y a de modules (sur IBM RS/SP6, la</p><p>commande what permet de savoir, entre autres, de quel fichier source ils sont issus). Si un module fait appel (USE) dautres modules, ces derniers doivent avoir tprcdemment compils.</p><p>1 Compila...</p></li></ul>