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 :

programmation en fortran sur mac


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut programmation en fortran sur mac
    Bonjour,

    tout d'abord, je précise que je suis entièrement débutante en fortran.

    Je suis sur Mac OS X 10.7.5 et j'ai suivi les instructions de ce site: https://sites.google.com/site/dwhipp...compilers#lion
    pour installer un compilateur.

    J'ai ensuite lancé XCode pour faire un essai de programmation que j'ai trouvé dans un pdf pour apprendre le fortran mais je n'arrive pas à faire fonctionner le programme.

    Voici ce que j'ai fait dans XCode:
    1/j'ai créé un nouveau projet en sélectionnant Command line tool
    2/Dans product name, j'ai entré le nom de mon programme (premierProgramme)
    3/Dans Type, j'ai choisi Foundation (on me propose aussi C, C++, Core Data, Core Foundation et Core Services)
    4/J'ai laissé cochée la case Use Automatic Reference Counting
    5/Une fois cela fait, dans la colonne de droite de XCode, j'ai choisi Fortran 90 Source pour File type.

    Je vous met une capture d'écran sur laquelle on voit ma fenêtre XCode après avoir cliqué sur "run" et avoir eu le message "Build Succeeded"

    J'ai aussi un "warning": no rule to process file '$(PROJECT_DIR)/premierProgramme/main.m' of type sourcecode.fortran.f90 for architecture x86_64

    Quelqu'un pourrait-il m'aider et me dire ce que je dois faire?

    Merci par avance

    Bonne soirée
    Images attachées Images attachées  

  2. #2
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    Il est généralement recommandé sur mac ou linux d'utiliser les compilateurs en ligne de commande, et d'utiliser les éditeurs de texte... et bien pour éditer le texte uniquement.

    Comme éditeur de texte sur mac, Fraise (sisi, c'est bien le nom) est plutôt répandu et agréable.

    Ensuite, pour la compilation, il faut prendre l'habitude de le faire à la main. Xcode dois avoir installé gfortran :

    cd /le/repertoire/de/mon/programme
    gfortran monprogramme.f90 -o monexe.exe
    ./monexe.exe

    Plus compliqué au début (quoi que), mais un grand gain de temps par la suite pour débugguer ton programme.
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    tout d'abord, merci pour cette réponse. Comme j'e l'ai dit, je suis débutante et du coup j'ai quelques questions qui persistent:

    Si j'utilise Fraise et que je compile à la main, je n'ai pas besoin d'utiliser XCode, et pour compiler, j'utilise le terminal, c'est cela?

    La commande que tu m'a écrite permet d'installer gfortran pour XCode et ainsi de compiler avec XCode ou est-ce la commande pour compiler à partir du terminal?

    En quoi XCode est-il plus compliqué au début?

    Bon en tout cas, je vais essayer d'installer Fraise déjà et je vais y aller petit à petit.

    Bonne soirée.

  4. #4
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    Pas de soucis.

    Un mac peut être utilisé comme sous Linux (ou windows, si gcc est installé) :
    - On utilise un éditeur de texte pour coder
    - On compile dans un terminal

    Xcode est en fait un gros pack qui regroupe une interface pour programmer, ainsi que la suite de compilateur gcc (gcc, g++, gfortran, etc). Les compilateurs sont donc disponibles dans un terminal. Pour le vérifier, tu peut taper dans un terminal :

    gfortran --version

    Il vas alors t'afficher son numéro de version. Par exemple chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GNU Fortran (GCC) 4.8.1
    Copyright (C) 2013 Free Software Foundation, Inc.
    La commande que je t'ai donné sert à compiler à partir du terminal. Les commandes suivantes sont essentielles à tout programmeur sous Unix/Linux/Mac :

    cd -> se place directement dans le home de l'utilisateur (ton répertoire personnel)
    ls -> liste les fichiers et sous répertoires dans le répertoire où tu te trouve.
    cd toto/ -> ouvre le dossier toto
    cd ../ -> remonte d'un répertoire
    etc. Ce sont les commandes de base, tu en as pour presque tout faire.

    Ok, ensuite pour compiler un code fortran, place toi dans le répertoire où se trouve le fichier f90 (par exemple toto.f90) :

    cd lerepdemoncode

    Puis pour le compiler :

    gfortran toto.f90 -o toto.exe

    Le fichier binaire généré est alors toto.exe. Pour l’exécuter, tu dois utiliser le "./" :

    ./toto.exe

    Exemple, le programme coucou.f90, placé dans /Users/moi/monprog/ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          Program Hello
          Print *, "Hello World!"
          End Program Hello
    Je vais dans son rep :
    cd /Users/moi/monprog

    Je le compile :
    gfortran coucou.f90 -o coucou.exe

    Puis je l'execute :
    ./coucou.exe

    Et ça me donne :
    Hello World!

    Ensuite, dés que tu y est parvenu, je t'expliquerai les options de compilation de base pour bien compiler (optimisation, debugging).
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    ça y est, j'ai réussi!
    j'ai eu un peu de mal dans le terminal mais j'ai fini par y arriver

  6. #6
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    Super !

    Maintenant, il est important de voir comment bien utiliser la compilation.

    Les bases :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran monprog.f90
    Compile monprog.f90, et génère l’exécutable a.out (car nous n'avons pas spécifié le nom que nous voulions donner à l’exécutable, donc il choisit ce nom par défaut).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran monprog.f90 -o toto.exe
    Compile monprog.f90, et génère l’exécutable toto.exe.

    Maintenant, si ton programme est contenu dans plusieurs fichiers (des modules, des subroutines, des fonctions, etc.), il faut les compiler les uns après les autres, puis tout linker a la fin.

    Par exemple, mon programme contient matrixcalc.f90 (contient les subroutines pour les calculs de matrices) et main.f90 (contient le programme principal). Je compile en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gfortran -c matrixcalc.f90
    gfortran -c main.f90
    gfortran -o toto.exe matrixcalc.o main.o
    Les 2 premières étapes ont compilé des fichiers .o, le -c spécifiant que le compilateur n'a pas à vérifier les liens (il le fera à la ligne de link finale, le gfortran -o toto.exe matrixcalc.o main.o).

    Voilà pour les bases, passons aux debugging et optimisation.

    Pour débugger ton code (localiser un problème, comme un segmentation fault ou tout autre bug), je te recommande de rajouter les options suivantes pour compiler monfichier.f90 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran -g -Wuninitialized -O -fbacktrace -fbounds-check -ffpe-trap=zero,underflow,overflow,invalid -ftrapv -fimplicit-none -fno-automatic monfichier.f90
    Si tu as une erreur, il vas te l'indiquer clairement (par exemple, su tu dépasse la taille d'un tableau, il vas clairement indiquer la ligne de code qui pose problème, ainsi que le tableau et les variables qui ont généré l'erreur).

    Une fois que le code fonctionne bien, et qu'il tourne en mode debug sans erreurs, il faut demander au compilateur de l'optimiser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran -O3 monfichier.f90
    Il existe de nombreuses autres options (-ffast-math -fforce-addr -fstrength-reduce -frerun-cse-after-loop -fexpensive-optimizations -fcaller-saves -funroll-loops -funroll-all-loops -fno-rerun-loop-opt ...). Il faut tester en fonction du code, mais le -O3 est déjà un bon départ.
    Si vraiment tu cherches les performances, je te recommande de tester le compilater Intel, plus performant. (mais c'est une étape bien plus lointaine).
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonsoir,

    désolée pour ma réponse tardive.

    Merci beaucoup pour toutes ces infos. Il me reste à m'entraîner...

    J'ai encore une question: j'ai déjà quelques références de sites internet mais j'aurais souhaité avoir un livre; j'ai trouvé quelques références mais apparemment ils sont épuisés. Y a t-il de bons livres qui seraient encore édités?

  8. #8
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    La bible :

    http://www.idris.fr/data/cours/lang/...choix_doc.html

    Après question bouquin, je n'en connais pas d'autres.
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Ok! Merci beaucoup pour tout en tout cas.

  10. #10
    Membre averti
    Homme Profil pro
    [SciComp]
    Inscrit en
    Août 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : [SciComp]

    Informations forums :
    Inscription : Août 2013
    Messages : 134
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Je plussoie la réponse de moomba sur le cours de l'idris.

    Pour les adeptes du livre "papier" dont je fais partie, il y a "Fortran 95/2003 explained" de Metcalf, Reid & Cohen [ou une version plus récente si elle existe, qui pourrait inclure les apports de fortran 2008].

    C'est un livre rédigé en langue anglaise, qui traite des versions modernes du Fortran (post-90).

    Il m'avait été conseillé lorsque je cherchais un bouquin papier, il semble d'ailleurs être une référence canonique pour le langage, mais je n'ai pas de point de comparaison.
    En tous cas, il m'a été fort utile et je l'ai bien utilisé. Après, il y a probablement d'autres références sur le sujet...

    Edit: La dernière version: "Modern Fortran Explained".

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour!

    Merci pour la référence du livre xflr6. Je vais regarder ça. J'aurais souhaité plutôt un livre en français mais je pense que ce n'est pas de l'anglais très compliqué...

    Pour le cours de l'Idris, je l'ai téléchargé. Je n'en suis pas très loin encore mais c'est vrai qu'il a l'air bien.

Discussions similaires

  1. Programme de fortran sur win7 64bit
    Par lanto dans le forum Fortran
    Réponses: 3
    Dernier message: 13/09/2011, 20h48
  2. Réponses: 17
    Dernier message: 20/01/2010, 01h06
  3. Installation compilateur Fortran sur Mac OS
    Par neo_phyte dans le forum Fortran
    Réponses: 4
    Dernier message: 30/11/2008, 16h48
  4. Aide sur choix de langage de programmation pour PC et Mac
    Par benouille69 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 11/11/2006, 18h30
  5. [MAC] Installer un programme java sur mac
    Par spekal dans le forum Général Java
    Réponses: 10
    Dernier message: 17/07/2006, 16h17

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