Problèmes connus à l'installation

  • Impossible de compiler avec OpenMP sur Brodie (SX8 de l'IDRIS). En compilant le GCM en mode OpenMP (seul ou en mode mixte MPI/OpenMP), la compilation échoue lors de la compilation de la routine physiq avec le message d'erreur suivant :
    f90 fatal: Limitation : memory could not allocate.
    sxf90 fatal : /SX/usr/lib/f90com command error : 1
    Au cours de la compilation, le compilateur à besoin d'espace ou générer des éléments intermédiaires. L'espace et la mémoire disponibles sont (dans une certaine mesure) ceux de l'utilisateur et sont limités (faire la commande ulimit -a pour connaître certaines de ces limites). Par exemple sur Brodie (la SX8 de l'IDRIS) :
    $ ulimit -a
    core file size (blocks, -c) 0
    data seg size (kbytes, -d) unlimited
    file size (blocks, -f) 20971520
    max locked memory (kbytes, -l) 8192
    max memory size (kbytes, -m) unlimited
    open files (-n) 1024
    pipe size (512 bytes, -p) 8
    stack size (kbytes, -s) 8192
    cpu time (seconds, -t) 3600
    max user processes (-u) 200
    virtual memory (kbytes, -v) 1048576
    Cette mémoire virtuelle est trop faible pour permettre la compilation (en mode OpenMP) de la (grosse) routine physiq. Heureusement, l'utilisateur peut (dans une certaine mesure) agir sur ces limites, et augmenter la mémoire virtuelle, par exemple comme suit :
    ulimit -v 2000000
    Ce qui permet de régler le problème.
  • Avec l'option -arch linux-32bit de makelmdz_fcm, si vous obtenez de nombreux messages du type :
    PGF90-S-0450-Argument number 4 to ymds2ju: kind mismatch
    (linux-32bit_96x72x19_t4_phylmd_seq/.config/ppsrc/dyn/bilan_dyn.f:
    354)
    IOIPSL a certainement été compilé avec l'option -r8 (c'est l'option par défaut sur Linux). Ajoutez cette option à la ligne %BASE_FFLAGS de arch-linux-32bit.fcm. Vous devez alors aussi ajouter la macro-constante NC_DOUBLE à la ligne %FPP_DEF.
  • Avec l'option -arch linux-32bit de makelmdz_fcm, si vous obtenez de nombreux messages du type :
    /usr/lib/libc.a(iofclose.o):(.eh_frame+0x11): undefined reference to
    `__gcc_personality_v0'
    Supprimez l'option -Wl,-Bstatic à la ligne %LD_FLAGS de arch-linux-32bit.fcm.
  • Avec l'option -arch linux-32bit de makelmdz_fcm, si vous obtenez de nombreux messages du type :
    PGF90-S-0069-Illegal implied DO expression
    (linux-32bit_32x24x9_phylmd_seq/.config/ppsrc/phys/regr_lat_time_climoz_m.f90:
    119)
    Vous avez certainement une vieille version du compilateur pgf90, la version 6 ou une version encore antérieure. C'est un bogue de cette version du compilateur, corrigé dans les versions plus récentes.
  • Si vous obtenez les messages d'erreur suivants au début de l'exécution de makelmdz_fcm :
    ERROR: bld.cfg: LINE 44:
    dir::lib: label not recognised.
    ERROR: bld.cfg: LINE 45:
    dir::bin: label not recognised.
    Vous avez certainement installé la version 1.3 de FCM ou une version plus récente. Installez la version 1.2.
  • Si, avec le compilateur PGI Fortran, vous obtenez à la compilation un message du type :
    Lowering Error: unexpected data type at load
    [ast=0,asttype=0,datatype=0]
    Lowering Error: unknown source type for conversion to integer
    [ast=4,asttype=1,datatype=0]
    PGF90-F-0000-Internal compiler error. Errors in Lowering 6
    (libo/AMD64_CICLAD_64x44x40_phylmd_seq/.config/ppsrc/phys/regr_lat_time_climoz_m.f90: 330)
    PGF90/x86-64 Linux 7.1-6: compilation aborted
    Il s'agit probablement d'un bogue du compilateur, corrigé à partir de la version 9.0.4. (Nous n'avons pas encore cette version du compilateur.)
  • Sous Mac OS X, avec les options -arch gfortran -parallel omp de makelmdz_fcm, si vous obtenez de nombreux messages du type :
    Undefined symbols:
    "___emutls_get_address", referenced from:
    ...
    ld: symbol(s) not found
    c'est un problème connu de compilation en OpenMP avec gcc sous Mac OS X, indépendant de LMDZ. Ce problème apparaît dès qu'on utilise par exemple la directive threadprivate. Il n'y a pas de solution simple actuellement à ce problème. (Sachez que l'installation et l'exécution fonctionnent normalement en séquentiel.)