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 :

Librairie HDF pour Bearclaw


Sujet :

Fortran

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut Librairie HDF pour Bearclaw
    Bonjour,
    j'utilise un logiciel de calcul d'équations, Bearclaw et il fait appel à des librairies HDF,
    j'ai donc installé la version 5 mais j'ai un souci de compilation:
    > make
    ifort -c -I~/Bearclaw/hdf/include -I~/Bearclaw/hdf/lib -g /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90 -o /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.o -I/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib
    fortcom: Error: /afs/inria. fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 25: Error in opening the Library module file. [HDF5]
    USE HDF5
    ......^
    fortcom: Error: /afs/inria. fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 59: A kind type parameter must be a compile-time constant. [HID_T]
    INTEGER (HID_T) :: sd5_id,sd5_id_t
    ...........^
    fortcom: Error: /afs/inria. fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 105: A kind type parameter must be a compile-time constant. [HSIZE_T]
    INTEGER (HSIZE_T) :: sds5_dims(1)
    .............^
    fortcom: Error: /afs/inria. fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 108: A kind type parameter must be a compile-time constant. [HID_T]
    INTEGER (HID_T) :: sds5_id,dspace_id
    .............^
    .
    .
    .

    ..............................................^
    compilation aborted for /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90 (code 1)
    make: *** [/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.o] Error 1
    quelqu'un pourrait-il m'aider, s'il vous plait ??

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Le compilateur ne trouve pas le module HDF5. Normalement, il devrait y avoir un fichier HDF5.mod si le source du module est pré-compilé. Sinon, il faudrait que tu cherche où se trouve le fichier source contenant « module HDF5 ». Il y a possiblement un problème de chemin d'accès ou de make incomplet.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    merci de ta réponse,
    en fait, je trouve juste un hdf5.h dans une lib ailleurs avec plein d'autres trucs en C,
    je suppose que c'est bien compatible niveau langage avec mon fortran mais alors pour en savoir plus...

    plus précisément:
    alors, en fait, j'ai mon dossier ~/Bearclaw avec tout ce que que j'ai décompressé dont entre autre le dossier lib, où se trouve beario qui me donne l'erreur,
    mais mon hdf5.h est lui dans ~/Bearclaw/hdf/include avec toutes mes librairies de hdf par défaut
    et je viens de trouver un hdf5.mod dans ~/Bearclaw/hdf/lib

    je vais pas tout déplacer quand même, si?
    ou je dois faire une redirection? (et commment, stp? )

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Je ne suis pas un expert en Unix / Linux, si quelqu'un peut prendre le relais...

    Citation Envoyé par piploum Voir le message
    je trouve juste un hdf5.h dans une lib ailleurs avec plein d'autres trucs en C, je suppose que c'est bien compatible niveau langage avec mon fortran mais alors pour en savoir plus...
    Non. Un include file C n'est pas compatible avec Fortran.
    Citation Envoyé par piploum Voir le message
    ...je viens de trouver un hdf5.mod dans ~/Bearclaw/hdf/lib

    je vais pas tout déplacer quand même, si?
    ou je dois faire une redirection? (et commment, stp? )
    Ce qui semble ne pas fonctionner, c'est que le compilateur ne vois pas le fichier hdf5.mod. Ou plutôt, il n'est pas capable de l'ouvrir. Il y a 2 pistes à mon avis :
    • La facile: il ne trouve pas le fichier. Il faut trouver comment dire au compilateur où se trouvent les fichiers .mod avec un paramètre du genre -I... Il faut consulter le manuel du compilateur
    • La difficile ? Comme le format du fichier .mod est propriétaire, il est possible que tu n'aies pas une version du .mod compatible avec ton compilateur. Encore là 2 pistes : tu trouves un package compatible, ou tu as le source du module et tu le recompiles...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    J'ai peut-être une piste pour toi piploum:
    Pour certains compilateurs, l'option -I sert à la fois à désigner où trouver les fichiers à inclure et les modules; pour d'autres, l'option '-I' ne désigne que où trouver les fichiers à inclure et il y a une autre option à spécifier, par ex '-module', pour désigner où trouver les modules.

    Je ne connais pas 'ifort', mais peut-être fait-il partie de ces derniers. Dans ce cas, il te suffirait de rajouter la bonne option pour préciser où aller chercher les modules (a priori ~/Bearclaw/hdf/lib , vu ce que tu as dit plus haut).

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    merci de ta réponse,
    j'ai donc fait un :
    ifort -help
    et j'obtiens entre autre:

    -I<dir> add directory to include file search path

    mais pas de -mod ou -module...



    sinon, j'ai un:
    -L<dir> instruct linker to search <dir> for libraries

    est-ce que cela serait cela ?...

  7. #7
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Pour ifort l'option -module $(CheminDesModules) lui indique qu'en cas de compilation d'un module (les .mod), il doit placer celui-ci dans le répertoire CheminDesModules

    Le plus propre est habituellement de réserver un répertoire aux .mod, ça évite de malencontreusement laisser trainer des .mod à côté des sources à cause d'une mauvaise directives clean de ton Makefile et ainsi d'avoir qques soucis de compilation par la suite...

    Reprenons...
    Un fichier utilisant ce module quand à lui devra contenir -I$(CheminDesModules)

    Ce qui semble être le cas le cas dans ton make.

    Reste à vérifier la cohérence des emplacements réels de tes différents sources, modules et fichiers include.

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    merci de ta réponse, on se rapproche

    Ne voulant pas rater mon coup, car tout cela est vraiment très technique pour moi, je t'en dis plus:

    tout au début j'ai:
    BEARCLAWLIB = $(BEARCLAW)/lib

    DIR_MODULES = $(BEARCLAWLIB)

    # Location of HDF include, module files
    #HDFINC=/usr/local/hdf/include remplacé par:
    HDFINC=~/Bearclaw/hdf/include
    #HDFMOD=/usr/local/hdf/lib remplacé par:
    HDFMOD=~/Bearclaw/hdf/lib

    # Location of HDF libraries
    #HDFLIBS = -L/usr/local/hdf/lib -lhdf5_fortran -lhdf5 -lmfhdf -ldf -ljpeg -lz -lsz remplacé par:
    HDFLIBS = ~/Bearclaw/hdf/lib -lhdf5_fortran -lhdf5 -lmfhdf -ldf -ljpeg -lz -lsz
    puis, plus loin:

    # Compiler command
    FC = $(COMPILER) -c -I$(HDFINC) -I$(HDFMOD) $(FFLAGS)
    # Linker command
    LINK = $(LINKER) $(LLFLAGS)

    # Required libraries
    LIBS = $(HDFLIBS)

    .SUFFIXES: .F90 .f90 .mod .c .o .f

    # Compile rules

    ifeq ($(MAKECMDGOALS),mpibear)
    %.o : %.f90
    $(MPICOMPILER) -c -DMPIBEAR -I$(HDFINC) -I$(HDFMOD) $(USER_FFLAGS) $(FFLAGS) -I$(DIR_MODULES) $< -o $@
    else
    %.o : %.f90
    $(FC) $< -o $@ -I$(DIR_MODULES) $(USER_FFLAGS)
    endif
    que dois-je très concrètement modifier, stp ??

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    bon, j'ai essayé:
    # Compiler command
    #FC = $(COMPILER) -c -I$(HDFINC) -I$(HDFMOD) $(FFLAGS)
    FC = $(COMPILER) -c -I$(HDFINC) -module$(HDFMOD) $(FFLAGS) #essai P.M----------------------------------
    # Linker command
    LINK = $(LINKER) $(LLFLAGS)

    # Required libraries
    LIBS = $(HDFLIBS)

    .SUFFIXES: .F90 .f90 .mod .c .o .f

    # Compile rules

    ifeq ($(MAKECMDGOALS),mpibear)
    %.o : %.f90
    # $(MPICOMPILER) -c -DMPIBEAR -I$(HDFINC) -I$(HDFMOD) $(USER_FFLAGS) $(FFLAGS) -I$(DIR_MODULES) $< -o $@
    #essai P.M ligne suivante_____________________________________________________________________________________:
    $(MPICOMPILER) -c -DMPIBEAR -I$(HDFINC) -module$(HDFMOD) $(USER_FFLAGS) $(FFLAGS) -I$(DIR_MODULES) $< -o $@
    else
    %.o : %.f90
    $(FC) $< -o $@ -I$(DIR_MODULES) $(USER_FFLAGS)
    endif
    rien de neuf a-priori...

    > make
    ifort -c -I~/Bearclaw/hdf/include -L~/Bearclaw/hdf/lib -g /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90 -o /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.o -I/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib
    fortcom: Error: /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 25: Error in opening the Library module file. [HDF5]
    USE HDF5
    ......^
    à l'aide , svp

  10. #10
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    il faut détacher le chemin de l'option, dixit:
    -module $(CheminDesModules)
    Contrairement à l'inclusion des modules:
    -I$(CheminDesModules)

  11. #11
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    nouvel essai:

    # Compiler command
    #FC = $(COMPILER) -c -I$(HDFINC) -I$(HDFMOD) $(FFLAGS)
    FC = $(COMPILER) -c -I$(HDFINC) -module $(HDFMOD) $(FFLAGS) #essai P.M----------------------------------
    # Linker command
    LINK = $(LINKER) $(LLFLAGS)

    # Required libraries
    LIBS = $(HDFLIBS)

    .SUFFIXES: .F90 .f90 .mod .c .o .f

    # Compile rules

    ifeq ($(MAKECMDGOALS),mpibear)
    %.o : %.f90
    # $(MPICOMPILER) -c -DMPIBEAR -I$(HDFINC) -I$(HDFMOD) $(USER_FFLAGS) $(FFLAGS) -I$(DIR_MODULES) $< -o $@
    #essai P.M ligne suivante_____________________________________________________________________________________:
    $(MPICOMPILER) -c -DMPIBEAR -I$(HDFINC) -module $(HDFMOD) $(USER_FFLAGS) $(FFLAGS) -module $(DIR_MODULES) $< -o $@
    else
    %.o : %.f90
    $(FC) $< -o $@ -I$(DIR_MODULES) $(USER_FFLAGS)
    endif
    mais ça plante toujours,
    par contre, pour une nouvelle raison:
    > make
    ifort -c -I~/Bearclaw/hdf/include -module ~/Bearclaw/hdf/lib -g /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90 -o /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.o -I/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib
    fortcom: Error: /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 25: This module file was not generated by any release of this compiler. [HDF5]
    USE HDF5
    ......^

  12. #12
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Message très clair. Le module généré vient pas du même compilo.
    Ya embrouille là !

    Alors primo fait ls de
    /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/
    regarde si ya rien qui traine en *.mod dedans. Possible qu'il y en ai et par défaut il va prendre celui dans le répertoire courant...

    Deuxio nettoye tout avec un make clean ou cleanall. Tous les lib, .o et .mod doivent passer à la trappe pour ne pas avoir de doute permis.

  13. #13
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    merci infiniment pour tes décryptages
    ça fait plaisir de se sentir épaulé, après ces derniers jours de galère...

    alors le ls dans ~/Bearclaw/lib/ ne donne aucun .mod:
    > ls
    bearez.f90 fixup.o linsolve.f90 NodeInfoGlobal.f90 problem.f90
    beario.f90 fsbear.f90 linsolveOLD.f90 NodeInfoTypeClassicBEAR.f90 rundata.f90
    beario.f90~ FuncParamTypeCommon.f90 Makefile.generic NodeInfoTypeCommon.f90 serial_exec.f90
    classicbear.f90 griddata.f90 mkp.f NodeInfoTypeCompactBEAR.f90 setbc.f90
    compactbear.f90 hdf.f90 mpi_bearez.f90 NodeInfoTypeFastMP.f90 SizeOfInfo.f90
    development InfoFieldUtils.f90 mpi_beario.f90 NodeInfoTypeMUSCLbear.f90 treeops.f90
    dffunc.f90 infosize.c mpidriver.f90 NodeInfoTypeWaveBEAR.f90 treeops.f90.sav
    driver.f90 infoword.c mpi_exec.f90 nohdf.f90 treeops.o
    enobear.f90 InitFields.f90 MUSCLbear.f90 openmpdriver.f90 wavebear.f90
    fastMP.f90 linsolve1.f90 nodeinfodef.f90 openmp_exec.f90 wavebeargrid.f90



    et le nettoyage ~/Bearclaw/lib/ joue l'absent:
    > make clean
    make: *** No rule to make target `clean'. Stop.
    > cleanall
    cleanall: Command not found.

  14. #14
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Points : 68
    Points
    68
    Par défaut
    J'ai fait à tout hasard le makeclean là où je fais mon > make:
    (dans /malassen/Bearclaw/examples/wavebear/1d/advection/example1/)

    et j'ai:
    > make clean
    rm -f nodeinfodef.o problem.o
    rm -f problem.mod
    rm -f nodeinfodef.mod
    rm -f problem.o
    rm -f nodeinfodef.o
    rm -f scheme.o
    rm -f scheme.mod
    rm -f PROBLEM.mod
    rm -f NODEINFODEF.mod
    rm -f PROBLEM.o
    rm -f NODEFINODEF.o
    rm -f SCHEME.o
    rm -f SCHEME.mod
    rm -f xbear.log
    rm -f gmon.out
    rm -f *.g90
    rm -f *.mod
    rm -f Grid*.data
    rm -f bear.rundata
    rm -f xbear
    rm -f mpibear
    rm -f *.d
    rm -f *.log
    > make
    ifort -c -I~/Bearclaw/hdf/include -module ~/Bearclaw/hdf/lib -g -I/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib nodeinfodef.f90
    ifort -c -I~/Bearclaw/hdf/include -module ~/Bearclaw/hdf/lib -g -I/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib problem.f90
    ifort -c -I~/Bearclaw/hdf/include -module ~/Bearclaw/hdf/lib -g /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90 -o /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.o -I/afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib
    fortcom: Error: /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 23: Error in opening the Library module file. [TREEOPS]
    USE TreeOps
    ......^
    fortcom: Error: /afs/inria.fr/rocq/home/sisyphe/malassen/Bearclaw/lib/beario.f90, line 25: This module file was not generated by any release of this compiler. [HDF5]
    USE HDF5
    ......^

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

Discussions similaires

  1. Librairie 7z Pour Python
    Par kedare dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2005, 15h49
  2. Ajouter des librairies externes pour la compilation en C++
    Par Roming22 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2005, 10h15
  3. Librairies gratuites pour générer du PDF
    Par Noxexplorer dans le forum ASP
    Réponses: 2
    Dernier message: 02/05/2005, 20h18
  4. librairie c++ pour xml.???
    Par elekis dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 08/11/2004, 20h46
  5. Librairies référence pour produits (UPC / ISBN etc..)
    Par zatomik dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 15/09/2004, 10h38

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