1 2------------------ 3TABLE DES MATIERES 4------------------ 5 61. Obtenir la derniere version 7 82. Installer la bibliotheque MED 3.2 92.1 Plates-formes supportees 102.2 Logiciels necessaires a l'installation 112.3 Lancement de l'installation sous UNIX 12 133. Utilisation des tests et des makefiles associes 14 154. Utilitaires 16 175. Documentation 18 196. Joindre les correspondants MED 20 21---------------------------------------------------------------------- 22 231. Obtenir la derniere version 24 25La version la plus recente de la bibliotheque MED se trouve 26sur le serveur intranet EDF R&D : http://med.der.edf.fr. 27 28 292. Installer la bibliotheque MED 3.2 30 31Pour compiler et installer la librairie MED3.2 ainsi que sa 32batterie de programmes tests et ses utilitaires, 33verifiez tout d'abord que vous disposez 34d'un environnement adéquat puis appliquez les instructions suivantes. 35 362.1 Plates-formes supportees et testées 37 38PCs LINUX 32/64 39SUN-SOLARIS -> 3.0.x 40BLUEGENE -> 3.0.x 41 422.2 Logiciels necessaires a l'installation 43 44a. HDF 5-1.8.14 (http://www.hdfgroup.org/HDF5). 45a1. Variable d'environement HDF5HOME positionnée à l'emplacement d'HDF5 46 ou utilisation de l'option --with-hdf5=<hdf5 path> à l'étape de configuration. 47 Si aucune option n'est utilisée, MED cherche hdf dans /usr. 48 49b. libz 50b1. Si vous compilez en dynamique la bibliothèque hdf5 doit pouvoir être trouvée soit 51 dans le système (/usr/lib) soit par la variable LD_LIBRARY_PATH. 52 53c. compilateur C, F77 ou F90, C++ 54 552.3 Lancement de l'installation sous UNIX 56 57Dans le repertoire des sources : 58./configure --prefix=<repertoire cible> 59make 60make check 61make installcheck 62make install ou make install-strip 63 64Remarques : 65 66- Une interface python est disponible depuis la version 3.0.7. 67 Elle peut être desactivée par l'option --disable-python. 68 Elle ne peut être activée en mode static --disable-shared. 69 La bibliothèque medfichier embarque les interfaces .cc et .py générées par swig 70 pour les options med_int=int et med_int=long. 71 L'outil swig n'est donc pas requis à moins de compiler med avec une version // d'hdf. 72 Il faut alors regénérer les interfaces swig en précisant l'option --with-swig. 73 Une fois construite en version //, si vous utiliser la même arborescence pour construire une version 74 de medfichier avec une version séquentielle d'HDF il faut de nouveau activer l'option --with-swig pour 75 regénérer les interfaces swig sans MPI (à l'identique des versions initialement embarquées). 76 La version de swig utilisé par med-3.3 est actuellement 2.0.9. 77 Si vous utilisez un compilateur tel que gcc-6.4 il faut utiliser une version 3 de swig. 78 79- la bibliothèque MED utilise le C++ depuis sa version 2.3.2. 80 81- Il est possible de compiler uniquement la bibliotheque MED en 82 version statique ou dynamique en utilisant respectivement les options 83 du configure --disable-shared ou --disable-static. 84 85 Dans le cas d'une compilation statique, il est necessaire de préciser 86 le(s) nom(s) et le(s) chemin(s) d'accès à la bibliothèque C++ pour l'édition des liens 87 des tests fortran (soit au moment du configure soit à la commande make ) : 88 89 ex : make FTLDFLAGS="-L/usr/lib/gcc-lib/i486-linux/3.3.5/" FTLIBS="-lstdc++" 90 91 Pourquoi cette exception à la génération des tests fortran en mode statique ? : 92 93 L'utilisation du linker C++ automatiserait l'apport de la bibliothèque C++ 94 dont le nom n'est pas standardisé. Malheureusement, certains conpilateurs fortran 95 ne proposent pas une bibliothèque comme libfrtbegin.a du g77 (contenant le main) 96 mais ajoutent le main à l'édition des liens par un fichier spécifique main.o. 97 La conséquence est que les autotools ne peuvent détecter cette situation et à 98 l'édition des liens C++ aucun main n'est défini. A cause de ces spécificités, 99 nous avons choisi de laisser une édition des liens via le fortran. 100 Lors d'une utilisation de bibliothèques dynamiques sur des plateformes qui 101 supportent les dépendances entre bibliothèques il n'est pas necessaire 102 de définir le FTLDFLAGS car une dépendance à la bibliothèque C++ est inscrite 103 dans la bibliothèque med. 104 105- Pour compiler les tests en Fortran90 vous devez utiliser l'option 106 107 --with-f90=<nom du compilateur F90> ou 108 positionner la variable d'environement F90 et indiquer --with-f90 : 109 110 Configurez par la commande : ./configure --prefix=<repertoire cible> F77=pgf90 --with-f90=pgf90 111 112 Il est necessaire d'utiliser le compilateur F90 également pour compiler l'interface fortran 113 de la biliothèque (variable F77). 114 115- Pour compiler la bibliotheque en mode debug utilisez : 116 117 ./configure --prefix=<repertoire cible> CFLAGS=-g FFLAGS=-g [FCFLAGS=-g] 118 119- Pour enlever les symboles de debugging dans le repertoire d'installation faire 120 121 make install-strip au lieu de make install 122 123- Vous pouvez indiquez vos propres options de compilation : 124 ./configure MAKE=<mon make> CC=<mon compilo C> CFLAGS=<mes options C> \ 125 F77=<mon compilo f77> FFLAGS=<mes options f77> \ 126 FCFLAGS=<mes options f90> \ 127 CXX=<mon compilo cplusplus> CXXFLAGS=<mes options cplusplus> \ 128 --prefix=<repertoire cible> 129 130- Pour spécifier où se trouve HDF5 sans utiliser la variable 131 d'environnement HDF5HOME utilisez : --with-hdf5=<path> 132 133- Pour désactiver l'affichage de messages d'erreur sur la sortie erreur utilisez l'option 134 --enable-msgerr=false ou --disable-msgerr. 135 136 Si elle est bien utilisée, la bibliothèque ne devrait pas afficher d'erreur. 137 138- MED se base sur la taille des entiers F77 pour définir la taille du med_int. Les 139 options de compilation concernant la taille des entiers fortran sont testées à l'étape 140 de configuration par l'execution d'un test. 141 Si la détection ne fonctionne pas, ou si vous utilisez un cross-compiler vous pouvez 142 spécifier le type C du med_int par l'option --with-med_int=<mon type "C", int, long ...>. 143 La taille de l'entier Fortran doit correspondre au type "C". 144 145 146Exemples de configure : 147 148- Sous Solaris : 149 150 /* Pour utiliser Workshop 6.0*/ 151 export LD_LIBRARY_PATH=/logiciels/public/zlib-1.1.4/lib:\ 152/home/med/hdf5-1.6.4.SUN4SOL2/lib:/logiciels/workshop-6.0/SUNWspro/lib 153 export PATH=/logiciels/workshop-6.0/SUNWspro/bin/:$PATH 154 export F90=f90 155 156 ./configure CC="cc" CFLAGS="-O" F77="f90 -silent" FFLAGS="-O2" \ 157CXX="CC" --prefix=/tmp/med-3.0.0.sun --with-hdf5=/home/med/hdf5-1.6.4.SUN4SOL2/ \ 158--with-f90 --disable-shared LDFLAGS="-L/logiciels/public/zlib-1.1.4/lib/" \ 159FTLDFLAGS="-L/logiciels/workshop-6.0/SUNWspro/WS6/lib/" \ 160FTLIBS="-lcx -lCrun -lCstd" 161 162 Notez l'apparition du -silent qui permet au configure de detecter correctement 163 la capacité de ce compilateur à générer une bibliothèque dynamique. 164 Sans ce flag f77 écrit sur la stderr le nom de la routine en cours de compilation 165 ce qui est détecté comme une erreur au configure. 166 167 168- Sous OSF/1 : 169 170 Par défaut le configure utilisé positionne la taille des entiers à 64bits, 171 pour désactiver cette fonctionnalité utiliser --disable-int64. Prendre garde à 172 positionner les FFLAGS fortran de façon adéquate (-integer_size 64). 173 174F77=f90 175FFLAGS="-fast -r8 -integer_size 64 -arch host -tune host" 176CC=cc 177CFLAGS="-g0 -verbose -std -O4 -arch host -tune host -ansi_args -fp_reorder -readonly_strings -inline speed" 178HDF5HOME=/home05/med/hdf5-1.6.4 179F90=f90 180 181./configure --prefix=/home05/med/med-3.0.0 --with-f90 182 183- Sous Linux avec compilateur Fortran PGI et GNU C/C++. 184 185 ./configure F77="pgf90" --with-f90="pgf90" --with-med_int=int 186 187 Dans cette configuration : 188 189 - Le test de la taille du med_int échoue car des symboles définis dans des bibliothèques F77 PGI 190 ne sont pas fournis à l'édition des liens du test. 191 Ce test possède un programe principal en C et une routine F77. 192 Le problème est que si l'on ajoute le contenu de $(FTLIBS) à l'édition des liens, le test fontionne 193 avec PGI mais plus sous G77/GCC pour cause d'une définition multiple du main ( par le test c et par la 194 bilbiothèque libfrtbegin ). 195 196- Sous Linux avec compilateur gfortran avec entiers fortran 64bits 197 198 ./configure --prefix=/local/med-3.0.0_64.bin --with-f90=gfortran F77=gfortran FFLAGS="-fdefault-integer-8" FCFLAGS="-fdefault-integer-8" 199 200 Ne pas oublier de positionner FCFLAGS pour que les bonnes options soient utilisées pour le Fortran 90. 201 202- sous BULL Novascale 4040 Linux 64 : 203 204./configure --prefix=/home02/salome/ERIC/med-3.0.0_64.bin --with-f90=ifort FFLAGS="-i8" FCFLAGS="-i8" 205 206- Sous BlueGene Q (new) 207 208export ZLIB_PREFIX=/home/projets-bgq/systel/LIBRARY/zlib-1.2.7/arch/zumbrota 209export HDF5_PREFIX=/home/projets-bgq/systel/LIBRARY/hdf5-1.8.8/arch/zumbrota 210export PATH=$PATH:$HDF5_PREFIX/bin/tools/ 211export MED_SRC=$HOME/med-3.0.7 212 213 214$MED_SRC/./configure --prefix=$MED_PREFIX --disable-shared --disable-python \ 215CC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpicc \ 216F77=/bgsys/drivers/ppcfloor/comm/xl/bin/mpif77 \ 217FC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpif90 \ 218CXX=/bgsys/drivers/ppcfloor/comm/xl/bin/mpic++ \ 219CXXFLAGS="-qlanglvl=redefmac" \ 220--with-hdf5=$HDF5_PREFIX --with-med-int=int \ 221LDFLAGS="-L$ZLIB_PREFIX/lib" FTLIBS="-L/bgsys/linux/RHEL6.3_V1R2M0-36/opt/ibmcmp/vacpp/bg/12.1/lib64/ -libmc++ -L/bgsys/linux/RHEL6.3_V1R2M0-36/usr/lib/gcc/ppc64-redhat-linux/4.4.4/lib64 " \ 222--build=ppc64 --host=powerpc 223 224Remarque importante : Il peut être necessaire de modifier la variable prefer_static_libs à yes dans la fonction func_mode_link du fichier libtool généré au ./configure. 225 226- Sous BlueGene P 227 228MED_SRC=$HOME/med-3.0.5 229MED_PREFIX=/gpfs/home/med/med-3.0.5.bin/arch/bgp 230HDF5_PREFIX=/gpfs/home/saturne/opt/hdf5-1.8.6/arch/bgp 231ZLIB_PREFIX=/gpfs/home/saturne/opt/zlib-1.2/arch/bgp 232 233 234$MED_SRC/./configure --prefix=$MED_PREFIX --disable-shared CC=mpixlc F77=mpixlf77 FC=mpixlf90 CXX=mpixlcxx CXXFLAGS="-DMPICH_SKIP_MPICXX -DMPICH_IGNORE_CXX_SEEK" --with-hdf5=$HDF5_PREFIX --with-med-int=int --disable-shared LDFLAGS="-L$ZLIB_PREFIX/lib" FTLIBS="/opt/ibmcmp/vacpp/bg/9.0/bglib/libibmc++.a /bgsys/drivers/V1R4M2_200_2010-100508P/ppc/gnu-linux/powerpc-bgp-linux/lib/libstdc++.a" --build=ppc64 --host=ppc 235 236- En version Parallèle 237 238A l'étape du configure MED repère si l'hdf utilisé à été configuré avec une version parallèle d'HDF5 (statique ou dynamique). 239Si une version parallèle d'HDF5 est utilisée, les compilateurs CC, CXX, F77 seront positionnés par défaut à mpicc (ou commande équivalente), mpiCC (ou commande équivalente) et mpif77 (ou commande équivalente). 240Il est possible de surcharger ces variables. 241 242- En version dynamique (exemple avec lam MPI) : 243 244export LAMMPIF77=gfortran 245../Dev_V3.0b_fayolle/configure --with-hdf5=/local/hdf5-1.8.4p1_par.bin FC=mpif77 --with-f90=mpif77 FTLIBS=-llammpi++ --prefix=/local/med-3.0.0.bin 246 247Dans cette exemple les compilateurs CC, CXX, F77 seront positionnés par défaut à mpicc, mpiCC et mpif77. 248Puisque l'on active les tests fortran 90, il est necessaire de positionner également FC à mpif77 si vous ne possédez pas de wrapper mpif90. 249Le positionnement FTLIBS=--lampi++ est necessaire pour l'édition des liens des tests fortran qui seront fait en F77 ou FC (cf explication précédente sur la compilation statique). 250Ex: 251../Dev_V3.0b_fayolle/configure --with-hdf5=/local/hdf5-1.8.4p1_par.bin FC=mpif77 FCFLAGS="-fdefault-integer-8" --with-f90=mpif77 FFLAGS="-fdefault-integer-8" FTLIBS="-llammpi++" --prefix=/local/med-3.0.0a2.bin 252 253- En version statique (sans les tests f90) : 254 255export LAMMPIF77=gfortran 256../Dev_V3.0b_fayolle/configure --prefix=/local/med-3.0.0.bin --with-hdf5=/local/hdf5-1.8.4p1_par.bin/ --disable-shared FTLDFLAGS=-L/usr/lib/gcc/x86_64-linux-gnu/4.1.2/ FTLIBS="-lstdc++ -llammpi++" 257 258 259- En version statique (autres commandes utiles) : 260 261./configure --disable-shared --prefix=/local/med-3.0.0.bin --with-hdf5=/local/hdf5-1.8.2_par.bin/ CC=mpicc LDFLAGS="-lm -lz" CXX=mpiCC \ 262FTLDFLAGS="-L/usr/lib/gcc/x86_64-linux-gnu/4.1.2/ -L/usr/lib/lam/lib" FTLIBS="-lstdc++ -llammpio -llammpi++ -llamf77mpi -lmpi -llam -lutil -ldl" 263pas de wrapper mpif90 264 265- Dans des répertoires distincts 266 267L'exemple suivant permet d'installer les executables, bibilothèques, modules python, tests et documentation dans des répertoires spécifés par l'utilisateur : 268 269../Dev_V3.0b_fayolle/configure --prefix=/tmp/MED1_unused_here --exec-prefix=/tmp/MED1_exec_prefix_for_python --with-f90 --with-hdf5=/local/hdf5-1.8.14.bin --with-swig=/local/swig-2.0.9 --bindir=/tmp/MED1/bin --libdir=/tmp/MED1/lib --includedir=/tmp/MED1/include --docdir=/tmp/MED1/doc --disable-static --enable-installtest 270 271Notez l'option --enable-installtest qui demande explicitement d'installer les tests. 272 2733. Utilitaires 274 275Trois utilitaires sont compiles et installes dans <repertoire cible>/bin. 276Ce sont : 277- mdump (xmdump) : outil de dump d'un fichier MED aux formats V2.3 à V3.2. 278- medimport : traducteur de fichier à partir des versions V2.x vers V3.2. 279- mdeconforme : vérificateur de conformité de fichier. 280 2814. Documentation 282 283Toute la documentation est presente dans le répertoire d'installation 284<repertoire cible>/share/doc/. Il s'agit d'une documentation au format HTML. 285 286 2875. Joindre les correspondants MED 288 289Par e-mail : 290eric.fayolle@edf.fr 291 292