Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
logiciels:mkl:mkl-et-parallelisme [2015/06/03 18:10] montap01 [Slurm] |
logiciels:mkl:mkl-et-parallelisme [2015/06/04 11:49] (Version actuelle) montap01 [Réserver un nœud complet] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== MKL et parallélisme ====== | ||
~~SLIDESHOW yatil~~ | ~~SLIDESHOW yatil~~ | ||
+ | ====== MKL et parallélisme ====== | ||
- | Nous avons vu dans l'[[start |introduction à la MKL]] que cette librairie est **par défaut** en mode // | + | Nous avons vu dans l'[[mkl |introduction à la MKL]] que cette librairie est **par défaut** en mode // |
L' | L' | ||
Ligne 76: | Ligne 76: | ||
Une alternative courante dans les grands centres de calcul est de ne permettre que un et un seul job sur un nœud à un instant donné. Un problème de sur-allocation n' | Une alternative courante dans les grands centres de calcul est de ne permettre que un et un seul job sur un nœud à un instant donné. Un problème de sur-allocation n' | ||
+ | |||
+ | ==== Plusieurs approches possibles ==== | ||
+ | Plusieurs manières de créer une demande de réservation correcte sont possibles. | ||
+ | |||
+ | Nous proposons ici deux méthodes. Suivant vos besoins et votre compréhension de la MKL et de slurm, vous pouvez envisager des alternatives. | ||
+ | |||
+ | ==== Réserver un nœud complet ==== | ||
+ | Puisque la MKL " | ||
+ | |||
+ | Ajouter dans votre fichier de job : | ||
+ | < | ||
+ | #SBATCH --exclusive | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Réserver le " | ||
+ | |||
+ | Cette stratégie consiste simplement à réserver N cœurs au niveau de slurm (en vous rappelant que slurm les appelle des CPU), et à indiquer ce nombre à la MKL. Nous construisons simplement ci-après un job de type OpenMP : | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | #SBATCH --ntasks=1 | ||
+ | #SBATCH --cpus-per-task=8 | ||
+ | #SBATCH --mem-per-cpu=300 | ||
+ | #SBATCH --time 00:01:00 | ||
+ | |||
+ | export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK | ||
+ | ./ | ||
+ | </ | ||
+ | ==== Passer en séquentiel ==== | ||
+ | Bien entendu, si vous rencontrez des problèmes de sur-allocation ou en cas de doute, vous pouvez aussi passer en mode séquentiel : | ||
+ | * en compilant votre code avec la version séquentielle : | ||
+ | * '' | ||
+ | * ou en choisissant le mode séquentiel dans le // | ||
+ | * ou avec la variable d' | ||
+ | * ou en limitant le nombre de thread à la valeur 1 via la variable '' |