= __FAQ Post-traitements__ = '''[wiki:platform/documentation_2012/indexback 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 SX9 || frontale TX7 mercure || || CCRT || titane || queue mono || || TGCC || curie || curie || || IDRIS || brodie || ulam || || IDRIS || vargas || ulam || {{{ #!comment || CCRT || mercure SX8 || frontale TX7 mercure || || CCRT || platine || cesium || '''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 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 {{{ #!comment * sur cesium, 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. {{{ #!comment 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]] == 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 : [[BR]] On prépare le terrain sur la machine de post-traitement (voir la [wiki:Modipsl_postFAQ#Oùtournentlespost-traitements? 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. [[BR]][[BR]] == Comment surveiller une simulation longue? == Voici un schéma résumant les étapes de surveillance d'une longue simulation de production : [[Image(Prod.png, 360px)]] 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 [[BR]][[BR]] == 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. [[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 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:Modipsl_postFAQ#Commentrelancerlespost-traitements ICI] 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/