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:27] 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 ===+=== Test paramétriques === 
 + 
 +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>
-#! /bin/bash +#!/bin/bash 
-Options SBATCH :+#SBATCH -J Job_parametre_régulier 
 +#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,fail 
 +#SBATCH --mail-user=username@univ-angers.fr 
 +/path/to/exec --optionParamExec $SLURM_ARRAY_TASK_ID  
 +</code>
  
-#SBATCH --job-name=name                   # Nom du Job +L'options --array peut prendre des syntaxes particulièrespour des valeurs irrégulières ou pour des sauts de valeurs:
-#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 Jobs10 max en exécution+
  
-Traitement +<code bash> 
-/path/to/executable /path/to/rep_base_for_array_job/$SLURM_ARRAY_TASK_ID-fileName.txt+Valeurs irrégulières 0,3,7,11,35,359 
 +--array=0,3,7,11,35,359 
 + 
 +# Valeur séparé par des sauts de +2: 1, 3, 5 et 7 
 +--array=1-7:2
 </code> </code>
 +=== Job pour multiples instances ===
  
-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çon2 solutions s'offrent alors à vous:+Il est courant de devoir exécuter un programme de nombreuses fois sur de nombreuses instances (benchmark).
  
-  * modifier le nom des fichiers en préfixant ceci par un numéro (simple et rapide) +Soit l'arborescence suivante: 
-  * utiliser les steps jobs (plus complexe, voir plus bas)+<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
  
-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:+avec le batch submit_instances_dir.slurm suivant:
  
 <code bash> <code bash>
 #!/bin/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+#SBATCH --mail-type=END,FAIL 
 +#SBATCH --mail-user=YOUR-EMAIL 
 +#SBATCH -o output/%A-%a 
 +#SBATCH -e error/%A-%a
  
-NUM=1+#INSTANCES IS ARRAY OF INSTANCE FILE 
 +INSTANCES=(instances/*)
  
-for file in $(ls $REP_BASE) +./job_name_exec ${INSTANCES[$SLURM_ARRAY_TASK_ID]} 
-do  +</code>
-  ln $REP_BASE/$file $REP_BASE_FOR_ARRAY_JOB/$NUM-$file +
-  NUM=$(expr $NUM + 1) +
-done +
  
-exit 0+=== 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> </code>
  
-==== Test paramétriques ====+Il suffit d’exécuter la commande suivante:
  
-On voit bien qu'il est assez facile d'utiliser les array jobs pour faire également des test paramétriqueC'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écutablePour cela, si les paramètres sont contigus ou régulier, on utilisera un batch comme celui-ci:+  ./submit.sh 
 + 
 +avec le fichier submit.sh suivant (pensez à modifier la variable NB_SEED):
  
 <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 -p intel-E5-2670 +  sbatch --output output/${instance}_%A-%a --error error/${instance}_%A-%a --array 0-${NB_SEED} submit_instances_dir_with_seed.slurm instances/${instance} 
-#SBATCH -o %A-%a.out +done 
-#SBATCH -%A-%a.err +exit 0
-#SBATCH --mail-type=end,fail +
-#SBATCH --mail-user=username@univ-angers.fr +
-/path/to/exec --optionParamExec $SLURM_ARRAY_TASK_ID +
 </code> </code>
  
-L'options --array peut prendre des syntaxes particulières, pour des valeurs irrégulières ou pour des sauts de valeurs:+et le batch submit_instances_dir_with_seed.slurm suivant:
  
 <code bash> <code bash>
-Valeurs irrégulières 0,3,7,11,35,359 +#!/bin/bash 
---array=0,3,7,11,35,359+#SBATCH --mail-type=END,FAIL 
 +#SBATCH --mail-user=YOUR-EMAIL
  
-Valeur séparé par des sauts de +2: 1, 3, 5 et 7 +echo "####### INSTANCE${1}" 
---array=1-7:2+echo "####### SEED NUMBER${SLURM_ARRAY_TASK_ID}" 
 +echo 
 +srun echo nomApplication ${1} ${SLURM_ARRAY_TASK_ID}
 </code> </code>
  
-==== 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'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 ===
  
 Vous pouvez déterminer des dépendances entre jobs via l'options --depend de sbatch: Vous pouvez déterminer des dépendances entre jobs via l'options --depend de sbatch:
  
-=== Exemple ===+== Exemple ==
  
 <code bash> <code bash>
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