= __Exécution d'une simulation__ = [https://forge.ipsl.jussieu.fr/igcmg/wiki/ModipslBeginner1 Retour au sommaire du mode d'emploi] [[BR]][[BR]] [[PageOutline]] '''NOTE''' avant la première simulation veillez à créer le fichier ~/.forward contenant votre adresse mail, pour que les mails envoyés en fin de simulation soient bien redirigés vers votre boîte mail. [[BR]] == Présentation du répertoire d'expérience == Dans le répertoire de configuration '''modipsl/config/nom_config''' (ex : '''modipsl/config/IPSLCM5A/''') vous trouverez 1 sous répertoire de type EXP00 [[BR]] Ce répertoire contient les fichiers nécessaires pour lancer une simulation : - un fichier config.card - un répertoire COMP/ - un répertoire PARAM/ - un répertoire POST/ * Le fichier config.card contient la fiche d'identité de votre simulation (nom - dates de début et de fin - calendrier ...). Il contient également les options de démarrage : démarrage depuis les états initiaux (par défaut) ou redémarrage depuis une simulation (à soi ou non).[[BR]] * Le répertoire PARAM/ contient les fichiers de paramètres nécessaires aux modèles[[BR]] * Le répertoire COMP/ contient deux sortes de fichiers : des cartes (.card) et des drivers (.driver). * Les drivers ne sont pas à changer, ils indiquent les opérations à faire pour chaque composantes (modèles) de votre configuration. * Les cartes contiennent les informations nécessaires pour chaque composante (les fichiers d'états initiaux, les fichiers de conditions aux limites, les fichiers d'émissions ...) ainsi que les indications sur comment gérer les fichiers sorties des composantes (noms des fichiers que l'on veut conserver, et post-traitement qu'on leur associe.) [[BR]] * Le répertoire POST/ contient les fichiers de configuration des monitoring. Par exemple pour le modèle couplé nous trouvons les fichiers pour la glace lim2 et stomate. [[BR]] Vous trouverez plus d'informations sur les cartes là : [http://forge.ipsl.jussieu.fr/libigcm/wiki/DocUtilisateur Doc Utilisateur libIGCM] [[BR]][[BR]] == Etapes avant la création du job de simulation == === config.card === Avant de créer un job pour votre simulation vous devez indiquer tous les paramètres nécessaires à cette dernière dans le fichier config.card [[BR]] Voici les rubriques à modifier : {{{ JobName=_nom_simul_ ExperimentName=pdControl (mettre le nom de l'expérience selon le vocabulaire CMIP5. pdControl par défaut) SpaceName=DEVT (mettre DEVT, TEST ou PROD) DateBegin=_date_debut_simul_ DateEnd=_date_fin_simul_ PeriodLength= indiquez ici la fréquence de lancement de l'exécutable >>> voir ci-dessous après l'exemple JobNumProcTot=_nombre_processeurs }}} Exemple (10 ans): {{{ JobName=RUN1 DateBegin=1950-01-01 DateEnd=1959-12-30 PeriodLength=1M JobNumProcTot=4 }}} '''note : ''' les rubriques !ExperimentName et !SpaceName sont optionnelles et n'existent pas pour toutes les configurations. === !PeriodLength === !PeriodLength correspond à la fréquence des fichiers de sorties de votre modèle. Vous avez le choix entre 1 jour, 5 jours, 1 mois ou 1 an (1D, 5D, 1M ou 1Y). Si vous choisissez 1D cela signifie que au bout d'une année de simulation vous aurez 360 fichiers de sorties. Si vous choisissez 1M vous aurez 12 fichiers de sorties, et si vous choisissez 1Y vous aurez 1 fichier de sortie. [[BR]] '''Attention''' il faut impérativement que !PeriodLength ne soit pas supérieur à la durée de votre simulation : c'est à dire pour une simulation de 1 mois ne demandez pas une !PeriodLength de 1 an. [[BR]] === répertoire COMP === Comme indiqué ci-dessus le répertoire COMP contient une carte par composante (modèle) de votre configuration. Chacune de ces cartes est divisée en différentes parties : * `[InitialStateFiles] >>>> indique les fichiers d'état initiaux utilisés pour votre simulation (ex start.nc et startphy.nc pour le modèle lmdz)` * `[BoundaryFiles] >>>> indique les fichiers de conditions aux limites (deux parties List pour les fichiers variant avec le temps, ` ` et ListNonDel pour ceux qui ne varient pas)` * `[smoothFiles] >>>> Liste de fichiers rechargés toutes les n-périodes de simulations ` * `[ParametersFiles] >>>> liste des fichiers de paramètres pour le modèle (stockés dans EXP00/PARAM/) ` * `[RestartFiles] >>>> liste des fichiers de restart pour le redémarrage du modèle : cette liste ne doit pas être modifiée` * `[OutputText] >>>> liste des fichiers texte en sortie du modèle` * `[OutputFiles] >>>> liste des fichiers netcdf en sortie du modèle avec le post-traitement éventuel` * `[Post_...] >>>> description des différentes post-traitements. ` A chaque fois la syntaxe utilisée est la suivante : ''(path_fichier, fichier)'' [[BR]] Elle est équivalente à : [[BR]] ''cp path_fichier fichier'' [[BR]] {{{ exemple : ListNonDel= (${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/HISTORIQUE/so4.run1850.cdf, .),\ c'est équivalent à cp ${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/HISTORIQUE/so4.run1850.cdf . }}} '''ATTENTION''' : il ne faut pas laisser d'espace après le "\". Si jamais vous laissez un espace la ligne qui suit n'est pas prise en compte. [[BR]] '''NOTE''' : dans les cartes fournies avec les modèles nous utilisons régulièrement les variables ${R_BC} et ${R_INIT}. Par défaut elles sont définies ainsi : {{{ R_BC = /dmnfs/cont003/p86ipsl/IGCM/BC R_INIT = /dmnfs/cont003/p86ipsl/IGCM/INIT }}} Toute fois si vous le souhaitez vous pouvez écraser ces définitions en redéfinissant R_BC et R_INIT dans le fichier config.card, ou en indiquant les paths complets des fichiers. [[BR]] Le répertoire /dmnfs/cont003/p86ipsl/IGCM regroupe tous les fichiers d'input pour les différentes configurations. [[BR]] === Options dans lmdz.card === {{{ LMDZ_NbPeriod_adjust=3 }}} LMDZ_NbPeriod_adjust permet de définir combien de !PeriodLenght on veut utiliser au début d'une simulation pour créer le fichier Bands qui permet d'ajuster au mieux la parallélisation du code. Si jamais on souhaite utiliser un fichier pré-existant il faut indiquer LMDZ_NbPeriod_adjust=0 et préciser le nom du fichier Bands à utiliser. [[BR]] Voir [https://forge.ipsl.jussieu.fr/igcmg/wiki/Modipsl_exec#LeparallelismeetlesfichiersBands ici] pour une description de l'utilisation des fichiers Bands. [[BR]] '''Attention''' au nombre de proc et à la grille précisés dans ce nom. {{{ ByPass_hgardfou_teta=n ByPass_hgardfou_mats=n }}} {{{ # To force higher writing level for aerosol. # LMDZ_Freq_aero : frequency for writing (in PeriodLength : 10Years = 120) , # LMDZ_Length_aero : length of writing (in PeriodLength : 1Year = 12). # To cancel this option put LMDZ_Length_aero=0 LMDZ_Freq_aero=120 LMDZ_Length_aero=12 }}} {{{ # Set COSP activation and Outputs frequency (monthly, daily, HF) = y/n LMDZ_COSP_OK=n LMDZ_COSP_monthly=y LMDZ_COSP_daily=y LMDZ_COSP_hf=n }}} {{{ # Set NMC Outputs frequency (monthly, daily, HF) = y/n LMDZ_NMC_monthly=y LMDZ_NMC_daily=n LMDZ_NMC_hf=n }}} === répertoire PARAM === Ce répertoire contient les fichiers de paramètres des différents modèles. Reportez vous aux documentations scientifiques de chacun de ces modèles pour en connaître les différentes utilisations. [[BR]][[BR]] == Création du job == Avant de créer votre job, vérifier le fichier config.card. [[BR]] La création du job se fait avec la commande : {{{ cd modipsl/util ./ins_job }}} Cette commande recherche tous les fichiers config.card existant dans des sous-répertoires de modipsl et crée les job associés (en reprenant la rubrique !JobName du fichier config.card). Si jamais un fichier du même nom (Job_nom_simul) existe déjà alors un message d'avertissement apparait et le job n'est pas écrasé. Vous devez l'effacer au préalable pour pouvoir le recréer. [[BR]] Cette commande crée également run.card.init, squelette du fichier run.card qui contiendra l'état d'avancement de la simulation. Il crée également les jobs de post-traitement, spécifiques à la machine de post-traitement dans le répertoire : modipsl/libIGCM . Ils s'appellent xxxx.job. Une fois le job créé (Job_nom_simul) vous devez vérifier que toutes les informations nécessaires à la soumission d'un job sont correctes : === Sur les machines vectorielles de type sx8 sx9 === N'oubliez pas de modifier les variables '''elapstim_req''' et '''memsz_job''' en entête de job si nécessaire (voir documentation sur les machines de calculs du CCRT ou les variables '''cputim_job''' et '''memsz_job''' sur les machines NEC de l'IDRIS). {{{ #PBS -l memsz_job=15.0gb # limite memoire #PBS -l elapstim_req=02:00:00 # limite en temps elapsed }}} Remarque : Pour connaître les temps autorisés sur les différentes queues de la machine vous pouvez utiliser la commande '''class''' au CCRT ou '''news class''' à l'IDRIS. [[BR]] Par défaut la simulation tournera sur le disque tmpdir de la machine. Si vous voulez qu'elle ait lieu sur le scratchir ou workdir, vous devez modifier la variable RUN_DIR_PATH dans le fichier Job_nom_simul {{{ RUN_DIR_PATH=$SCRATCHDIR }}} === Sur la machine Titane du CCRT === Dans le Job n'oubliez pas de modifier la limite de temps CPU demandée {{{ #MSUB -T 1800 # Limite temps (en secondes) }}} Remarque : Pour connaître les temps autorisés sur les différentes queues de la machine vous pouvez utiliser la commande '''class''' au CCRT ou '''news class''' à l'IDRIS. [[BR]] La machine titane n'a pas de tmpdir, la simulation tourne donc sur le scratchdir dans le répertoire RUN_DIR (doit être modifié prochainement) === Pour toutes les machines === Avant de lancer votre simulation il vous reste une dernière étape : vous devez définir la variable '''!PeriodNb''' dans votre Job. '''!PeriodNb''' peut être définie comme le nombre maximal de '''!PeriodLength''' (dans config.card) pouvant être simulée sur le '''elapstim_req''' demandé ! [[BR]] exemple : {{{ PeriodLength=1M elapstim_req=20:00:00 PeriodNb=12 >>>> cela signifie que sur les 20 heures de temps CPU demandées on pourra faire tenir 12 mois de simulations }}} [[BR]] '''Note 1''' : Pour vous faire une idée des temps d'exécution nécessaires vous pouvez trouver un récapitulatif des performances du modèle couplé [http://forge.ipsl.jussieu.fr/igcmg/wiki/PerformancesIPSLCM5A ici] [[BR]] '''Note 2''' : Vous pouvez consulter également les documentations expliquant comment [https://forge.ipsl.jussieu.fr/igcmg/wiki/Modipsl_titane travailler sur titane] et [https://forge.ipsl.jussieu.fr/igcmg/wiki/Modipsl_vargas sur vargas] [[BR]][[BR]] == Exécution de la simulation == '''Avant''' : Vérifier les dates et les options de démarrage du fichier config.card. __Au CCRT__ Sur mercure : {{{ cd modipsl/config/IPSLCM5A/EXP00/ ccc_msub Job_nom_simul sur titane et platine qsub Job_nom_simul sur mercure(s) }}} __A l'IDRIS__ {{{ cd modipsl/config/IPSLCM5A/EXP00/ qsub Job_nom_simul }}} [[BR]] '''ATTENTION''': par défaut des job d'atlas seront lancés à la fin de votre simulation. Ces jobs s'intitulent REBUILDA, TS et SE. Pour en savoir plus voir [https://forge.ipsl.jussieu.fr/igcmg/wiki/Modipsl_post ici] [[BR]][[BR]] == Etat de la simulation en cours == La variable !PeriodState du fichier run.card peut vous aider à connaître l'état de votre simulation : {{{ Start ou OnQueue : run en attente Running : run en cours d'exécution Completed : run fini correctement Fatal : run fini avec un plantage }}} [[BR]][[BR]] == Fin de simulation == Lorsque votre simulation est finie deux fichiers sont créés dans votre répertoire d'expérience: - run.card - Script_Output_JobName Si la simulation s'est mal déroulée vous aurez un troisième fichier : - !JobName_date_out_run_file_error qui contient le journal de sortie de votre simulation Dans la dernière version de libIGCM ce fichier est contenu dans un répertoire Debug/ créé dans votre répertoire d'expérience. Le fichier run.card indique l'état de votre run à la fin de la simulation. Il contient une variable !PeriodState qui vous renseigne {{{ PeriodState= Completed ( = simulation bien finie) PeriodState= Fatal (= problème durant la simulation) }}} Lorsque votre simulation est bien finie les fichiers de sorties sont stockés au path suivant : {{{ $DMFDIR/IGCM_OUT/_nom_config_/_SpaceName_/_ExperimentName_/_nom_simul_ Avec les sous répertoires suivant : ATM CPL ICE OCE SRF SBG Out Exe MOD = Restart et Output de la composante (ATM, ICE...) Out = journaux de sorties du run Exe = exécutables utilisés pour le run }}} Lorsque votre simulation est bien finie, les post-traitements sont lancés et exécutés sur les frontales. [[BR]][[BR]] ---- = __FAQ Exécution__ = == Le parallelisme et les fichiers Bands == Dans LMDZ si le nombre de points par tâche MPI est distribué de façon uniforme, l'équilibrage de charge n'est pas optimum. Il existe une option '''adjust''' (dans lmdz.card) qui permet d'indiquer au code que l'on veut qu'il "ajuste" sa répartition des points. Pour cela lors d'un run on mesure le temps passé dans chaque partie du code et on définit la répartition optimum. Cette nouvelle répartition est stockée alors dans le fichier Bands_res_nbProc.dat (dépend de la configuration – de la machine – de la résolution – du nombre de proc). [[BR]] Idéalement il faut faire une pré-simulation permettant de créer ce fichier (~ 3 mois de simulation). Puis ensuite utiliser ce fichier pour la simulation "maître". Le fichier est stocké dans le répertoire $DMFDIR/IGCM_OUT/nom_config/.../nom_simul/ATM/Debug/[[BR]] Voir [https://forge.ipsl.jussieu.fr/igcmg/wiki/Modipsl_exec#Optionsdanslmdz.card ici] pour l'utilisation de adjust et du fichier Bands. '''A retenir pour IPSLCM5A ''' : Par défaut, le couplé IPSLCM5A, peut tourner sur un nombre quelconque de processeurs. Il crée lui-même le fichier Bands lors des 3 premiers mois de la simulation puis utilise celui du dernier mois. Il est possible d'utiliser le fichier Bands d'une autre simulation, voir paramétrage dans COMP/lmdz.card. '''ATTENTION''' : Pour être certain d'obtenir les même résultats entre deux simulations il faut annuler l'ajustement et la création des fichiers Bands. Il faut utiliser pour les deux simulations le MÊME fichier Bands. [[BR]][[BR]]