Version 1 (modified by mafoipsl, 7 years ago) (diff) |
---|
Entête des jobs et commandes irene
Cette page décrit les entêtes des jobs sur irene ainsi que les commandes à lancer pour avoir un exécutable simple ou un couplé.
RESUME : tout est comme curie.
-
Entête des jobs et commandes irene
- 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 executable avec l'IOServer débranché
- Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 13 procs MPI …
- MPMD MPI/OpenMP recommandé février 2017
- Les configurations v6
Un executable séquentiel
- Entête du job
#MSUB -n 1
- Commande
time ccc_mprun ./create_etat0_limit.e
Un executable parallélisé avec OpenMP seulement
- Entête du job
#MSUB -n 1 #MSUB -c 16
- Commande
export OMP_NUM_THREADS=16 time ccc_mprun ./gcm.e
- Résultat : 4 threads seront lancés sur 1 processus gcm.e
A noter : on peut réserver un noeud entier pour soi tout seul :
#MSUB -x
Un executable parallélisé avec MPI seulement
- Entête du job
#MSUB -n 32 BATCH_NUM_PROC_TOT=32
- Commande
time ccc_mprun ./gcm.e time ccc_mprun -n 32 ./gcm.e time ccc_mprun -n ${BRIDGE_MSUB_NPROC} ./gcm.e time ccc_mprun -n ${BATCH_NUM_PROC_TOT} ./gcm.e # A valider?
- Résultat : ccc_mprun lance 32 processus gcm.e
Un executable parallélisé avec MPI et OpenMP
- Méthode 1 sur un seul noeud :
- Entête du job
#MSUB -n 8 # Reservation de 8 processus MPI #MSUB -c 4 # Chaque tâche MPI lance 4 threads
- Commande
export KMP_STACKSIZE=2g export KMP_LIBRARY=turnaround export MKL_SERIAL=YES export OMP_NUM_THREADS=4 # Utilisation de 4 threads OpenMP par processus MPI time ccc_mprun ./gcm.e
- Résultat : ccc_mprun lance 8 tâches MPI gcm.e sur 4 threads chacun
- Entête du job
- Méthode 2 sur un seul noeud :
- Entête du job
#MSUB -n 32 # Reservation de 32 procs
- Commande
export OMP_NUM_THREADS=4 # Utilisation de 4 threads OpenMP par processus MPI time ccc_mprun -n 8 -c 4 ./gcm.e
- Résultat : ccc_mprun lance 8 tâches MPI gcm.e sur 4 threads chacun
- Commande
- Entête du job
- Méthode pour plusieurs noeuds :
- Entête du job
#MSUB -N 4 # 4 noeuds #MSUB -n 4 # 4 tâches MPI #MSUB -c 16 # Chaque tâche MPI lance 16 threads
- Commande
export OMP_NUM_THREADS=16 # Utilisation de 16 threads OpenMP par processus MPI time ccc_mprun ./gcm.e
- Résultat : ccc_mprun lance 4 tâches MPI gcm.e sur 4 noeuds différents, chacune avec 16 threads OpenMP
- Entête du job
LMDZ en OpenMP/MPI avec sorties différentes par tâche MPI
#!/usr/bin/ksh ###################### ## CURIE TGCC/CEA ## ###################### #MSUB -r NEWCON32CM6 # nom de la requete #MSUB -o Script_Output_NEWCON32CM6.000001 # nom du fichier de sortie #MSUB -e Script_Output_NEWCON32CM6.000001 # nom du fichier de sortie #MSUB -eo #MSUB -c 8 #MSUB -n 4 #MSUB -q standard # noeuds fins #MSUB -x #MSUB -T 3600 # Limite temps (en secondes) ##MSUB -p XXXXXXX BATCH_NUM_PROC_TOT=32
cat <<-EOF > script_lmdz.x.ksh #!/bin/ksh export KMP_STACKSIZE=3g export KMP_LIBRARY=turnaround export MKL_SERIAL=YES export OMP_NUM_THREADS=8 ./lmdz.x > out_lmdz.x.out.\${SLURM_PROCID} 2>out_lmdz.x.err.\${SLURM_PROCID} EOF chmod +x script_lmdz.x.ksh /usr/bin/time ccc_mprun -n 4 ./script_lmdz.x.ksh >> ${Exe_Output} 2>&1
- Résultat : mpirun lance 4 processus gcm.e avec 8 threads chacun et sur 2 noeuds (de 2 processeurs octocoeurs)
- 308 s (run.card, NEWTON, 96x71x19)
- config.card : ATM= (gcm.e, lmdz.x, 4MPI, 8OMP)
- Comment surveiller les threads :
- top avec f puis j pour avoir le numero du coeur utilise
- 1 pour voir les %cpu
- H pour voir les threads
Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 26 procs, MPI seul
- Entête du job
#MSUB -n 32 BATCH_NUM_PROC_TOT=$BRIDGE_MSUB_NPROC
- Commande
time ccc_mprun -f ./run_file
- avec run_file contenant, oasis en premier obligatoirement:
1 ./oasis 26 ./lmdz.x 5 ./opa.xx
- avec run_file contenant, oasis en premier obligatoirement:
- Résultat : mpirun lance 32 processus : 1 oasis, 26 lmdz et 5 opa
Un executable avec l'IOServer débranché
- Entête :
#MSUB -n 32 # Total number of core to use #MSUB -N 4 # number of nodes
- Commande :
cat > run_file << END 123 ./nemo.exe # 123 par exemple 5 ./xios_server.exe # 5 par exemple pour en avoir 128=4x32 en tout END time ccc_mprun -f run_file
Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 13 procs MPI et 2 tâches OpenMP
- Entête du job :
#MSUB -n 19 # !! A verifier si necessaire : reservation de 19 processus MPI #MSUB -N 1 # Curie noeuds larges = 32 coeurs/noeud
- Commande :
time mpirun -hostfile hosts -H curie30 -np 1 ./script_oasis.ksh : -H curie30 -np 5 ./script_opa.xx.ksh : -H curie30 -np 13 ./script_lmdz.x.ksh
- avec hosts contenant le noms des noeuds (recuperes via la commande mpirun hostname)
curie30 slots=32 max_slots=32 # ici pour curie noeuds larges avec 32 cores par noeud
- avec par exemple script_lmdz.x.ksh contenant :
#!/bin/ksh OMP_NUM_THREADS=2 (( MYMPIRANK = OMPI_COMM_WORLD_RANK - 6)) ./lmdz.x > out_lmdz.x.out.${MYMPIRANK} 2>out_lmdz.x.err.${MYMPIRANK}
- avec hosts contenant le noms des noeuds (recuperes via la commande mpirun hostname)
MPMD MPI/OpenMP recommandé février 2017
#MSUB -n 28 # Réservation du nombre total de processus/threads #MSUB -Q test #MSUB -t 1800 #MSUB -q standard export BRIDGE_HETEROGENEOUS_MPMD=1 export OMPI_MCA_ess=pmi # Nécessaire pour bullxmpi ccc_mprun -f app.conf
Avec app.conf:
1-14 env OMP_NUM_THREADS=14 ./a.out 2-4 env OMP_NUM_THREADS=4 ./a.out
Dans l'exemple ci-dessus, on lance 1 processus MPI avec 14 threads OpenMP et 2 processus MPI avec 4 threads OpenMP.
Les configurations v6
Pour les configurations v6 il faut se reporter à la page suivante