= __FAQ Post-traitements__ = [wiki:ModipslBeginner1 Index]/[wiki:Modipsl_post Post-traitements]/[wiki:Modipsl_postFAQ FAQ Post-traitements] [[PageOutline]] [[BR]][[BR]] == 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 SX8 || frontale TX7 mercure || || CCRT || mercure SX9 || cesium || || CCRT || platine || cesium || || CCRT || titane || cesium || || IDRIS || brodie || ulam || || IDRIS || vargas || ulam || '''Attention''' pour le passage de mercureSX9 (ou mercureSX8) à Cesium il y a une [wiki:Modipsl_post#Post-traitementssurCesium procédure] à suivre. [[BR]][[BR]] == Comment vérifier que les post-traitements sont bien passés? == * sur ulam, les 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 cesium, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation * sur platine et titane, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation On trouvera dans ces répertoires les fichiers de sorties des jobs : rebuild, ts, se, atlas. Sur cesium 2 fichiers standard error (.e) et standard output (.o) par job. A noter : Les commandes de mise sur dods sont faites à la fin du job de monitoring ou à la fin de chaque atlas. [[BR]][[BR]] == Comment relancer les rebuild? == Pour relancer à partir des 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. Paramètres à modifier : {{{ libIGCM=${libIGCM:=/path/to/your/libIGCM} 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 : ''' 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). [[BR]][[BR]] == 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, en prenant soin de la mettre avec les variables similaires : 2D ou 3D. [[BR]][[BR]] == Comment superposer des courbes de monitoring ? == [http://dods.ipsl.jussieu.fr/brocksce/screencast/InterMonitoring.html Audio] [[BR]] 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. [[BR]][[BR]] == 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 [http://forge.ipsl.jussieu.fr/igcmg/browser/CONFIG/IPSLCM/IPSLCM5A/EXP00/POST 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]" }}} [[BR]][[BR]] == Comment relancer les post-traitements ? == Les différentes étapes 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 depuis la machine sur laquelle la simulation a tourné : {{{ cd $HOME; mkdir -p POST/ST11 ; cd POST/ST11 }}} * On recopie les cartes caractérisant les composantes (depuis le répertoire ou la simulation a été lancée) {{{ cp -r $PATH_MODIPSL/ST11/config/IPSLCM5A/ST11/COMP . }}} * On recopie les post-traitements spécifiques à la configuration (depuis le répertoire ou la simulation a été lancée) {{{ cp -r $PATH_MODIPSL/ST11/config/IPSLCM5A/ST11/POST . }}} * On recopie les cartes spécifiques (config.card et run.card) à la simulation (depuis le répertoire où la simulation a été lancée) {{{ cp -r $PATH_MODIPSL/ST11/config/IPSLCM5A/ST11/config.card . cp -r $PATH_MODIPSL/ST11/config/IPSLCM5A/ST11/run.card . }}} * On recopie les jobs de post-traitement à soumettre : {{{ cp $PATH_MODIPSL/ST11/libIGCM/rebuild_fromArchive.job . cp $PATH_MODIPSL/ST11/libIGCM/create_ts.job . cp $PATH_MODIPSL/ST11/libIGCM/create_se.job . }}} ou bien si on est dans le cas !RebuildFromArchive=NONE {{{ cp $PATH_MODIPSL/ST11/libIGCM/rebuild_fromWorkdir.job . cp $PATH_MODIPSL/ST11/libIGCM/create_ts.job . cp $PATH_MODIPSL/ST11/libIGCM/create_se.job . }}} * Maintenant on peut se connecter à la machine de post-traitement Cesium. Comme les $HOME sont communs à toutes les machines, les copies que l'on vient de faire y sont visibles. * On adapte les jobs à soumettre en modifiant certaines variables : Dans tous les jobs à lancer (rebuild_fromArchive.job, create_ts.job et create_se.job), il faut modifier : {{{ StandAlone=true libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l'expérience }}} Dans rebuild_fromArchive.job, il faut modifier : {{{ 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 }}} ou bien si on est dans le cas !RebuildFromArchive=NONE il faut modifier le rebuild_fromWorkdir.job : {{{ 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=mercure # ou bien titane libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l'expérience libIGCM_SX = # POinte vers le répertoire libIGCM utilisé sur la machine MASTER }}} Dans create_ts.job, il faut modifier : {{{ 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 : {{{ PeriodDateEnd=20191230 # date de fin de la décennie a traiter }}} * Lancement des jobs de post-traitement : {{{ ccc_msub rebuild_fromArchive.job ccc_msub create_ts.job ccc_msub create_se.job }}} 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 }}} '''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). [[BR]][[BR]] == 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 }}} [[BR]][[BR]] == 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à : [http://dods.extra.cea.fr/data/p86caub/IPSLCM5A/PROD/piControl/piControl2/ATLAS/SE_2000_2099/ SE 2000 2099] 1. si ce n'est déjà fait, installer un répertoire spécial post-traitement. Voir [wiki:ModipslBeginner#Commentrelancerlespost-traitementsdepuislamachinedepost-traitement] 1. recopier create_se.job, SE_checker.job et create_multi_se.job 1. vérifier/modifier dans create_se.job les variables : {{{ libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM} }}} 1. vérifier que les décennies sont toutes présentes. 1. 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}} }}} 1. 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 ... }}} 1. attendre la fin des jobs create_se 1. recopier create_multi_se.job 1. !Vérifier/Modifier les variables : {{{ libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM} }}} 1. 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 }}} 1. lancer le job create_multi_se.job : ccc_msub create_multi_se.job 1. 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/