wiki:Modipsl_titane

Utiliser Modipsl sur titane

Index?/Environnement de Calcul/Titane



Environnement minimum

  • Vous devez charger explicitement la bonne bibliothèque NetCDF. Pour cela il faut faire la commande :
    module load netcdf/3.6.3
    

Vous pouvez également la rajouter dans votre environnement.

  • Vérifiez que votre PATH contient bien le path pour l'outil FCM. Plus d'infos .



Commandes de gestion de job

  • ccc_msub mon_job -> soumet un job
  • ccc_mdel ID -> tue un job de n° ID
  • ccc_mstat -u login -> permet de voir tous les jobs soumis par login
  • mpp -> permet de voir tous les jobs soumis sur la machine
  • bpeek ID -> permet de lister le fichier de sortie d'un job pendant qu'il tourne

Astuces

  • Quand titane ne répond pas, essayer les petits noms des frontales: :
    titane-usr1.ccc.cea.fr   (titane996)
    titane-usr2.ccc.cea.fr   (titane1000)
    titane-usr3.ccc.cea.fr   (titane994)
    titane-usr4.ccc.cea.fr   (titane998)
    



Avant de lancer un Job

Modifier la limite de temps CPU

Dans le Job n'oubliez pas de modifier la limite de temps CPU demandée

#MSUB -T 1800             # Limite temps (en secondes)

Note 1: Pour connaître les temps autorisés sur les différentes queues de la machine vous pouvez utiliser la commande class.
Note 2: 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)

Choisir son groupe de soumission

Par défaut les entêtes de Job créés par modipsl sont positionnées pour utiliser les heures genci du groupe gen2211.
La première chose que vous devez faire c'est de vous demander sur quel compte vous avez des heures de calcul (genci ou dsm ?). Pour cela vous devez vous reporter à la demande d'heures de calcul faite en début d'année.

  • Si vous appartenez au groupe gen2211 et que vous avez des heures sur ce projet vous n'avez rien à changer.
  • Si vos heures sont sur un autre projet genci vous devez modifier le numéro de projet dans le fichier libIGCM/AA_job ainsi que dans libIGCM/AA_rebuild_fromWorkdir.
  • Si vos heures sont sur les projets dsm (p24, p86, etc...) vous devez enlever les lignes #MSUB -p gen2211 des fichiers libIGCM/AA_job et libIGCM/AA_rebuild_fromWordir. Et dans ce dernier cas, remplacer la queue mono par monoext

Note 1: si vous aviez déjà lancé la commande ./ins_job vous devez également modifier les jobs créés (libIGCM/rebuild_fromWorkdir.job et config/.../EXP.../Job...)
Note 2: pour connaître les groupes auxquels vous appartenez vous pouvez utiliser la commande groups

Comment choisir le nombre de processus demandés ?

La méthode de parallélisation de LMDZ impose la règle suivante : il faut au moins 3 bandes de latitude par processus Si vous avez choisi un trop grand nombre de processus la simulation s'arrête avec le message suivant :

Arret : le nombre de bande de lattitude par process est trop faible (<2).
  ---> diminuez le nombre de CPU ou augmentez la taille en lattitude

Pour modifier le nombre de processus il faut changer la valeur de la variable JobNumProcTot dans config.card avant de lancer la commande ins_job.



Soumission du Job

ccc_msub Job_nom_simul



Running

Les simulations sont lancées sur le scratchdir $SCRATCHDIR/RUN_DIR/.... ou $SCRATCHDIR/$CONFIG/... (suivant les versions de libIGCM). Il faut donc faire très attention aux quotas si l'on lance plusieurs simulations simultanées.



Les post-traitements

avec libIGCM_v2.0_beta1

Les post-traitements se font sur titane en queue mono ou queue monoext.

jusqu'à libIGCM v1_12

Les rebuild se font sur la queue mono de titane, et les autres post-traitements sur la machine cesium. Rappel : Pour que cela marche il faut avoir créé des clés avec une passphrase vide pour ssh et s'être connecté sur cesium au moins une fois. (Attention, si vous vous servez pour vos connexions de clés ssh déjà générées avec des passphrases non vides de ne pas les écraser.)
Mémo :

mercure : cd ~/.ssh
mercure : ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cont003/xxxxxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): (RETURN)
Enter same passphrase again: (RETURN)
Your identification has been saved in ...../.ssh/id_rsa.
Your public key has been saved in ...../.ssh/id_rsa.pub.
The key fingerprint is:
af:....
mercure : cat id_rsa.pub >>authorized_keys
mercure : ssh cesium

Les messages de fin de job

Pour recevoir les messages de fin de job envoyés par le job de calcul lui-même : fin de simulation, plantage, .... il ne faut rien faire de spécial depuis le 10 février 2012 : libIGCM_v_1_12 et suivantes. L'adresse prise en compte est celle contenue dans le fichier $HOME/.forward.

Compiler le modèle IPSLCM5A

Depuis décembre 2011, le couplé IPSLCM5A compile sans aucune modification sur titane.



Faire une simulation avec le modèle IPSLCM5A

  • Si vous travaillez sur 32 processus (JobNumProcTot=32) cela signifie que la composante atmosphérique tournera sur 26 CPUs alors que la composante océanique sur 5 CPUs et le coupleur oasis une seule. C'est ce qui se passe par défaut.
  • Execution Cas particulier : si vous souhaitez faire utiliser à votre NEMO parallèle un restart généré par un NEMO mono-processeur, alors il faut forcer une resoumission (ccc_msub) apres le 1er run de la simulation. Pour cela :
    • mettre PeriodNb=1 dans votre Job ; ccc_msub Job
    • une fois le 1er run en machine, remettre PeriodNb=48

Erreurs fréquentes sur titane

mpirun Aborted

Il arrive que cela se plante sans qu'on comprenne pourquoi. Il suffit de faire clean_month et de relancer.

Exemple de plantage :

lmdz.x: posixio.c:248: px_pgin: Assertion `*posp == ((off_t)(-1)) || *posp == lseek(nciop->fd, 0, 1)' failed.
forrtl: error (76): Abort trap signal
Image              PC                Routine            Line        Source
libc.so.6          0000003F10230215  Unknown               Unknown  Unknown
libc.so.6          0000003F10231CC0  Unknown               Unknown  Unknown
libc.so.6          0000003F10229696  Unknown               Unknown  Unknown
libnetcdf.so.4     00002B7CBD12A997  Unknown               Unknown  Unknown
libnetcdf.so.4     00002B7CBD129C63  Unknown               Unknown  Unknown
libnetcdf.so.4     00002B7CBD10477F  Unknown               Unknown  Unknown
libnetcdf.so.4     00002B7CBD103466  Unknown               Unknown  Unknown
libnetcdff.so.4    00002B7CBCC62E2B  Unknown               Unknown  Unknown
libnetcdff.so.4    00002B7CBCCBA8F7  Unknown               Unknown  Unknown
lmdz.x             0000000000CF9AAB  Unknown               Unknown  Unknown
lmdz.x             0000000000CF67A2  Unknown               Unknown  Unknown
lmdz.x             0000000000CF9CA9  Unknown               Unknown  Unknown
lmdz.x             000000000074D659  Unknown               Unknown  Unknown
lmdz.x             0000000000586277  Unknown               Unknown  Unknown
lmdz.x             00000000004BCEA6  Unknown               Unknown  Unknown
lmdz.x             00000000004761A0  Unknown               Unknown  Unknown
lmdz.x             000000000045696A  Unknown               Unknown  Unknown
lmdz.x             00000000004554CC  Unknown               Unknown  Unknown
libc.so.6          0000003F1021D974  Unknown               Unknown  Unknown
lmdz.x             0000000000455399  Unknown               Unknown  Unknown
--------------------------------------------------------------------------
mpirun noticed that process rank 19 with PID 27526 on node titane132 exited on signal 6 (Aborted).
--------------------------------------------------------------------------
Command exited with non-zero status 134
0.25user 0.79system 2:53.61elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+4175minor)pagefaults 0swaps

Disk quota exceeded

Attention aux quotas sur /scratch. Surveiller les avec la commande ccc_quota. Détruire les répertoires temporaires des jobs finis trop tôt sans avoir fait leur ménage dans $SCRATCHDIR/TMPDIR_IGCM et $SCRATCHDIR/RUN_DIR. Demander un quota de 3 To au support si vous allez faire des simulations longues.

> ccc_quota
Disk quotas for user xxxx :

             ------------------ VOLUME --------------------  ------------------- INODE --------------------
 Filesystem       usage        soft        hard       grace       files        soft        hard       grace
 ----------       -----        ----        ----       -----       -----        ----        ----       -----
       home     492.89M          3G          3G           -           -           -           -           - 
zinc:/vol/home/cont003_link      504720     3145728     3145728           -       28070  4294967295  4294967295           - 
    dmnfs11           -           -           -           -       3.54M          5M          5M           - 
   cscratch       4.16G       2.93T       2.95T           -           -           -           -           - 
    scratch 3972382804*          3T          4T           -  6d3h46m10s      24.07k        512k       1.02M           - 

Retour d'expérience

La simulation de 150 ans v3.historicalTGHG3NOLU , juin 2012 :

  • 1,3 % des jobs de calcul ont du être resoumis à la main (1/78)
  • 0,3 % de l'ensembles des jobs de calcul et de post-traitements ont du être resoumis à la main (4/1300).

Comment utiliser le débugueur ddt pour débuguer le modèle couplé (ou tout autre code MPMD) ?

  • compiler le modèle que vous souhaitez débuguer avec l'option -g (nécessaire pour avoir accès aux sources depuis l'interface ddt)
  • créer un répertoire de débugage dans lequel se trouve les exécutables du modèle + les fichiers d'entrée nécessaires au modèle
  • modifier le fichier de configuration "run_file" pour avoir quelque chose comme :
    -np 1 ${DDTPATH}/bin/ddt-client ${TMPDIR_DEBUG}/oasis
    -np 5 ${DDTPATH}/bin/ddt-client ${TMPDIR_DEBUG}/opa.xx
    -np 26 ${DDTPATH}/bin/ddt-client ${TMPDIR_DEBUG}/lmdz.x 
    
    avec TMPDIR_DEBUG = répertoire de débugage
    
  • créer un job de débugage simplifié qui permet de lancer un run dans le répertoire de débugage
  • ajouter dans votre job la commande "module load ddt/3.2"
  • ajouter un lancement de ddt dans le job.
    ...
    module load ddt/3.2
    ddt
    
  • lancer le job : ccc_msub Job
  • lorsque la fenêtre ddt apparaît :
    • cliquer sur "Run and Debug a Program"
    • dans Application, sélectionner un des 3 exécutables du modèle (peu importe lequel)
    • dans MPI, Implémentation choisir le mode "OpenMPI (Compatibility)"
    • dans mpirun arguments, mettre "--app ${TMPDIR_DEBUG}/run_file" avec TMPDIR_DEBUG = répertoire de débugage
    • cliquer sur "Run" puis sur la touche lecture en haut à gauche
Last modified 9 years ago Last modified on 03/05/13 11:59:47