wiki:Modipsl_postFAQ

Version 23 (modified by acosce, 10 years ago) (diff)

--

FAQ Post-traitements

Index?/Post-traitements/FAQ Post-traitements



Où tournent les post-traitements?

Les post-traitements tournent généralement sur les frontales des calculateurs. Il s'agit de travaux systématiques de traitement de fichiers qui n'ont pas leur place sur les calculateurs. Peu d'optimisation, peu de parallélisation massive, ... Sur chaque centre, les machines de calcul ont leur frontale privilégiée.

Centre Calculateur Frontale
CCRT mercure SX9 frontale TX7 mercure
CCRT titane queue mono
TGCC curie curie
IDRIS brodie ulam
IDRIS vargas ulam



Comment vérifier que les post-traitements sont bien passés?

  • sur ulam, les journaux de sorties des post-traitements sont là : $WORKDIR/IGCM_OUT/IPSLCM5A/Ma_simulation
  • sur la frontale TX7, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation
  • sur titane, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation/Out/

On trouvera dans ces répertoires les fichiers de sorties des jobs : rebuild, pack*, ts, se, atlas.

A noter : Les commandes de mise sur dods sont faites à la fin du job de monitoring ou à la fin de chaque atlas.



Méthode complète pour relancer tous les post-traitements IDRIS et CCRT

Au CCRT ou à l'IDRIS, méthode complète permettant de refaire tous les post-traitements :

On prépare le terrain sur la machine de post-traitement (voir la liste). Deux cas sont possibles:

  • la machine de post-traitement est la machine de calcul : on travaillera dans le répertoire d'expérience (ex: PATH_MODIPSL/config/IPSLCM5A/ST11/)
  • la machine de post-traitement n'est pas la machine de calcul : il faut importer (scp pour l'IDRIS ou passage par le CSCRATCH ou le HOME pour le CCRT) le répertoire d'expérience et libIGCM
    • Installer un répertoire dédié (une fois pour toutes les simulations)
    • Récupérer libIGCM et faire ins_job (une fois pour toutes les simulations)
    • Installer un répertoire pour la simulation concernée. (pour chaque simulation)
      mkdir -p POST
      cd POST/
      copie de $PATH_MODIPSL/config/IPSLCM5A/ST11 . 
      
  • Attention sur Ulam : le répertoire POST doit être sur le WORKDIR et non pas sur le HOME (problèmes de quota)
  • Attention : avant de lancer le job vérifiez que son entête correspond bien à la frontale sur laquelle vous travaillez (en particulier si vous le lancer sur une autre frontale que celle de votre machine de calcul). Pour cela comparez l'entête de votre job et celle qui est indiquée dans libIGM/AA_rebuild_fromWorkdir (ou autre).
  • Attention au CCRT : avant de soumettre votre job vous devez ajouter le groupe de soumission dans l'entête du job. (genci ou dsm)

REBUILD et Pack_output

  • Copier dans POST/ (ou dans le répertoire d'expérience)
    • à l'IDRIS ou si RebuildFromArchive=yes dans config.card : le fichier libIGCM/rebuild_fromArchive.job
    • au CCRT/TGCC RebuildFromArchive=NONE dans config.card : le fichier rebuild_fromWorkdir.job
  • Modifier le fichier rebuild_from*.job
    StandAlone=true
    
    libIGCM=                --> Pointe vers le répertoire libIGCM de l'expérience. 
    
    PeriodDateBegin=        --> Date de fin de la série à rebuilder
    
    NbRebuildDir=           --> Nombre de repertoires de la série à rebuilder jusqu'à la  PeriodDateBegin 
    
    config_UserChoices_JobName=       --> JobName de la simulation dont sont issus les fichiers à reconstruire
    
    R_SAVE=                           --> Path de sauvegarde des sorties de la simulation (de type $CCCSTOREDIR/IGCM_OUT/TagName/SpaceName/ExperimentName/JobName/) 
    
    REBUILD_DIR=                      --> Path de sauvegarde des fichiers en attente de reconstruction (de type $SCRATCHDIR/REBUILD/TagName/JobName/ si RebuildFromArchive=NONE) 
    
    MASTER=${MASTER:=mercure|titane|brodie|vargas}   --> selectionner la machine de calcul : MASTER=titane par exemple
    
  • Soumettre rebuild_from*.job. Note il soumet automatiquement pack_output.job
    ccc_msub rebuild_from*.job (CCRT) 
    llsubmit rebuild_from*job (IDRIS) 
    
  • Pour soumettre le Pack_output (dans le cas où le job de rebuild ne l'a pas soumis).
    • Copier dans POST (ou dans le répertoire d'expérience) le fichier libIGCM/pack_output.job
    • Modifier le fichier pack_output.job :
      libIGCM=${libIGCM:=::modipsl::/libIGCM}         --> path de la librairie libIGCM
      
      MASTER=${MASTER:=mercure|titane|brodie|vargas}  --> machine sur laquelle on travaille
      
      DateBegin=${DateBegin:=20000101}                --> date de début de la période à packer
      	
      DateEnd=${DateEnd:=20691231}                    --> date de fin de la période à packer
      	
      PeriodPack=${PeriodPack:=10Y}                   --> Fréquence de pack
      
    • Soumettre le job de pack.

Pack_restart et Pack_debug

  • Copier dans POST (ou dans le répertoire d'expérience) les fichiers libIGCM/pack_debug.job et libIGCM/pack_restart.job
  • Modifier les fichiers pack_*job :
    libIGCM=${libIGCM:=::modipsl::/libIGCM}         --> path de la librairie libIGCM
    
    MASTER=${MASTER:=mercure|titane|brodie|vargas}  --> machine sur laquelle on travaille
    
    DateBegin=${DateBegin:=20000101}                --> date de début de la période à packer
    	
    DateEnd=${DateEnd:=20691231}                    --> date de fin de la période à packer
    	
    PeriodPack=${PeriodPack:=10Y}                   --> Fréquence de pack
    
  • Soumettre les deux jobs de pack.

Pour refaire des TS

  • Si ce n'est pas déjà fait : rapatrier dans le répertoire POST/ :
    • les fichiers et répertoires config.card, COMP et POST depuis la machine de calcul
    • éventuellement run.card si on veut faire des post-traitements sur une partie de la simulation seulement

Il y a deux méthodes :

!TimeSeries_checker.job - Méthode conseillée

  • Copier dans le répertoire POST/ (ou le répertoire d'expérience) le fichier libIGCM/!TimeSeries_Checker.job
  • Modifier le fichier !TimeSeries_Checker.job
    libIGCM=${libIGCM:=...MYEXP/modipsl/libIGCM} --> Path de la librairie libIGCM
    
    SpaceName=${SpaceName:=DEVT}                 
    
    ExperimentName=${ExperimentName:=pdControl}
    
    JobName=${JobName:=MYEXP}
    
    CARD_DIR=${CARD_DIR:=${CURRENT_DIR}}        --> Path du répertoire d'expérience (donc CURRENT_DIR si l'on a bien copié TimeSeries_Checker.job 
    
    # project 
    export BRIDGE_MSUB_PROJECT=gen2211          --> numero de votre projet genci 
    
    
  • Lancement de !TimeSeries_Checker.job en interactif, c'est lui qui lancera tout seul les jobs create_ts manquants. :
    ./TimeSeries_Checker.job
    

ou mieux encore , en ksh :

./TimeSeries_Checker.job 2>&1 | tee TSC_OUT   =====> en ksh pour garder la trace dans un fichier
grep Batch TSC_OUT   =====> pour repérer l'ensemble des jobs lancés
  • Note : si vous avez des TS 2D et 3D il faut relancer deux fois les jobs create_ts en modifiant la variable TsTask? entre les deux

create_ts.job

  • Copier dans le répertoire POST/ (ou le répertoire d'expérience) le fichier libIGCM/create_ts.job
  • Modifier le fichier create_ts.job :
    StandAlone=true
    
    libIGCM=           --> Patch de la librairie libIGCM utilisée
    
    PeriodDateEnd      --> date de fin des time-series a créer
    
    CompletedFlag      --> date de fin des times-series déjà existantes (si tel est le cas)
    
    TsTask=2D          --> choix entre 2D ou 3D
    
    RebuildFrequency=true
    
  • soumettre ce job.

Pour refaire des SE

  • Si ce n'est pas déjà fait : rapatrier dans le répertoire POST/ :
    • les fichiers et répertoires config.card, COMP et POST depuis la machine de calcul

Il y a deux méthodes :

SE_Checker.job (méthode conseillée)

  • Copier dans le répertoire POST/ (ou le répertoire d'expérience) le fichier libIGCM/SE_Checker.job
  • Modifier le fichier SE_Checker.job
  • lancer SE_checker.job en interactif, c'est lui qui lancera tout seul les jobs create_se manquants.
  • Astuce : garder la sortie ainsi :
    ./SE_Checker.job 2>&1 | tee SE_OUT_POUR_VERIF
    

create_se.job

  • Copier dans le répertoire POST/ (ou le répertoire d'expérience) le fichier libIGCM/create_se.job
  • Modifier le fichier create_se.job
    StandAlone=true
    
    libIGCM=          --> path de la librairie libIGCM utilisée
    
    PeriodDateEnd=    --> date de fin de la décennie a traiter
    
  • soumettre le job.



Comment surveiller une simulation longue?

Voici un schéma résumant les étapes de surveillance d'une longue simulation de production :

Les outils à utiliser sont en général accessibles dans le répertoire modipsl/libIGCM, sauf check_expe_files_size.sh qui est dans libIGCM/libIGCM_post



Comment utiliser !TimeSeries_Checker.job pour créér des fichiers sur STORE alors que les fichiers Output sont sur DMNFS?

Rappel rapide :

  • Avoir libIGCM v1_12 pour utiliser DMNFS en entrée
  • Modifier !TimeSeries_Checker.job pour utiliser STORE
  • Modifier create_ts.job pour utiliser STORE

Exemple sur simulation rcp45


TimeSeries_Checker.job révision 658

ligne 169
#R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName}

R_SAVE=${CCCSTOREDIR}/IGCM_OUT/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName}

create_ts.job révision 316

ligne 300
#DIRECTORY=${R_SAVE}/${comp}/Analyse/${TS_Dir}
DIRECTORY=${CCCSTOREDIR}/IGCM_OUT/IPSLCM5A/PROD/rcp45/v3.rcp45.strat/${comp}/Analyse/${TS_Dir}

ligne 768
#eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}}/Analyse/${TS_Dir}/${file_out}
IGCM_sys_Put_Out ${file_out} ${CCCSTOREDIR}/IGCM_OUT/IPSLCM5A/PROD/rcp45/v3.rcp45.strat/${comp}/Analyse/${TS_Dir}/${file_out}

ligne 780
#eval IGCM_sys_Put_Out ${file_out_YE} \${R_OUT_${comp}}/Analyse/TS_MO_YE/${file_out_YE}
IGCM_sys_Put_Out ${file_out_YE} ${CCCSTOREDIR}/IGCM_OUT/IPSLCM5A/PROD/rcp45/v3.rcp45.strat/${comp}/Analyse/TS_MO_YE/${file_out_YE}

Comment ajouter une variable dans les Time Series?

Pour ajouter une nouvelle Time Serie il suffit d'ajouter son nom à la série de variables existantes dans le fichier COMP/composante.card, en prenant soin de la mettre avec les variables similaires : 2D ou 3D.



Comment superposer des courbes de monitoring ?

Audio
Mémo :

Aller sur :
http://webservices.ipsl.jussieu.fr/monitoring/

Rentrer dans l'onglet 1 :
http://dods.extra.cea.fr/cgi-bin/nph-dods/data/p86cadul/OL2
Pousser "List directories".
Pour ajouter des simulations à l'IDRIS, retourner sur l'onglet 1
Rentrer : http://dods.idris.fr/cgi-bin/nph-dods/rpsl003/IPSLCM5A/DEVT/pdControl
Puis Pousser "Append dircetories" pour avoir sur l'onglet suivant les simulations CCRT et IDRIS.
Dans l'onglet 2, sélectionner les simus : 27, 29, 30 et 33 (shift click ou control click pour en choisir plusieurs)
Puis Pousser "search files".
Dans l'onglet 3, choisir une variable (SBG_BIOMASS) puis pousser sur "Validate" 
puis "Validate" dans l'onglet 4 et "Prepare and Run the ferret script".
Ensuite , apparait une page appelée
"http://webservices.ipsl.jussieu.fr/monitoring/script.php" avec un joli
multi-monitoring sur la biomasse
cliquer sur "Run script on server" pour lancer toutes les figures.
Dans l'aide 'Help' est décrite la manip pour enregistrer le script ferret et
le faire tourner en local (ça fonctionne bien).

Amusez-vous bien !

Pour sélectionner des simus sur les 2 centres, il faut revenir à l'étape 1 et appuyer sur append directories pour les ajouter.



Comment ajouter une figure dans les monitoring?

Les monitoring sont paramétrés là: ~compte_commun/atlas/ Par exemple pour LMDZ : monitoring01_lmdz_LMD9695.cfg

Il est possible de modifier un monitoring en créant un répertoire POST locale à la configuration, en recopiant un fichier .cfg et en le modifant à sa convenance. Il y a 2 exemples dans le couplé. Voir post-traitements spécifiques

Attention : pour faire une opération entre deux variables il faut impérativement la délimiter avec des parenthèses :

#-----------------------------------------------------------------------------------------------------------------
#  field | files patterns | files additionnal | operations | title | units | calcul of area
#-----------------------------------------------------------------------------------------------------------------
 nettop_global | "tops topl"                  | LMDZ4.0_9695_grid.nc | "(tops[d=1]-topl[d=2])" | "TOA. total heat flux (GLOBAL)"         | "W/m^2"     | "aire[d=3]" 



Comment faire une moyenne saisonnière sur 100 ans?

Ceci est possible depuis libIGCM_v1_10 cad depuis le 13/12/2010.

Comment faire une moyenne saisonnière sur 100 ans? Le job create_multi_se est là pour ça. Il faut le lancer sur le serveur de post-traitement après avoir vérifié que les différentes décennies étaient présentes sur le serveur de fichiers (SE_checker).

Notez que l'atlas de ces 100 ans sera également créé. Voir exemple de l'atlas de 100 ans de piControl2 là : SE 2000 2099

  1. si ce n'est déjà fait, installer un répertoire spécial post-traitement. Voir ICI
  2. recopier create_se.job, SE_checker.job et create_multi_se.job
  3. vérifier/modifier dans create_se.job les variables :
    libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM}
    
  4. vérifier que les décennies sont toutes présentes.
  5. vérifier/modifier les variables dans SE_checker.job:
    libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM} 
    SpaceName=${SpaceName:=PROD}
    ExperimentName=${ExperimentName:=piControl}
    JobName=${JobName:=piControlMR1}
    CARD_DIR=${CARD_DIR:=${CURRENT_DIR}}
    
  6. lancer en interactif : ./SE_checker.job la vérification. Les jobs create_se.job nécessaires seront lancés. Exemple :
     ./SE_Checker.job
    
    ====================================================
    Where do we run ? cesium21
    Linux cesium21 2.6.18-194.11.4.el5 #1 SMP Tue Sep 21 05:04:09 EDT 2010 x86_64
    ====================================================
    
    sys source cesium Intel X-64 lib.
    
    --Debug1--> DefineVariableFromOption : config_UserChoices
    --------------Debug3--> config_UserChoices_JobName=piControlMR1
    --------------Debug3--> config_UserChoices_CalendarType=noleap
    --------------Debug3--> config_UserChoices_DateBegin=1800-01-01
    --------------Debug3--> config_UserChoices_DateEnd=2099-12-31
    
    --Debug1--> DateBegin/End for SE : 1800_1809
    --Debug1--> ATM
    --Debug1--> SRF
    --Debug1--> SBG
    --Debug1--> OCE
    --Debug1--> ICE
    --Debug1--> MBG
    --Debug1--> CPL
    ...
    --Debug1--> DateBegin/End for SE : 2030_2039
    --Debug1--> ATM
    --Debug1--> 2 file(s) missing for ATM :
    --Debug1--> piControlMR1_SE_2030_2039_1M_histmth.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_histmthNMC.nc
    --Debug1--> SRF
    --Debug1--> 1 file(s) missing for SRF :
    --Debug1--> piControlMR1_SE_2030_2039_1M_sechiba_history.nc
    --Debug1--> SBG
    --Debug1--> 2 file(s) missing for SBG :
    --Debug1--> piControlMR1_SE_2030_2039_1M_stomate_history.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_stomate_ipcc_history.nc
    --Debug1--> OCE
    --Debug1--> 4 file(s) missing for OCE :
    --Debug1--> piControlMR1_SE_2030_2039_1M_grid_T.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_grid_U.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_grid_V.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_grid_W.nc
    --Debug1--> ICE
    --Debug1--> 1 file(s) missing for ICE :
    --Debug1--> piControlMR1_SE_2030_2039_1M_icemod.nc
    --Debug1--> MBG
    --Debug1--> 3 file(s) missing for MBG :
    --Debug1--> piControlMR1_SE_2030_2039_1M_ptrc_T.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_diad_T.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_dbio_T.nc
    --Debug1--> CPL
    --Debug1--> 2 file(s) missing for CPL :
    --Debug1--> piControlMR1_SE_2030_2039_1M_cpl_atm.nc
    --Debug1--> piControlMR1_SE_2030_2039_1M_cpl_oce.nc
    --------Debug2--> Submit create_se  for period 2030-2039
    IGCM_sys_MkdirWork : .../POST_CMIP5/piControl/piControlMR1/OutScript
    IGCM_sys_QsubPost : create_se
    Submitted Batch Session 179472
    ...
    
  7. attendre la fin des jobs create_se
  8. recopier create_multi_se.job
  9. Vérifier/Modifier les variables :
    libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM}
    
  10. si besoin, paramétrer le nombre de décennies dans config.card. 50Y ou 50 ans par défaut. Ajouter cette ligne dans la section POST cad à la fin après le mot-clé [POST]
    MultiSeasonalFrequency=100Y
    
  11. lancer le job create_multi_se.job : ccc_msub create_multi_se.job
  12. Les années prises en compte seront les dernières cad celles entre DateEnd (pris dans config.card du répertoire local) et DateEnd - MultiSaesonalFrequency.

Les moyennes sont stockées dans les répertoires Analyse des différentes composantes dans les sous-répertoires SE_100Y. Par exemple : ATM/Analyse/SE_100Y/

Attachments (1)

Download all attachments as: .zip