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 :

erreur dans 'use mpi'


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 120
    Par défaut erreur dans 'use mpi'
    Bonjour

    J'ai un outil cmake qui réussit à compiler un fichier utilisant la librairie mpi

    tout est bon : trouver les chemins de la librairie et du fichier mpi.h ,....

    voici le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    program open
     
      !!!!!! use mpi
      implicit none
      include 'mpif.h'
     
      call mpi_init(code)
     .........................................................
       ......................................................
      call mpi_finalize(code)
     
    end program open
    donc quand je remplace "include mpif.h" par "use mpi" , j'obtiens l'erreur :

    Error in opening the compiled module file. Check INCLUDE paths. [MPI]
    use mpi
    ^

    C'est le seul changement que j'ai fait !!

    Merci

  2. #2
    Membre expérimenté Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    Bonjour

    donc quand je remplace "include mpif.h" par "use mpi" , j'obtiens l'erreur :

    Error in opening the compiled module file. Check INCLUDE paths. [MPI]
    use mpi
    ^

    C'est le seul changement que j'ai fait !!
    Il me semble percevoir une certaine confusion dans ton approche.
    Ton fichier mpif.h est juste (je présume) un fichier texte contenant tes définitions.

    Si tu veux (ce qui est une bonne idée) utiliser un module, il faut créer un fichier
    mpi.f90 (par exemple) qui ressemblera à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    module mpi
     
    <tes définitions>
     
    end module mpi
    Ensuite tu compiles ce fichier, ce qui te donne un fichier mpi.o (le fichier lui même)
    et un fichier mpi.mod (le nom donné dans module) qui là, pourra être intégré par
    ton


  3. #3
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Normalement si MPI est correctement installé sur ta machine, le module mpi doit exister quelque part pret à être utilisé.

    mpif.h est une vielle version utilisable avec F77 alors que le module mpi est lui adapté au F90 et suivant.

    Controle que tu as bien une version de MPI (par exemple OpenMpi ou MPICH2) et que tu as également un compilateur fortran 90 !!! qui avait été installé avant l'installation de MPI. Quand tu installe mpi il génère autoamtiquement des compilateur parallèle associé au compilateur séquentiel :

    icc ou gcc => mpicc
    ifort => mpif90

    pour utiliser "use mpi" il faut compiler avec un mpif90, s'il n'existe pas le module mpi ne doit pas exister non plus.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 120
    Par défaut RE
    oui c'est exactement ça ! Merci bien

    j'ai changé "f95" par "mpif90" dans le Cache et ça marche !

    Donc Cmake me trouve f95 comme compilateur au lieu de mpif90 .

    comment on peut résoudre ce problème de compilateur Fortran au lieu d'imposer à la main le bon . Car si je compile dans une autre machine il y a une probabilité que le compliteur MPI-Fortran n'est pas le même !

    que ce que je dois changer dans "CMakeLists.txt"

    voici un aperçu de mon "CMakeLists.txt"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Activer fortran
    enable_language(Fortran)
    ........
    # ----- Recherche de MPI -----
     
    FIND_PACKAGE(MPI REQUIRED)
    IF (MPI_FOUND) 
      set(LIBS ${LIBS} ${MPI_LIBRARIES})
      include_directories(${MPI_INCLUDE_PATH})
      link_directories(${MPI_LIBRARIES})
    ENDIF (MPI_FOUND)

    Merci

  5. #5
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Je ne connais pas du tout Cmake ... je suis plus habitué au makefile classique.

    Tu dois peut être avoir une variable quelque part qui définit le compilateur ! Dans les makefiles généralement c'est CC .

    Il faut que tu lui dises à cet endroit que le compilateur c'est mpif90

    Bon courage

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 120
    Par défaut re re re
    Si je peux imposer le compilateur à utiliser mais ce n'est pas ça le but parce que sur une autre machine il y aura peut être un autre d'où le principe de Cmake (générer un Makefile selon la machine utilisée)

    Je vais voir comment on fait pour résoudre ce problème mais j'ai une autre question :

    pourquoi quand j'ai mis """ include 'mpif.h' """" ifort a bien fonctionné

    mais avec """ use mpi """ il fallait mettre mpif90 !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/06/2013, 17h43
  2. Erreur dans le logCat "uses alphaPlaneWorkaround"
    Par Simon MARQUIS dans le forum Android
    Réponses: 0
    Dernier message: 05/02/2011, 16h32
  3. [Erreur dans la lib...]
    Par Gonath dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/12/2003, 09h02
  4. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 21h39
  5. Connaitre l'unitée à ajouter dans USES
    Par DelphiCool dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2002, 13h48

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