This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
calcul:cluster:exemples_batchs [2015/10/15 11:49] claude mercier |
calcul:cluster:exemples_batchs [2015/10/21 16:34] (current) claude mercier |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Un script à envoyer sur le cluster va contenir les instructions sous la forme | + | **Un script à envoyer sur le cluster va contenir les instructions sous la forme \\ |
- | #SBATCH | + | #SBATCH intructions\\ |
- | en debut de ligne du script (fichier.sh) | + | en debut de ligne du script (fichier.sh)** |
- | Ensuite on envoie le batch pour execution | + | **Ensuite on envoie le batch pour execution** |
- | cluster-head> sbatch fichier.sh | + | **cluster-head> sbatch fichier.sh** |
- | **exemple 1:** je veux 50 taches independantes, peu m'importe où elles vont s'exécuter | + | Quand le job est fini, ou s'execute, on peut voir la sortie dans le repertoire où on a lancé le job. |
+ | Un fichier slurm-NNN.out contient la sortie (NNN numéro du job) | ||
- | '' | + | **exemple 1:** je veux 50 taches indépendantes, peu m'importe où elles vont s'exécuter |
+ | |||
+ | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Line 17: | Line 20: | ||
srun mon_executable | srun mon_executable | ||
- | '' | + | </code> |
(recuperation du numéro de tache avec la variable d'environnement SLURM_PROCID) | (recuperation du numéro de tache avec la variable d'environnement SLURM_PROCID) | ||
Line 23: | Line 26: | ||
**exemple 2:** j'ai un code qui demarre plusieurs taches MPI, chaque tache se divisant en 8 avec openMP | **exemple 2:** j'ai un code qui demarre plusieurs taches MPI, chaque tache se divisant en 8 avec openMP | ||
- | ''#!/bin/bash | + | <code> |
+ | #!/bin/bash | ||
#SBATCH --job-name=cosmocmc | #SBATCH --job-name=cosmocmc | ||
Line 55: | Line 59: | ||
# une tache pour 8 processeurs. | # une tache pour 8 processeurs. | ||
mpirun -n $n ./cosmomc test_SZs.ini | mpirun -n $n ./cosmomc test_SZs.ini | ||
- | '' | + | </code> |
+ | |||
+ | **Exemple 3 :** D'habitude je lance mes calculs en direct dans idl. | ||
+ | |||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # je demande 1 noeud | ||
+ | #SBATCH -N1 | ||
+ | |||
+ | #informatif | ||
+ | echo "On tourne sur: $SLURM_NODELIST" | ||
+ | |||
+ | # idl va prendre autant de CPUs que disponibles | ||
+ | # il lui faut un fichier de commandes à executer | ||
+ | # (tout ce que vous taperiez si vous etiez devant) | ||
+ | # soit le creer avant, soit le creer a la volée | ||
+ | # dans ce job | ||
+ | |||
+ | |||
+ | cat > fichier_commande_idl.bat <<EOF | ||
+ | mk_an2star | ||
+ | EOF | ||
+ | |||
+ | |||
+ | idl fichier_commande_idl.bat | ||
+ | |||
+ | # j'ai fini plus besoin du fichier.bat | ||
+ | rm fichier_commande_idl.bat | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | **Exemple 4:** mes calculs doivent s'exécuter sur une machine avec coprocesseurs (K20 ou PHI) | ||
+ | |||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | |||
+ | ####### je voudrais phi ou gpu indifferemment | ||
+ | #SBATCH -p copro | ||
+ | |||
+ | ####### si on veut seulement gpu mettre -p K20 | ||
+ | ####### si on veut seulement xeon phi, mettre -p PHI | ||
+ | |||
+ | ####### mon code utilise une fois lancé 8 processeurs (multithreadé) | ||
+ | #SBATCH -n 8 | ||
+ | |||
+ | #SBATCH --job-name "test_copro" | ||
+ | |||
+ | echo "On tourne sur: $SLURM_NODELIST" | ||
+ | echo "nb procs: $SLURM_JOB_CPUS_PER_NODE" | ||
+ | |||
+ | ############slurm ajoute des variables qui cachent les coprocesseurs #####CUDA_VISIBLE_DEVICES=NoDevFiles | ||
+ | unset CUDA_VISIBLE_DEVICES | ||
+ | unset GPU_DEVICE_ORDINAL | ||
+ | |||
+ | cd ICL/CapsBasic | ||
+ | make clean | ||
+ | make | ||
+ | ./capsbasic | ||
+ | ./intelcaps | ||
+ | ./capsbasic NVIDIA | ||
+ | ./intelcaps NVIDIA | ||
+ | </code> | ||