= __Travailler sur Ada__ = '''[wiki:platform/documentation_2012 Index]/[wiki:Modipsl_envCalc Environnement de Calcul]/[wiki:Modipsl_ada Ada]''' [[PageOutline]] [[BR]][[BR]] == Documentation IDRIS == Voir : http://www.idris.fr/ada/ == Environnement minimum sur ada == * Voir fichier typique .bash_login dans ~rpsl035/.bash_login Il faut avoir accès à : * fcm : {{{ export PATH=~rpsl035/FCM/bin:$PATH }}} [[BR]][[BR]] == Premiers essais == === LMDZ === * 7/1/2013 * Compilation OK : fichiers arch accessibles sur trunk (à partir de la rev. 1705) * Execution : sequentiel, MPI, MPI/OpenMP, OpenMP OK, les benchs (quelques jours en 48x36x19 ; compilation en mode "dev") donnent des restarts identiques. Youpi. === IPSLCM5 === * 7/1/2013 :compilation , 25/1/2013 : utilisation des bibliothèques en dynamic * IOIPSL : OK * FCM : OK * LMDZ AR4 : OK * NEMO : ajouter 3 lignes * XMLF90 : ajouter arch ADA * OASIS : OK * execution * 1 mois OK, lancement job ultra simple * Ajouter dans le job : {{{ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/smplocal/pub/NetCDF/4.1.3/lib:/smplocal/pub/HDF5/1.8.9/seq/lib }}} * post-traitement * sur ada == Commandes de gestion de Jobs sur ada == * La limite de temps dans les jobs se compte en temps réel. 1h sur 32 procs compte pour 32h. Attention à ne pas avoir trop de temps sur 1 processeur. * llsubmit --> soumissions de job * llcancel --> suppression de job * llq -u ''login'' --> indique tous les jobs en queue ou running pour ''login'' * Astuce : paramétrer l'affichage de llq pour avoir les noms de jobs : llq -u $(whoami) -f %jn %id %st %c %dq %h -W * Post-mortem : jar , jar -l #jobid#, pour avoir le lendemain du job les informations détaillées : mémoire, temps réel, efficacité, ... [[BR]][[BR]] == Compilation == N'oubliez pas de verifier que votre PATH contient bien le path pour l'outil FCM : ~rpsl035/FCM/bin . [[BR]] Plus d'infos [https://forge.ipsl.jussieu.fr/igcmg/wiki/Modipsl_compil#FCM là]. [[BR]][[BR]] == 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. [[BR]][[BR]] == Les post-traitement == Les post-traitements se font aussi sur ada. [[BR]][[BR]] == Compiler IPSLCM5A == * 25/1/2013 : OK en enlevant -Bstatic dans modipsl/modeles/XMLIO_SERVER/arch/arch-X64_ADA.path [[BR]][[BR]] == Faire une simulation avec le modèle IPSLCM5A == * Repérer un état initial à utiliser : * '''Attention :''' create_etat0_limit ne fonctionne pas actuellement sur vargas. Il est compilé en parallèle (pour gagner du temps) et l'executable tourne sur le nombre de procs demandé par le job : 32 (ou 16). Comme ce n'est pas prévu dans ce0l, il s'arrête. Il faut donc partir d'un état initial créé autrement : autre simulation, ce0l executé ailleurs, par exemple sur brodie. * Ajouter dans le job : {{{ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/smplocal/pub/NetCDF/4.1.3/lib:/smplocal/pub/HDF5/1.8.9/seq/lib }}} * A faire : Tester si les espaces temporaires permettent de faire les rebuild avec !rebuildFromWorkdir et les pack == Exemple de job de lancement pour un executable en mode MPI == Voici un exemple pour un simple job pour lancer un executable orchidee_ol (ou gcm.e en commentaire). Tout les fichiers d'entree doit exister dans le repertoire ansi que l'executable avant lancement. {{{ #!/bin/ksh # ###################### # ## ADA IDRIS ## # ###################### # Nom de la requete # @ job_name = test # Type de travail # @ job_type = parallel # Fichier de sortie standard # @ output = Script_Output_test # Fichier de sortie erreur (le meme) # @ error = Script_Output_test # Nombre de processus demandes # @ total_tasks = 8 # Temps CPU max. par processus MPI hh:mm:ss # @ wall_clock_limit = 1:00:00 # Nombre de taches OpenMP/pthreads par processus MPI ### @ parallel_threads = 4 # Fin de l entete # @ queue export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/smplocal/pub/NetCDF/4.1.3/lib:/smplocal/pub/HDF5/1.8.9/seq/lib poe ./orchidee_ol #poe ./gcm.e }}} == Spécificités libIGCM sur ada == === Comment refaire une simulation et avoir exactement les mêmes résultats? === Attention pour reproduire exactement la même simulation, sur ada, il faut utiliser le même fichiers Bands d'équilibrage des calculs. Voir COMP/lmdz.card.