Version 3 (modified by millour, 12 years ago) (diff) |
---|
Entête des jobs et commandes ada
Cette page décrit les entêtes des jobs sur vargas ainsi que les commandes à lancer pour avoir un exécutable simple ou un couplé.
-
Entête des jobs et commandes ada
- Queues compil et debug
- Un executable séquentiel
- Un executable parallélisé avec OpenMP seulement
- Un executable parallélisé avec MPI seulement
- Un executable parallélisé avec MPI et OpenMP
- Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 26 procs, …
- Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 12 procs MPI …
- Entête du couplé IPSLCM5A sur Ada
Queues compil et debug
Il y a une classe de job spéciale pour les compilation (durée max. 20h), la classe "compil":
- Entête du job
# @ job_type = serial # @ class = compil
Un executable séquentiel
- Entête du job
# @ job_type = serial
- Commande
time ./create_etat0_limit.e
Un executable parallélisé avec OpenMP seulement
- Entête du job
# @ job_type = serial # @ parallel_threads = 4 ### Mémoire (maximum 7.0gb par coeur; par ex. pour 4 threads on peut aller jusqu'à as_limit=28gb) # @ as_limit = 7.0gb
- Commande
# Penser à définir la memoire STACK max. utilisée par les variables privees de chaque thread. # (sinon par défaut c'est un tout petit 4M) #export KMP_STACKSIZE=200M # Il est aussi possible d'utiliser la variable d'environnement OMP_STACKSIZE export OMP_STACKSIZE=200M time ./gcm.e
- Résultat : lance 1 tâche et 4 threads avec le programme : gcm.e
Un executable parallélisé avec MPI seulement
- Entête du job
# @ job_type = parallel # Nombre de processus demandes (ici 32) # @ total_tasks = 32
- Commande
poe ./gcm.e
- Résultat : poe lance 32 tâches, avec toute le même programme : gcm.e
- Remarque: La mémoire disponible est de 3.5gb par coeur (donc par tâche MPI pour un job MPI pur), on ne peut pas dépasser cette limite si on demande plus de 64 tâches. Par contre on peut demander jusqu'à 7.0gb par coeur ("# @ as_limit = 7.0gb" dans l'en-tête du job) si on utilise 64 tâches ou moins. Sinon (à tester...) il y a la possibilité comme sur Vargas de demander des "threads" fantômes pour obtenir plus de mémoire (mais attention ce sera facturé!!) en compilant en mode "MPI" seul mais en lancant un job mixte "MPI/OpenMP" suivant le modèle ci-après.
- Attention: il n'y a que 28 noeuds sur lequels peuvent passer les travaux dits "Larges" (plus de 3.5 Go de memoire par coeur) contre 304 noeuds pour les travaux usuels, donc ne demander plus de 3.5gb par coeur que si c'est impératif (sinon ne pas s'étonner d'attendre plus longtemps que les autres pour que ses jobs passent)
Un executable parallélisé avec MPI et OpenMP
- Entête du job
# @ job_type = parallel ## nombre de processus demandées # @ total_tasks = 16 ## nombre de tâches par processus # @ parallel_threads = 4 ### Mémoire (si moins de 64 coeurs: maximum 7.0gb par processus MPI; par ex. pour 4 threads par processus, on peut aller jusqu'à as_limit=28gb) ### Mémoire (si plus de 64 coeurs: maximum 3.5gb par processus MPI; par ex. pour 4 threads par processus, on peut aller jusqu'à as_limit=14gb) # @ as_limit = 28gb
- Commande
# Penser à définir la memoire STACK max. utilisée par les variables privees de chaque thread. # (sinon par défaut c'est un tout petit 4M) #export KMP_STACKSIZE=200M # Il est aussi possible d'utiliser la variable d'environnement OMP_STACKSIZE export OMP_STACKSIZE=200M poe ./gcm.e
- Résultat : poe lance 16 tâches, avec toute le même programme : gcm.e avec 4 threads chaque
Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 26 procs, MPI seul
A faire...
Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 12 procs MPI et 4 tâches OpenMP
A faire...
Entête du couplé IPSLCM5A sur Ada
A faire...