Outils pour utilisateurs

Outils du site


leria:centre_de_calcul:cluster

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
leria:centre_de_calcul:cluster [08/02/2019 09:31] Chantrein Jean-Mathieuleria:centre_de_calcul:cluster [07/10/2019 18:32] – [FAQ] Chantrein Jean-Mathieu
Ligne 5: Ligne 5:
  
  
-Vous pouvez utilisez l'entrée misc de bibtex suivante pour citer le cluster de calcul dans vos publications:+Vous pouvez utiliser l'entrée misc de bibtex suivante pour citer le cluster de calcul dans vos publications:
 <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/debian cluster of 27 nodes(700 logical CPU, 2 nvidia GPU tesla k20m, 1 nvidia P100 GPU), 120TB of beegfs scratch storage}     note = {slurm/debian cluster of 27 nodes(700 logical CPU, 2 nvidia GPU tesla k20m, 1 nvidia P100 GPU), 120TB of beegfs scratch storage}
Ligne 18: Ligne 18:
 <note> <note>
   * Cette page de wiki est aussi la votre, n'hésitez pas à la modifier directement ou à proposer des modifications à technique [at] info.univ-angers.fr.   * Cette page de wiki est aussi la votre, n'hésitez pas à la modifier directement ou à proposer des modifications à technique [at] info.univ-angers.fr.
-  * Tous les utilisateurs du cluster doivent être inscrit sur la liste de diffusion [[http://sympa.info.univ-angers.fr/wws/info/cluster|cluster]] +  * Tous les utilisateurs du cluster doivent être inscrit sur la liste de diffusion [[http://listes.univ-angers.fr/sympa/info/calcul-hpc-leria|calcul-hpc-leria]] 
-    * Pour s'inscrire à cette liste de diffusion, il suffit d'envoyer un mail à sympa@info.univ-angers.fr avec pour objet subscribe cluster Nom Prénom+    * Pour s'inscrire à cette liste de diffusion, il suffit d'envoyer un mail à sympa@listes.univ-angers.fr avec pour objet subscribe calcul-hpc-leria Nom Prénom
 </note> </note>
  
Ligne 45: Ligne 45:
 |  Hostname            |  Modèle      Nombre de modèle identique  |  GPU          Nombre de GPU/modèle  |  CPU                                                                                                            |  Nombre de CPU/modèle  |  Nombre de cœurs/CPU  |  Nombre de threads/CPU  | Nombre de threads/modèle  |  RAM      |  Espace de stockage local  |  Interconnection  | |  Hostname            |  Modèle      Nombre de modèle identique  |  GPU          Nombre de GPU/modèle  |  CPU                                                                                                            |  Nombre de CPU/modèle  |  Nombre de cœurs/CPU  |  Nombre de threads/CPU  | Nombre de threads/modèle  |  RAM      |  Espace de stockage local  |  Interconnection  |
 |  star[254-253]        Dell R720  |  2                            Tesla K20m  |  2                      [[https://ark.intel.com/fr/products/75275/Intel-Xeon-Processor-E5-2670-v2-25M-Cache-2-50-GHz-|intel-E5-2670]]  |  2                      10                    20                      40                        64 Go    |  1To                        2*10Gb/        | |  star[254-253]        Dell R720  |  2                            Tesla K20m  |  2                      [[https://ark.intel.com/fr/products/75275/Intel-Xeon-Processor-E5-2670-v2-25M-Cache-2-50-GHz-|intel-E5-2670]]  |  2                      10                    20                      40                        64 Go    |  1To                        2*10Gb/        |
-|  star[245-244]        Dell R630  |  2                            X            0                      [[https://ark.intel.com/fr/products/91316/Intel-Xeon-Processor-E5-2695-v4-45M-Cache-2-10-GHz-|intel-E5-2695]]  |  2                      18                    36                      72                        128 Go    TODO                      |                   |+|  star[246-252]        Dell R620  |  7                            X            0                      [[https://ark.intel.com/fr/products/75275/Intel-Xeon-Processor-E5-2670-v2-25M-Cache-2-50-GHz-|intel-E5-2670]]  |  2                      10                    20                      40                        64 Go    |  1 To                      |  2*10Gb/        | 
 +|  star[245-244]        Dell R630  |  2                            X            0                      [[https://ark.intel.com/fr/products/91316/Intel-Xeon-Processor-E5-2695-v4-45M-Cache-2-10-GHz-|intel-E5-2695]]  |  2                      18                    36                      72                        128 Go    TODO                      |  2*10Gb/        |
 |  star243              Dell R930  |  1                            X            0                      [[https://ark.intel.com/fr/products/93806/Intel-Xeon-Processor-E7-4850-v4-40M-Cache-2-10-GHz-|intel-E7-4850]]  |  4                      16                    32                      128                      |  1500 Go  |  1To                        2*10Gb/        | |  star243              Dell R930  |  1                            X            0                      [[https://ark.intel.com/fr/products/93806/Intel-Xeon-Processor-E7-4850-v4-40M-Cache-2-10-GHz-|intel-E7-4850]]  |  4                      16                    32                      128                      |  1500 Go  |  1To                        2*10Gb/        |
-|  star242              Dell R730  |  1                            Tesla P100  |  1                      [[https://ark.intel.com/fr/products/92986/Intel-Xeon-Processor-E5-2620-v4-20M-Cache-2-10-GHz-|intel-E5-2620]]  |  2                      8                    |  16                      32                        128 Go    1 To                      |                   +|  star242              Dell R730  |  1                            Tesla P100  |  1                      [[https://ark.intel.com/fr/products/92986/Intel-Xeon-Processor-E5-2620-v4-20M-Cache-2-10-GHz-|intel-E5-2620]]  |  2                      8                    |  16                      32                        128 Go    1 To                      |  2*10Gb/        
-|  TODO star[199-195]  |  Dell R415  |  5                            X            0                      [[https://www.cpubenchmark.net/cpu.php?cpu=AMD+Opteron+6134&id=1566|amd-opteron-6134]]                          1                      8                    |  16                      16                        32 Go    |  1 To                      |                   |+|  TODO star[199-195]  |  Dell R415  |  5                            X            0                      [[https://www.cpubenchmark.net/cpu.php?cpu=AMD+Opteron+6134&id=1566|amd-opteron-6134]]                          1                      8                    |  16                      16                        32 Go    |  1 To                      |  2*1Gb/         |
 |  TODO star[194-190]  |  Dell R415  |  5                            X            0                      [[https://www.cpubenchmark.net/cpu.php?cpu=AMD+Opteron+4184&id=278|amd-opteron-4184]]                          |  1                      6                    |  12                      12                        32 Go    |  1 To                      |  2*1Gb/         | |  TODO star[194-190]  |  Dell R415  |  5                            X            0                      [[https://www.cpubenchmark.net/cpu.php?cpu=AMD+Opteron+4184&id=278|amd-opteron-4184]]                          |  1                      6                    |  12                      12                        32 Go    |  1 To                      |  2*1Gb/         |
 ==== Architecture logicielle ==== ==== Architecture logicielle ====
Ligne 65: Ligne 66:
 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'exploitation debian testing. Vous pouvez trouvez la liste des logiciels installés dans la section [[leria:centre_de_calcul:cluster#listes_des_logiciels_installes_pour_le_calcul_haute_performance|listes des logiciels installés pour le calcul haute performance]].+Les nœuds de calcul fonctionnent avec un système d'exploitation debian stable. Vous pouvez trouvez la liste des logiciels installés dans la section [[leria:centre_de_calcul:cluster#listes_des_logiciels_installes_pour_le_calcul_haute_performance|listes des logiciels installés pour le calcul haute performance]].
  
 ==== Politique d'utilisation ==== ==== Politique d'utilisation ====
Ligne 276: Ligne 277:
 Voir aussi [[leria:centre_de_calcul:cluster#architecture_globale|architecture globale]]. Voir aussi [[leria:centre_de_calcul:cluster#architecture_globale|architecture globale]].
  
-Le cluster de calcul utilise un pool de serveurs de stockages distribués [[https://www.beegfs.io/content/|beegfs]] . Ce stockage beegfs est indépendant des serveurs de calcul. Cette zone de stockage est accessible naturellement dans l’arborescence de n'importe quel nœud de calcul sous /home/$USER. Étant donné que ce stockage est distant, toute lecture/écriture dans votre home est dépendante du réseau. Notre stockage Beegfs et le réseau sous-jacent sont très performant, mais pour certains traitement lourd, vous gagneriez peut-être à vous servir des disques locaux des serveurs de calcul. Pour ce faire, vous pouvez utiliser le répertoire /local_working_directory des serveurs de calculs. Ce répertoire fonctionne de la même manière que /tmp à la différence que les données sont persistante en cas de redémarrage du serveur.+  * Le cluster de calcul utilise un pool de serveurs de stockages distribués [[https://www.beegfs.io/content/|beegfs]] . Ce stockage beegfs est indépendant des serveurs de calcul. Cette zone de stockage est accessible naturellement dans l’arborescence de n'importe quel nœud de calcul sous /home/$USER. Étant donné que ce stockage est distant, toute lecture/écriture dans votre home est dépendante du réseau. Notre stockage Beegfs et le réseau sous-jacent sont très performant, mais pour certains traitement lourd, vous gagneriez peut-être à vous servir des disques locaux des serveurs de calcul. Pour ce faire, vous pouvez utiliser le répertoire /local_working_directory des serveurs de calculs. Ce répertoire fonctionne de la même manière que /tmp à la différence que les données sont persistante en cas de redémarrage du serveur.
  
 +  * Si vous souhaitez créer des groupes, merci d'envoyer un email à technique.info [at] listes.univ-angers.fr avec le nom du groupe et les utilisateurs associés.
 +
 +  * 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://slurm.schedmd.com/job_array.html|documentation officielle]].+Vous devriez commencer par lire la [[https://slurm.schedmd.com/job_array.html|documentation officielle]]. Cette [[http://scicomp.aalto.fi/triton/tut/array.html|page]] présente des cas d'utilisations intéressants.
  
-Si vous avez un grand nombre de fichier à traiter avec un seul exécutable, vous devez utiliser un [[https://slurm.schedmd.com/job_array.html|array job]].+Si vous avez un grand nombre de fichier ou de parametres à traiter avec un seul exécutable, vous devez utiliser un [[https://slurm.schedmd.com/job_array.html|array job]].
  
 C'est facile à mettre en œuvre, il suffit de rajouter l'option --array à notre script batch:  C'est facile à mettre en œuvre, il suffit de rajouter l'option --array à notre script batch: 
- 
-== Exemple == 
- 
-<code bash> 
-#! /bin/bash 
-# Options SBATCH : 
- 
-#SBATCH --job-name=name                   # Nom du Job 
-#SBATCH --mail-type=END                           # Notification par email de la 
-#SBATCH --mail-user=username@univ-angers.fr   # fin de l’exécution du job. 
-#SBATCH --array=1-500%10                   # 500 Jobs, 10 max en exécution 
- 
-# Traitement 
-/path/to/executable /path/to/rep_base_for_array_job/$SLURM_ARRAY_TASK_ID-fileName.txt 
-</code> 
- 
-Comme vous pouvez le voir, c'est la variable SLURM_ARRAY_TASK_ID qui nous permet de discriminer les fichiers à traiter. Le problème, c'est que nous n'avons pas forcément des fichiers à traiter qui soient nommé de manière à être traité de cette façon. 2 solutions s'offrent alors à vous: 
- 
-  * modifier le nom des fichiers en préfixant ceci par un numéro (simple et rapide) 
-  * utiliser les steps jobs (plus complexe, voir plus bas) 
- 
-Normalement, l'ensemble de vos fichiers à exécuter se trouve dans un répertoire. Pour ne pas préfixer directement le nom des fichiers, vous pouvez préfixer simplement vos fichiers avec des liens physiques comme dans l'exemple ci-dessous: 
- 
-<code bash> 
-#!/bin/bash 
-REP_BASE=/path/to/rep_base 
-REP_BASE_FOR_ARRAY_JOB=/path/to/rep_base_for_array_job 
- 
-mkdir $REP_BASE_FOR_ARRAY_JOB 
- 
-NUM=1 
- 
-for file in $(ls $REP_BASE) 
-do  
-  ln $REP_BASE/$file $REP_BASE_FOR_ARRAY_JOB/$NUM-$file 
-  NUM=$(expr $NUM + 1) 
-done  
- 
-exit 0 
-</code> 
  
 === Test paramétriques === === Test paramétriques ===
  
-On voit bien qu'il est assez facile d'utiliser les array jobs pour faire également des test paramétrique. C'est à dire, utiliser le même exécutable, éventuellement sur un même fichier, mais en faisant varier un paramètre en options de l’exécutable. Pour cela, si les paramètres sont contigus ou régulier, on utilisera un batch comme celui-ci:+Il est facile d'utiliser les array jobs pour faire des test paramétrique. C'est à dire, utiliser le même exécutable, éventuellement sur un même fichier, mais en faisant varier un paramètre en options de l’exécutable. Pour cela, si les paramètres sont contigus ou régulier, on utilisera un batch comme celui-ci:
  
 <code bash> <code bash>
Ligne 356: Ligne 320:
 --array=1-7:2 --array=1-7:2
 </code> </code>
 +=== Job pour multiples instances ===
 +
 +Il est courant de devoir exécuter un programme de nombreuses fois sur de nombreuses instances (benchmark).
 +
 +Soit l'arborescence suivante:
 +<code>
 +job_name
 +├── error
 +├── instances
 +│   ├── bench1.txt
 +│   ├── bench2.txt
 +│   └── bench3.txt
 +├── job_name_exec
 +├── output
 +└── submit_instances_dir.slurm
 +</code>
 +
 +Il est facile d'utiliser un array job pour exécuter job_name_exec sur l'ensemble des fichiers à traiter dans le répertoire instances. Il suffit d'éxécuter la commande suivante:
 +
 +  mkdir error output 2>/dev/null || sbatch --job-name=$(basename $PWD) --array=0-$(($(ls -1 instances|wc -l)-1)) submit_instances_dir.slurm
 +
 +avec le batch submit_instances_dir.slurm suivant:
 +
 +<code bash>
 +#!/bin/bash
 +
 +#SBATCH --mail-type=END,FAIL
 +#SBATCH --mail-user=YOUR-EMAIL
 +#SBATCH -o output/%A-%a
 +#SBATCH -e error/%A-%a
 +
 +#INSTANCES IS ARRAY OF INSTANCE FILE
 +INSTANCES=(instances/*)
 +
 +./job_name_exec ${INSTANCES[$SLURM_ARRAY_TASK_ID]}
 +</code>
 +
 +=== Job pour multiples instances avec multiples exécutions (Seed number) ===
 +
 +Parfois il faut lancer plusieurs fois l'exécution sur une instance en modifiant la graine qui permet de générer des nombres aléatoire.
 +
 +Soit l'arborescence suivante:
 +<code>
 +job_name
 +├── error
 +├── instances
 +│   ├── bench1.txt
 +│   ├── bench2.txt
 +│   └── bench3.txt
 +├── job_name_exec
 +├── output
 +├── submit_instances_dir_with_seed.slurm
 +└── submit.sh
 +</code>
 +
 +Il suffit d’exécuter la commande suivante:
 +
 +  ./submit.sh
 +
 +avec le fichier submit.sh suivant (pensez à modifier la variable NB_SEED):
 +
 +<code bash>
 +#!/bin/bash
 +
 +readonly NB_SEED=50
 +
 +for instance in $(ls instances)
 +do
 +  sbatch --output output/${instance}_%A-%a --error error/${instance}_%A-%a --array 0-${NB_SEED} submit_instances_dir_with_seed.slurm instances/${instance}
 +done
 +exit 0
 +</code>
 +
 +et le batch submit_instances_dir_with_seed.slurm suivant:
 +
 +<code bash>
 +#!/bin/bash
 +#SBATCH --mail-type=END,FAIL
 +#SBATCH --mail-user=YOUR-EMAIL
 +
 +echo "####### INSTANCE: ${1}"
 +echo "####### SEED NUMBER: ${SLURM_ARRAY_TASK_ID}"
 +echo
 +srun echo nomApplication ${1} ${SLURM_ARRAY_TASK_ID}
 +</code>
 +
 +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'instance dans le répertoire instance.
 +Vous retrouvez facilement vos sortie qui sont nommées comme ceci:
 +
 +  output/nom_instance-ID_job-graine 
 +
  
 === Dépendances entre job === === Dépendances entre job ===
Ligne 496: Ligne 551:
   * gilles.hunault   * gilles.hunault
  
 +==== Cplex ====
 +
 +Le Leria a une licence académique pour le logicielle Cplex.
 +
 +Le chemin pour la bibliothèque Cplex est le chemin par défaut /opt/ibm/ILOG/CPLEX_Studio129 (version 12.9)
 ===== FAQ ===== ===== FAQ =====
 +
 +  * Comment savoir quelles sont les ressources d'une partition, exemple avec la partition std:
 +
 +  user@stargate~# scontrol show Partition std
 + 
 +  * Que signifie "slurmstepd: error: get_exit_code task 0 died by signal: 15" ?
 +
 +Vous avez certainement dépassé les limites fixés (temps, mémoires, ...)
  
   * 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 573:
  
   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
- 
 </note> </note>
-  +
   * 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~# srun -w NODE_NAME -n1 -N1 --pty bash -i    user@stargate~# srun -w NODE_NAME -n1 -N1 --pty bash -i 
   user@NODE_NAME~#   user@NODE_NAME~#
 +
 +  * Comment puis je citer les ressources du LERIA dans mes rédactions scientifiques ?
 +
 +Vous pouvez utiliser l'entrée misc de bibtex suivante pour citer le cluster de calcul dans vos publications:
 +<code latex>
 +@Misc{HPC_LERIA,
 +    title = {High Performance Computing Cluster of LERIA},
 +    year = {2018},
 +    note = {slurm/debian cluster of 27 nodes(700 logical CPU, 2 nvidia GPU tesla k20m, 1 nvidia P100 GPU), 120TB of beegfs scratch storage}
 +  }
 +</code>
 ==== Erreur lors de la soumission de job ==== ==== Erreur lors de la soumission de job ====
  
Ligne 552: Ligne 630:
   * libtool   * libtool
   * libopenblas-base   * libopenblas-base
 +  * maven
   * nasm   * nasm
 +  * openjdk-8-jdk-headless
   * r-base   * r-base
   * r-base-dev   * r-base-dev
Ligne 601: Ligne 681:
 ==== Vue d'ensemble du cluster ==== ==== Vue d'ensemble du cluster ====
  
-https://leria.univ-angers.fr/grafana/d/_0Bh3sxiz/vue-densemble-du-cluster+https://grafana.leria.univ-angers.fr/d/_0Bh3sxiz/vue-densemble-du-cluster
  
 ==== Détails par nœuds ==== ==== Détails par nœuds ====
  
-https://leria.univ-angers.fr/grafana/d/000000007/noeuds-du-cluster+https://grafana.leria.univ-angers.fr/d/000000007/noeuds-du-cluster
  
 <note>Vous pouvez sélectionner le nœud qui vous intéresse en utilisant le menu déroulant "HOST"</note> <note>Vous pouvez sélectionner le nœud qui vous intéresse en utilisant le menu déroulant "HOST"</note>
leria/centre_de_calcul/cluster.txt · Dernière modification : 06/06/2023 17:00 de Chantrein Jean-Mathieu