Changes between Initial Version and Version 1 of Modipsl_compil


Ignore:
Timestamp:
07/08/11 11:44:56 (13 years ago)
Author:
acosce
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Modipsl_compil

    v1 v1  
     1= Compilation =  
     2[https://forge.ipsl.jussieu.fr/igcmg/wiki/ModipslBeginner1 Retour au sommaire du mode d'emploi] 
     3[[BR]][[BR]] 
     4[[PageOutline]] 
     5 
     6 
     7== FCM == 
     8Certains modèles de l'IPSL utilisent l'outil [http://www.metoffice.gov.uk/research/nwp/external/fcm/ FCM] pour gérer la création de leur makefile (modèle LMDZ, modèle INCA ...).  
     9FCM n'est pas accessible par défaut sur les machines de calcul. Il est disponible sur les machines de l'IDRIS et du CCRT et vous devez l'ajouter à votre PATH : 
     10{{{ 
     11# sur mercure, platine et titane 
     12PATH=~p86ipsl/fcm/bin:$PATH 
     13# sur brodie 
     14PATH=/home/rech/psl/rpsl035/fcm/bin:$PATH 
     15# sur vargas 
     16PATH=/homegpfs/rech/psl/rpsl035/FCM/bin/fcm:$PATH 
     17}}} 
     18[[BR]] 
     19 
     20[[BR]] [[BR]] 
     21== Création du Makefile == 
     22 
     23Avant la première compilation des différents modèles de votre configuration 
     24vous devez créer les makefiles adaptés à la machine sur laquelle vous travaillez.  
     25{{{ 
     26cd modipsl/util 
     27./ins_make 
     28}}} 
     29La commande ins_make permet de créer un makefile pour la config. Dans notre exemple '''modipsl/config/IPSLCM5A/Makefile'''.  
     30Ce Makefile contrôle tous les makefiles des différents modèles utilisés. Une fois qu'il est créé vous n'avez pas besoin de le regénérer (sauf  
     31changement de machine ou d'emplacement de modipsl dans votre architecture).  
     32 
     33 
     34[[BR]][[BR]] 
     35== Lancement de la compilation ==  
     36La commande gmake permet de lancer la compilation depuis le répertoire config/.../ [[BR]] 
     37Par exemple pour IPSLCM5A (résolution par défaut soit ORCA2 et LMDZ 96x95x39) :  
     38{{{ 
     39cd modipsl/config/IPSLCM5A/ 
     40gmake 
     41}}} 
     42 
     43 
     44[[BR]][[BR]] 
     45== Choix de la résolution de compilation ==  
     46Suivant la configuration sur laquelle vous travaillez le Makefile peut vous proposer différentes résolutions. Pour les connaître vous devez  
     47regarder les différentes target (normalement en lettres majuscules) dans le fichier Makefile. Pour IPSLCM5A ce sont les suivantes :  
     48 * ORCA2xLMD4443  
     49 * ORCA2xLMD5655   
     50 * ORCA2xLMD9671 
     51 * ORCA2xLMD9695 
     52 * '''ORCA2xLMD9695-L39'''  
     53 * ORCA2xLMD144142 
     54 * ORCA2xLMD144142-L39 
     55Lorsque vous savez quelle résolution vous désirez vous pouvez alors lancer la compilation :  
     56{{{ 
     57cd modipsl/config/IPSLCM5A/ 
     58gmake resolution_desirée 
     59}}} 
     60par exemple  
     61{{{ 
     62gmake ORCA2xLMD144142-L39  
     63}}} 
     64 
     65Petit truc : A la fin de la compilation le makefile crée un fichier .resol qui contiendra la résolution  
     66de la dernière compilation. Une fois ce fichier créé vous pouvez ensuite relancer les compilations  
     67juste avec la commande '''gmake''' vous n'êtes plus obligé de préciser la résolution.  
     68 
     69 
     70[[BR]][[BR]] 
     71== Options de compilations de LMDZ == 
     72LMDZ propose les options de compilation suivantes :  
     73{{{ 
     74makelmdz_fcm [options] -m arch exec 
     75[-h]                       : manuel abrégé 
     76[-d [[IMx]JMx]LM]          : IM, JM, LM sont les dims en x, y, z (def: $dim) 
     77[-p PHYS]                  : compilation avec la physique libf/phyPHYS, (def: lmd) 
     78[-prod / -dev / -debug]    : compilation en mode production (default) / developpement / debug . 
     79[-c false/MPI1/MPI2]       : couplé océan : MPI1/MPI2/false (def: false) 
     80[-v false/true]            : avec ou sans végétation (def: false) 
     81[-chimie INCA/false]       : avec ou sans model de chimie INCA (def: false) 
     82[-parallel none/mpi/omp/mpi_omp] : parallelisation (default: none) : mpi, openmp ou mixte mpi_openmp 
     83[-g GRI]                   : conf. grille dans dyn3d/GRI_xy.h  (def: reg inclue un zoom) 
     84[-io IO]                   : choix d'une librairie I/O, experts (def: ioipsl) 
     85[-include INCLUDES]        : variables supplementaires pour include 
     86[-cpp CPP_KEY]             : cle cpp supplementaires 
     87[-adjnt]                   : adjoint, a remettre en route ... 
     88[-filtre NOMFILTRE]        : prend le filtre dans libf/NOMFILTRE (def: filtrez) 
     89[-link LINKS]              : liens optionels avec d'autres librairies 
     90[-fcm_path path]           : chemin pour fcm (def: le chemin est suppose deja exister dans le PATH) 
     91 -arch nom_arch            : nom de l'architecture cible 
     92 exec                      : exécutable généré 
     93}}} 
     94Ces options sont utilisées dans le fichier config/IPSLCM5A/Makefile. Notez que par défaut on demande la compilation en mode mpi.  
     95 
     96 
     97[[BR]] [[BR]] 
     98== Spécificité titane == 
     99Pour compiler sur titane, il faut charger explicitement la bonne bibliothèque NetCDF. Faire : 
     100{{{ 
     101module load netcdf/3.6.3 
     102}}} 
     103 
     104Pour compiler le couplé, voir plus loin les détails : 
     105 * il faut supprimer les 2 clés : "key_vectopt_loop key_vectopt_memory"  dans config/IPSLCM5A/AA_make 
     106 * il faut explicitement demander l'utilisation de 5 processeurs pour NEMO. Sinon le message est : 
     107{{{ 
     108xmlf90 ../../../lib/libioipsl.a -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf 
     109/applications/intel/cprof/11.1.056/lib/intel64/libimf.so: warning: warning: feupdateenv is not implemented and will always fail 
     110../../../lib/libopa.a(opa.o): In function `opa_mp_opa_model_': 
     111opa.F90:(.text+0x2a5): relocation truncated to fit: R_X86_64_PC32 against symbol `dom_oce_mp_narea_' defined in COMMON section in ../../../lib/libopa.a(dom_oce.o) 
     112opa.F90:(.text+0x8bb): relocation truncated to fit: R_X86_64_PC32 against symbol `in_out_manager_mp_nprint_' defined in COMMON section in ../../../lib/libopa.a(in_out_manager.o) 
     113... 
     114opa.F90:(.text+0xa4d): additional relocation overflows omitted from the output 
     115gmake[2]: *** [../../../bin/opa] Error 1 
     116}}} 
     117La correction à faire est la suivante :  
     118{{{ 
     119dans modipsl/modeles/NEMO/WORK/par_oce.F90 (lignes 29-31) 
     120      jpni   = 1,                   &  !: number of processors following i 
     121      jpnj   = 5,                   &  !: number of processors following j 
     122      jpnij  = 5                       !: nb of local domain = nb of 
     123processors 
     124 
     125}}} 
     126 
     127 
     128[[BR]] [[BR]] 
     129== Spécificité SX8 == 
     130Pour compiler pour la SX8, il faut explicitement charger netcdf pour SX8. Le plus simple est de se préparer une fonction pour cela, par exemple sx8 : 
     131{{{ 
     132sx8 () {  module load netcdf_sx8 ; export PS1="SX8"' - $PWD : ' ; } 
     133}}} 
     134 
     135 
     136[[BR]] [[BR]] 
     137== Spécificité SX9 == 
     138Pour compiler pour la SX9, il faut vous placer dans l'environnement SX9. Le plus simple est de se préparer une fonction pour cela, par exemple sx9 : 
     139{{{ 
     140sx9 () { module switch SX8 SX9 ; module load netcdf_sx9 ; export PS1="SX9"' - $PWD : ' ; } 
     141}}} 
     142 
     143A noter : si vous recompilez en restant en SX8 alors que tout a été fait en SX9 jusque là, vous aurez le message suivant d'erreur et aucune recompilation ne se fera. 
     144{{{ 
     145**************************************************************** 
     146INFO -  This Makefile is for host type : sx9mercure 
     147INFO -  Host used has type :             sx8mercure 
     148**************************************************************** 
     149ERROR - This Makefile is not compatible whith the host ! 
     150**************************************************************** 
     151Makefile:22: *** .  Stop. 
     152}}} 
     153 
     154Plus d'informations sur la compilation SX9/SX8 : [http://wiki.ipsl.jussieu.fr/Pole/Couple/CCRT/SX9 là (Intranet)] 
     155 
     156 
     157[[BR]] [[BR]] 
     158== A qui signaler quand cela ne marche pas? == 
     159Si il y a un problème de compilation vous pouvez vous adresser au ''model manager''. Il est indiqué lors de la commande  
     160{{{ 
     161 ./model -h IPSLCM5A  
     162}}}