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 [08/02/2019 10:10] – [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 284: Ligne 284:
 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]].
  
-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 355: Ligne 315:
 # Valeur séparé par des sauts de +2: 1, 3, 5 et 7 # Valeur séparé par des sauts de +2: 1, 3, 5 et 7
 --array=1-7:2 --array=1-7:2
 +</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@univ-angers.fr
 +#SBATCH -o output/%A-%a
 +#SBATCH -e error/%A-%a
 +
 +#INSTANCES IS ARRAY OF INSTANCE FILE
 +INSTANCES=(instances/*)
 +
 +bash exec.bash ${INSTANCES[$SLURM_ARRAY_TASK_ID]}
 </code> </code>
  
Ligne 505: Ligne 501:
  
   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 ====
  
leria/centre_de_calcul/cluster.txt · Dernière modification : 06/06/2023 17:00 de Chantrein Jean-Mathieu