Différences
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 | ||
recherche:cluster [29/04/2021 13:34] – [Intro et logiciels] aurelien.villani | recherche:cluster [17/07/2024 13:54] (Version actuelle) – modification des liens maurice | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Cluster ====== | ====== Cluster ====== | ||
- | Sur cette page, tips and tricks concernant le cluster, ainsi qu'un lien vers les logiciels spécifiques | + | |
===== Intro et logiciels ===== | ===== Intro et logiciels ===== | ||
* La doc que vous recevez à la création de compte est [[http:// | * La doc que vous recevez à la création de compte est [[http:// | ||
- | * Le pole [[https:// | + | * Le pole [[https:// |
+ | * Vous pouvez joindre les admins à [[centaure-admins@listes.emse.fr]] | ||
* **La liste des logiciels** disponible est sur [[recherche: | * **La liste des logiciels** disponible est sur [[recherche: | ||
- | ===== Nettoyage de jobs plantés | + | ===== Lancement massif de jobs: slurm array ===== |
+ | Il peut arriver que vous vouliez lancer massivement des jobs. Comment économiser les licences, ou simplement respecter les autres utilisateurs ? | ||
+ | Avec les slurm arrays, vous définissez une pile et un nombre maximum de jobs concurrents, | ||
+ | Dans le fichier job, ajoutez avec les commandes spéciales slurm du début la ligne suivante: | ||
+ | |||
+ | < | ||
+ | #SBATCH --array 1-500%10 | ||
+ | </ | ||
+ | |||
+ | Ainsi, vous définissez avoir 500 jobs à lancer, mais n'en autorisez que 10 en simultané. Vous disposez alors d'une variable " | ||
+ | |||
+ | < | ||
+ | module purge | ||
+ | module load anaconda/ | ||
+ | cd $SCRATCH | ||
+ | srun python array_job.py $SLURM_ARRAY_TASK_ID | ||
+ | </ | ||
+ | |||
+ | Et le python correspondant: | ||
+ | < | ||
+ | import sys | ||
+ | import time | ||
+ | |||
+ | print(' | ||
+ | time.sleep(10) | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | Les fichiers exemples sont {{ : | ||
+ | |||
+ | ===== Tips ===== | ||
+ | |||
+ | ==== Nettoyage de jobs plantés ==== | ||
Parfois, des job annulés ou finis restent sur les noeuds: il faut les tuer à la main. | Parfois, des job annulés ou finis restent sur les noeuds: il faut les tuer à la main. | ||
Ligne 32: | Ligne 66: | ||
` show_process.sh MON_LOGIN` | ` show_process.sh MON_LOGIN` | ||
- | ==== | ||
- | **Un fois les noeuds identifiés: | + | |
+ | **Une fois les noeuds identifiés: | ||
On voit, par exemple, que le job a été lancé sur `compute-1-1`, | On voit, par exemple, que le job a été lancé sur `compute-1-1`, | ||
Ligne 49: | Ligne 83: | ||
Voilà ! | Voilà ! | ||
- | ===== Super squeue | + | ==== Super squeue ==== |
Pour que la sortie donnée par la commande _squeue_ soit vraiment utile, vous pouvez configurer un alias pour votre shell. Ca colore vos propre job, étend la colonne avec le nom, etc. | Pour que la sortie donnée par la commande _squeue_ soit vraiment utile, vous pouvez configurer un alias pour votre shell. Ca colore vos propre job, étend la colonne avec le nom, etc. | ||
Ligne 55: | Ligne 89: | ||
< | < | ||
- | alias squeue=' | + | alias squeue=' |
</ | </ | ||
- | ===== Jupyter lab ==== | + | ==== Créer un module pour votre code utilisable avec module load ==== |
- | :new: | + | |
- | + | ||
- | On peut avoir un [[https:// | + | |
- | + | ||
- | **Avant toute chose !** Python est séquentiel, | + | |
- | + | ||
- | < | + | |
- | module load tools/ | + | |
- | cluster-create-slurm-script-01.sh -jupyter-lab | + | |
- | </ | + | |
- | Çà utilise le module anaconda/ | + | |
- | + | ||
- | + | ||
- | Faites vos résas comme d' | + | |
- | Procédez ensuite comme suit (en anglais parce voilà, comme dans le job): | + | |
- | + | ||
- | You now have to connect to your notebook. Open slurm-XXX.out | + | |
- | + | ||
- | - Open a terminal from your desktop (NOT centaure) and create a tunnel to the compute where you notebook has been assigned, with the command below. It will have the correct values in the slurm-XXX.out. If you want the tunnel to stay in the background, remove use 'ssh -f ...' | + | |
- | ssh -L \${port}: | + | |
- | - Now look for the connection link to paste in your browser in the bottom of the file. It looks like %%`http:// | + | |
- | - Happy notebook use ! | + | |
- | - **VERY IMPORTANT**: | + | |
- | + | ||
- | + | ||
- | __Notes:__ | + | |
- | * Attention à la durée de réservation, | + | |
- | * Si vous voulez lancer avec un autre module python, modifiez le fichier job. Après `module load anaconda/ | + | |
- | * **Non recommandé, | + | |
- | * 'srun -p intensive.q --time=00: | + | |
- | * ça vous mets sur, par exemple, compute-0-5 | + | |
- | * 'mkdir / | + | |
- | * `module load anaconda/ | + | |
- | * trouvez un port libre: `comm -23 <(seq 7777 8888 | sort) <(ss -Htan | awk ' | + | |
- | * `jupyter-lab --no-browser --port=8146` | + | |
- | * faites le tunnel `ssh -L 8146: | + | |
- | * connectez vous depuis votre navigateur %%`http:// | + | |
- | * `File-> | + | |
- | * rapatriez vos données du scratch avec un scp | + | |
- | + | ||
- | ===== Créer un module pour votre code utilisable avec module load ===== | + | |
Let's say you want to use your code, for instance, **flatori**, | Let's say you want to use your code, for instance, **flatori**, | ||
Ligne 129: | Ligne 122: | ||
//Et voilà//, now you can see your module when typing `module avail`, and in our case, do `module load flatori/R0` | //Et voilà//, now you can see your module when typing `module avail`, and in our case, do `module load flatori/R0` | ||
+ | |||
+ | |||
+ | |||