Travailler sur Ada
Index?/Environnement de Calcul/Ada
-
Travailler sur Ada
- Documentation IDRIS
- Environnement minimum sur ada
- Premiers essais
- Commandes de gestion de Jobs sur ada
- Compilation
- Comment choisir le nombre de processus demandés ?
- Les post-traitement
- Compiler IPSLCM5A
- Faire une simulation avec le modèle IPSLCM5A
- Exemple de job de lancement pour un executable en mode MPI
- Spécificités libIGCM sur ada
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
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é, ...
Compilation
N'oubliez pas de verifier que votre PATH contient bien le path pour l'outil FCM : ~rpsl035/FCM/bin .
Plus d'infos là.
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.
Les post-traitement
Les post-traitements se font aussi sur ada.
Compiler IPSLCM5A
- 25/1/2013 : OK en enlevant -Bstatic dans modipsl/modeles/XMLIO_SERVER/arch/arch-X64_ADA.path
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.