wiki:Modipsl_postFAQ

Version 15 (modified by acosce, 12 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

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 prévoir de refaire aussi tous les post-traitements :

  • Sur la frontale, une fois pour toutes les simulations :
    • Installer un répertoire dédié
    • Récupérer libIGCM et faire ins_job
  • Sur la frontale, pour chaque simulation :
    • Installer un répertoire pour la simulation concernée.
  • Pour refaire des rebuild :
    • Aller chercher le fichier libIGCM/rebuild_fromArchive.job (IDRIS) ou rebuild_fromWorkdir.job (CCRT)
    • Modifier le fichier rebuild_from*.job : Mêmes paramètres que la méthode simple.
    • Soumettre rebuild_from*.job. Note il soumet automatiquement pack_output.job
  • Pour refaire les pack_restart et pack_debug :
    • Aller chercher les fichiers libIGCM/pack_debug.job et libIGCM/pack_restart.job
    • Modifier les fichiers pack_*job : Même paramètres que la méthode simple
    • Soumettre les deux jobs de pack.
  • Pour refaire des TS :
    • Rapatrier config.card, COMP et POST depuis la machine de calcul
    • Rapatrier éventuellement run.card si on veut faire des post-traitements sur une partie de la simulation seulement
    • Aller chercher le fichier libIGCM/!TimeSeries_Checker.job
    • Modifier le fichier !TimeSeries_Checker.job
    • Le lancer en interactif, c'est lui qui lancera tout seul les jobs create_ts manquants.
    • Astuce : garder la sortie de cela :
      ./TimesSeries_Checker.job 2>&1 | tee TSC_OUT_POUR_VERIF
      

* Pour refaire des SE :

  • Si ce n'est déjà fait, rapatrier config.card, COMP et POST depuis la machine de calcul
  • Aller chercher le fichier libIGCM/SE_Checker.job
  • Modifier le fichier SE_Checker.job
  • Le lancer en interactif, c'est lui qui lancera tout seul les jobs create_se manquants.
  • Astuce : garder la sortie de cela :
    ./SE_Checker.job 2>&1 | tee SE_OUT_POUR_VERIF
    



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



En détail : Comment relancer les différents post-traitements ?

Note : Si tous vos rebuilds sont complets et qu'il ne vous manque que des TimeSeries nous vous conseillons fortement d'utiliser le script TimeSeries_Checker

Voici en détail les différentes étapes pour relancer les post-traitements d'une simulation sur un exemple (la simulation couplée ST11 de la configuration IPSLCM5A a tourné sur la machine SX9 mercure du CCRT et ses post-traitements sont effectués sur la machine cesium du CCRT).

  • 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
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)

  • On recopie les jobs de post-traitement à soumettre :
    cp $PATH_MODIPSL/libIGCM/rebuild_fromArchive.job .
    cp $PATH_MODIPSL/libIGCM/pack_output.job . 
    cp $PATH_MODIPSL/libIGCM/pack_debug.job . 
    cp $PATH_MODIPSL/libIGCM/pack_restart.job . 
    cp $PATH_MODIPSL/libIGCM/create_ts.job .
    cp $PATH_MODIPSL/libIGCM/create_se.job .
    

ou bien si on est dans le cas RebuildFromArchive=NONE

cp $PATH_MODIPSL/libIGCM/rebuild_fromWorkdir.job .
cp $PATH_MODIPSL/libIGCM/pack_output.job . 
cp $PATH_MODIPSL/libIGCM/pack_debug.job . 
cp $PATH_MODIPSL/libIGCM/pack_restart.job . 
cp $PATH_MODIPSL/libIGCM/create_ts.job .
cp $PATH_MODIPSL/ibIGCM/create_se.job .
  • On adapte les jobs à soumettre en modifiant certaines variables :

Dans rebuild_fromArchive.job (ou rebuild_fromWorkdir.job), il faut modifier :

StandAlone=true
libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l'expérience. 

PeriodDateBegin=20191201 # Date de fin de la série à rebuilder
NbRebuildDir=12 # Nombre de repertoires de la série à rebuilder jusqu'à la  PeriodDateBegin 
config_UserChoices_JobName=ST11
R_SAVE=${DMFDIR}/IGCM_OUT/IPSLCM5A/DEVT/pdControl/${config_UserChoices_JobName}
REBUILD_DIR=${R_SAVE}/TMP
MASTER=${MASTER:=mercure|titane|brodie|vargas} # selectionner la machine de calcul : MASTER=titane par exemple

Dans pack_*.job , il faut modifier et renseigner les champs suivants :

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
	

Dans create_ts.job, il faut modifier :

StandAlone=true
libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l'expérience. 

PeriodDateEnd=20191230 # date de fin des time-series a créer
CompletedFlag=20091230 # date de fin des times-series déjà existantes (si tel est le cas)
TsTask=2D  # 2D or 3D
RebuildFrequency=true

Dans create_se.job, il faut modifier :

StandAlone=true
libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l'expérience. 

PeriodDateEnd=20191230 # date de fin de la décennie a traiter
  • Lancement des jobs de post-traitement :
ccc_msub rebuild_fromArchive.job (ou llsubmit rebuild_fromArchive.job à l'IDRIS) 
ccc_msub create_ts.job (ou llsubmit create_ts.job à l'IDRIS) 
ccc_msub create_se.job (ou llsubmit create_se.job à l'IDRIS)  

ou bien si on est dans le cas RebuildFromArchive=NONE

ccc_msub rebuild_fromWorkdir.job
ccc_msub create_ts.job
ccc_msub create_se.job
  • 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
  • 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)



Méthode simple pour relancer le rebuild depuis la machine de calcul CCRT

Pour relancer les rebuild, il faut aller sur la frontale, dans le répertoire modipsl/libIGCM (l'original ou celui synchronisé dans ~MIRROR/xxxxxx/modipsl/libIGCM), modifier le job : rebuild_fromArchive.job en précisant les paramètres, le lancer sur la frontale. llsubmit sur ulam, ccc_msub sur cesium et titane. Paramètres à modifier :

libIGCM=${libIGCM:=/path/to/your/libIGCM}
MASTER=${MASTER:=mercure|titane|brodie|vargas} # selectionner la machine de calcul : MASTER=titane par exemple
REBUILD_DIR=${REBUILD_DIR:=/path/to/your/TMP/REBUILD/FILES}
NbRebuildDir=${NbRebuildDir:=12}
PeriodDateBegin=${PeriodDateBegin:=18901201}
config_UserChoices_JobName=${config_UserChoices_JobName:=name_of_the_job}
R_SAVE=${R_SAVE:=/path/to/your/ARCHIVE/FILES}
  • Attention : vérifier également que vous appartenez bien au groupe de soumission au CCRT (par défaut gen2211) sinon modifier la ligne correspondante (en la commentant pour utiliser des heures dsm ou en changeant le groupe genci)



Comment utiliser !TimeSeries_Checker.job?

!TimeSeries_Checker.job est un script (qui se lance en interactif) qui vérifie les Séries temporelles (TS) existantes et relance les jobs create_TS nécessaires pour reconstruire les TS manquantes. C'est donc un utilitaire de post-traitement qui se lance depuis la machine de post-traitement. Voir question précédente.

Les différentes étapes sur un exemple (la simulation couplée MYEXP de la configuration IPSLCM5A a tourné sur la machine SX9 mercure du CCRT et ses post-traitements sont effectués sur la machine cesium du CCRT).

  • On se met sur la machine cesium et on prépare le terrain (voir question précédente) :
    Cesium > cd $WORKDIR; mkdir -p POST/MYEXP ; cd POST/MYEXP
    
  • On recopie les cartes caractérisant les composantes (depuis le répertoire ou la simulation a été lancée). Voir aussi question précédente.
    Cesium> scp -pr mercure:... MYEXP/COMP .
    Cesium> scp -pr mercure:... MYEXP/POST .
    Cesium> scp -r mercure:... MYEXP/config.card .
    
  • On recopie les jobs de post-traitement à soumettre :
    Cesium> scp mercure:.../libIGCM/create_ts.job .
    Cesium> scp mercure:.../libIGCM/TimeSeries_Checker.job .
    
  • On adapte !TimeSeries_Checker.job en modifiant certaines variables :
    libIGCM=${libIGCM:=...MYEXP/modipsl/libIGCM} ==> libIGCM sur cesium!!!!
    SpaceName=${SpaceName:=DEVT}
    ExperimentName=${ExperimentName:=pdControl}
    JobName=${JobName:=MYEXP}
    CARD_DIR=${CARD_DIR:=${CURRENT_DIR}}
    
  • Lancement de !TimeSeries_Checker.job :
cesium> ./TimeSeries_Checker.job

ou mieux encore , en ksh :

cesium> ./TimeSeries_Checker.job 2>&1 | tee TSC_OUT   =====> en ksh pour garder la trace dans un fichier
cesium> grep Batch TSC_OUT   =====> pour repérer l'ensemble des jobs lancés



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