leria:centre_de_calcul:cluster
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
leria:centre_de_calcul:cluster [06/02/2019 11:52] – [Connexion à stargate] Chantrein Jean-Mathieu | leria:centre_de_calcul:cluster [06/01/2023 15:39] – Chantrein Jean-Mathieu | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | <note tip>you can see the translation of this page by clicking on the banner of your language at the top right of this page</ | + | ^ [[technique: |
+ | |||
+ | <note tip>you can see the translation of this page [[leria: | ||
Ligne 5: | Ligne 7: | ||
- | Vous pouvez | + | Vous pouvez |
<code latex> | <code latex> | ||
@Misc{HPC_LERIA, | @Misc{HPC_LERIA, | ||
- | title = {{High Performance Computing Cluster of LERIA}, | + | title = {High Performance Computing Cluster of LERIA}, |
year = {2018}, | year = {2018}, | ||
note = {slurm/ | note = {slurm/ | ||
Ligne 18: | Ligne 20: | ||
< | < | ||
* Cette page de wiki est aussi la votre, n' | * Cette page de wiki est aussi la votre, n' | ||
- | * Tous les utilisateurs du cluster doivent être inscrit sur la liste de diffusion [[http://sympa.info.univ-angers.fr/ | + | * Tous les utilisateurs du cluster doivent être inscrit sur la liste de diffusion [[http://listes.univ-angers.fr/ |
- | * Pour s' | + | * Pour s' |
</ | </ | ||
Ligne 43: | Ligne 45: | ||
==== Architecture matérielle ==== | ==== Architecture matérielle ==== | ||
- | | Hostname | + | | Hostname |
- | | star[254-253] | + | | star[254-253] |
- | | star[245-244] | + | | star[246-252] |
- | | star243 | + | | star[245-244] |
- | | star242 | + | | star243 |
- | | | + | | star242 |
- | | | + | | star[199-195] |
+ | | star[194-190] | ||
+ | | star100 | ||
+ | | star101 | ||
==== Architecture logicielle ==== | ==== Architecture logicielle ==== | ||
Ligne 65: | Ligne 70: | ||
Chacune de ces partitions contient des nœuds. | Chacune de ces partitions contient des nœuds. | ||
- | Les nœuds de calcul fonctionnent avec un système d' | + | Les nœuds de calcul fonctionnent avec un système d' |
==== Politique d' | ==== Politique d' | ||
Ligne 99: | Ligne 104: | ||
< | < | ||
+ | <note important> | ||
+ | https:// | ||
==== Slurm: premiers tests et documentation ==== | ==== Slurm: premiers tests et documentation ==== | ||
Ligne 236: | Ligne 243: | ||
user@stargate: | user@stargate: | ||
- | Très souvent, on souhaite exécuter un seul et même programme pour un ensemble de fichier, dans ce cas, il y a 2 solutions à privilégier: | + | Très souvent, on souhaite exécuter un seul et même programme pour un ensemble de fichier |
- | * si les fichiers à traiter sont facilement indexable, on utilisera | + | * Utiliser |
- | * sinon, on utilisera | + | * Utiliser |
===== IMPORTANT: Disponibilité et politique de gestion des ressources ===== | ===== IMPORTANT: Disponibilité et politique de gestion des ressources ===== | ||
Ligne 254: | Ligne 261: | ||
Il est tout a fait possible de surcharger ces valeurs par défaut avec les options --mem-per-cpu et --time. Toutefois, | Il est tout a fait possible de surcharger ces valeurs par défaut avec les options --mem-per-cpu et --time. Toutefois, | ||
- | <note important> | + | <note important> |
+ | * vous ne devriez pas surévaluer les ressources de vos jobs. En effet, slurm fonctionne avec une notion de partage juste (fair share): si vous réservez des ressources, peu importe que vous les utilisiez ou non. Lors de vos prochaines soumissions, | ||
+ | * Si vous avez un grand nombre de job à faire, **vous devez utiliser la soumission par array job**. | ||
+ | * Si ces jobs ont de grandes durées d' | ||
</ | </ | ||
Ligne 276: | Ligne 286: | ||
Voir aussi [[leria: | Voir aussi [[leria: | ||
- | Le cluster de calcul utilise un pool de serveurs de stockages distribués [[https:// | + | * Le cluster de calcul utilise un pool de serveurs de stockages distribués [[https:// |
+ | * Si vous souhaitez créer des groupes, merci d' | ||
+ | |||
+ | * Pour rappel, **par défaut**, les droits de votre home sont définis à 755, donc **tout le monde peut lire et exécuter vos données**. | ||
===== Utilisation avancée ===== | ===== Utilisation avancée ===== | ||
==== Array jobs ==== | ==== Array jobs ==== | ||
- | Vous devriez commencer par lire la [[https:// | + | Vous devriez commencer par lire la [[https:// |
- | Si vous avez un grand nombre de fichier à traiter avec un seul exécutable, | + | Si vous avez un grand nombre de fichier |
C'est facile à mettre en œuvre, il suffit de rajouter l' | C'est facile à mettre en œuvre, il suffit de rajouter l' | ||
- | === Exemple | + | === Test paramétriques |
+ | |||
+ | Il est facile d' | ||
<code bash> | <code bash> | ||
- | #! /bin/bash | + | # |
- | # Options | + | # |
+ | #SBATCH -N 1 | ||
+ | #SBATCH --ntasks-per-node=1 | ||
+ | #SBATCH -t 10:00:00 | ||
+ | #SBATCH --array=0-9 | ||
+ | #SBATCH -p intel-E5-2670 | ||
+ | #SBATCH -o %A-%a.out | ||
+ | #SBATCH -e %A-%a.err | ||
+ | #SBATCH --mail-type=end, | ||
+ | #SBATCH --mail-user=username@univ-angers.fr | ||
+ | / | ||
+ | </ | ||
- | #SBATCH --job-name=name # Nom du Job | + | L' |
- | #SBATCH --mail-type=END | + | |
- | #SBATCH --mail-user=username@univ-angers.fr | + | |
- | # | + | |
- | # Traitement | + | <code bash> |
- | / | + | # Valeurs irrégulières 0, |
+ | --array=0, | ||
+ | |||
+ | # Valeur séparé par des sauts de +2: 1, 3, 5 et 7 | ||
+ | --array=1-7: | ||
</ | </ | ||
+ | === Job pour multiples instances === | ||
- | Comme vous pouvez le voir, c'est la variable SLURM_ARRAY_TASK_ID qui nous permet | + | Il est courant |
- | * modifier le nom des fichiers | + | Soit l' |
- | | + | < |
+ | job_name | ||
+ | ├── error | ||
+ | ├── instances | ||
+ | │ ├── bench1.txt | ||
+ | │ ├── bench2.txt | ||
+ | │ └── bench3.txt | ||
+ | ├── job_name_exec | ||
+ | ├── output | ||
+ | └── submit_instances_dir.slurm | ||
+ | </ | ||
+ | |||
+ | Il est facile d' | ||
+ | |||
+ | | ||
- | Normalement, | + | avec le batch submit_instances_dir.slurm suivant: |
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
- | REP_BASE=/ | ||
- | REP_BASE_FOR_ARRAY_JOB=/ | ||
- | mkdir $REP_BASE_FOR_ARRAY_JOB | + | #SBATCH --mail-type=END, |
+ | #SBATCH --mail-user=YOUR-EMAIL | ||
+ | #SBATCH -o output/ | ||
+ | #SBATCH -e error/%A-%a | ||
- | NUM=1 | + | #INSTANCES IS ARRAY OF INSTANCE FILE |
+ | INSTANCES=(instances/ | ||
- | for file in $(ls $REP_BASE) | + | ./ |
- | do | + | </code> |
- | ln $REP_BASE/$file $REP_BASE_FOR_ARRAY_JOB/ | + | |
- | NUM=$(expr $NUM + 1) | + | |
- | done | + | |
- | exit 0 | + | === Job pour multiples instances avec multiples exécutions (Seed number) === |
+ | |||
+ | Parfois il faut lancer plusieurs fois l' | ||
+ | |||
+ | Soit l' | ||
+ | < | ||
+ | job_name | ||
+ | ├── error | ||
+ | ├── instances | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├── job_name_exec | ||
+ | ├── output | ||
+ | ├── submit_instances_dir_with_seed.slurm | ||
+ | └── submit.sh | ||
</ | </ | ||
- | ==== Test paramétriques ==== | + | Il suffit d’exécuter la commande suivante: |
- | On voit bien qu'il est assez facile d' | + | |
+ | |||
+ | avec le fichier | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
- | #SBATCH -J Job_parametre_régulier | + | |
- | #SBATCH -N 1 | + | readonly NB_SEED=50 |
- | #SBATCH --ntasks-per-node=1 | + | |
- | #SBATCH -t 10:00:00 | + | for instance in $(ls instances) |
- | #SBATCH --array=0-9 | + | do |
- | # | + | sbatch |
- | #SBATCH -o %A-%a.out | + | done |
- | # | + | exit 0 |
- | # | + | |
- | #SBATCH --mail-user=username@univ-angers.fr | + | |
- | /path/ | + | |
</ | </ | ||
- | L' | + | et le batch submit_instances_dir_with_seed.slurm suivant: |
<code bash> | <code bash> | ||
- | # Valeurs irrégulières 0,3, | + | #!/ |
- | --array=0, | + | #SBATCH --mail-type=END,FAIL |
+ | # | ||
- | # Valeur séparé par des sauts de +2: 1, 3, 5 et 7 | + | echo "####### |
- | --array=1-7:2 | + | echo "####### |
+ | echo | ||
+ | srun echo nomApplication ${1} ${SLURM_ARRAY_TASK_ID} | ||
</ | </ | ||
- | ==== Dépendances entre job ==== | + | Avec cette méthode, la variable SLURM_ARRAY_TASK_ID contient la graine. Et vous soumettez autant de array job que ce qu'il y a d' |
+ | Vous retrouvez facilement vos sortie qui sont nommées comme ceci: | ||
+ | |||
+ | output/ | ||
+ | |||
+ | |||
+ | === Dépendances entre job === | ||
Vous pouvez déterminer des dépendances entre jobs via l' | Vous pouvez déterminer des dépendances entre jobs via l' | ||
- | === Exemple | + | == Exemple == |
<code bash> | <code bash> | ||
Ligne 467: | Ligne 531: | ||
Par défaut, il est impossible de se connecter en ssh directement sur les nœuds de calcul. Cependant, si c'est justifié, nous pouvons facilement faire des exceptions si celles ci sont temporaires. Dans ce cas, merci de faire une demande explicite à technique [at] info.univ-angers.fr | Par défaut, il est impossible de se connecter en ssh directement sur les nœuds de calcul. Cependant, si c'est justifié, nous pouvons facilement faire des exceptions si celles ci sont temporaires. Dans ce cas, merci de faire une demande explicite à technique [at] info.univ-angers.fr | ||
+ | |||
+ | Les utilisateurs ayant un accès en ssh doivent être abonnés à la liste calcul-hpc-leria-no-slurm-mode@listes.univ-angers.fr. | ||
+ | Pour s' | ||
+ | |||
+ | __Règle par défaut:__ on ne lance pas un calcul sur un serveur sur lequel tourne déjà un calcul d'un autre utilisateur, | ||
+ | Exception pour les processus boinc. Ces processus se mettent en pause lorsque vous exécutez vos calculs. | ||
+ | |||
+ | La commande htop vous permet de savoir qui calcule avec quelles ressources et depuis combien de temps. | ||
+ | |||
+ | Si vous avez un doute, contactez l' | ||
==== Cuda ==== | ==== Cuda ==== | ||
Ligne 477: | Ligne 551: | ||
Ces nœuds sont pour l' | Ces nœuds sont pour l' | ||
- | |||
- | Listes des utilisateurs autorisés à se servir des nœuds gpu actuellement (en ssh): | ||
- | * benoit.damota | ||
- | * jean-michel.richer | ||
- | * o.goudet | ||
==== Nœud RAM ==== | ==== Nœud RAM ==== | ||
Ligne 488: | Ligne 557: | ||
Ce nœud est accesible par soumissions via slurm (partition ram). Pour pouvoir vous en servir, merci d'en faire la demande explicite à technique [at] info.univ-angers.fr | Ce nœud est accesible par soumissions via slurm (partition ram). Pour pouvoir vous en servir, merci d'en faire la demande explicite à technique [at] info.univ-angers.fr | ||
- | Listes des utilisateurs autorisés à se servir des nœuds ram actuellement (en ssh): | + | ==== Cplex ==== |
- | * benoit.damota (pour boinc) | + | |
- | * gilles.hunault (pour test) | + | |
- | Listes des utilisateurs autorisés à se servir des nœuds ram actuellement (via slurm): | + | Le Leria a une licence académique pour le logicielle Cplex. |
- | * frederic.lardeux | + | |
- | * gilles.hunault | + | |
+ | Le chemin pour la bibliothèque Cplex est le chemin par défaut / | ||
+ | |||
+ | |||
+ | ==== Environnements conda (Python) ==== | ||
+ | |||
+ | La commande **conda activate < | ||
+ | |||
+ | source ./ | ||
+ | |||
+ | Il sera peut être également nécessaire de mettre à jour les variables d' | ||
+ | |||
+ | source .bashrc | ||
+ | conda init bash | ||
+ | |||
+ | L' | ||
+ | |||
+ | source ./ | ||
===== FAQ ===== | ===== FAQ ===== | ||
+ | |||
+ | * Comment savoir quelles sont les ressources d'une partition, exemple avec la partition std: | ||
+ | |||
+ | user@stargate~# | ||
+ | |||
+ | * Que signifie "Some of your processes may have been killed by the cgroup out-of-memory handler" | ||
+ | |||
+ | Vous avez dépassé la limite de mémoire que vous avez fixé ou celle par défaut (paramètre --mem-per-cpu) | ||
* Comment obtenir un prompt shell interactif dans un nœud de calcul de votre partition par défaut ? | * Comment obtenir un prompt shell interactif dans un nœud de calcul de votre partition par défaut ? | ||
Ligne 505: | Ligne 595: | ||
srun -n1 -N1 --mem-per-cpu=0 --pty --preserve-env --cpu-bind=no --mpi=none $SHELL | srun -n1 -N1 --mem-per-cpu=0 --pty --preserve-env --cpu-bind=no --mpi=none $SHELL | ||
- | |||
</ | </ | ||
- | | + | |
* Comment obtenir un prompt shell interactif dans un nœud de calcul spécifique ? | * Comment obtenir un prompt shell interactif dans un nœud de calcul spécifique ? | ||
user@stargate~# | user@stargate~# | ||
user@NODE_NAME~# | user@NODE_NAME~# | ||
+ | |||
+ | * Comment puis je citer les ressources du LERIA dans mes rédactions scientifiques ? | ||
+ | |||
+ | Vous pouvez utiliser l' | ||
+ | <code latex> | ||
+ | @Misc{HPC_LERIA, | ||
+ | title = {High Performance Computing Cluster of LERIA}, | ||
+ | year = {2018}, | ||
+ | note = {slurm/ | ||
+ | } | ||
+ | </ | ||
==== Erreur lors de la soumission de job ==== | ==== Erreur lors de la soumission de job ==== | ||
Ligne 552: | Ligne 652: | ||
* libtool | * libtool | ||
* libopenblas-base | * libopenblas-base | ||
+ | * maven | ||
* nasm | * nasm | ||
+ | * openjdk-8-jdk-headless | ||
* r-base | * r-base | ||
* r-base-dev | * r-base-dev | ||
Ligne 570: | Ligne 672: | ||
* keras | * keras | ||
* scikit-learn | * scikit-learn | ||
- | * tenserflow | + | * tensorflow |
- | * tenserflow-gpu # Sur nœuds gpu | + | * tensorflow-gpu # Sur nœuds gpu |
==== Nœuds GPU via apt-get ==== | ==== Nœuds GPU via apt-get ==== | ||
Ligne 601: | Ligne 703: | ||
==== Vue d' | ==== Vue d' | ||
- | https:// | + | https://grafana.leria.univ-angers.fr/ |
==== Détails par nœuds ==== | ==== Détails par nœuds ==== | ||
- | https:// | + | https://grafana.leria.univ-angers.fr/ |
< | < |
leria/centre_de_calcul/cluster.txt · Dernière modification : 06/06/2023 17:00 de Chantrein Jean-Mathieu