recherche: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é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.villanirecherche: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://sms-nas.emse.fr/isn_lgf/index.php/serveurs-de-calcul | sur la baie ]] +  * La doc que vous recevez à la création de compte est [[http://sms-nas.emse.fr/isn_lgf/index.php/serveurs-de-calcul/centaure | sur la baie ]] 
-  * Le pole [[https://services-numeriques.emse.fr/pole-csn/| Calcul et Simulation Numérique]] dispose d'une page [[https://services-numeriques.emse.fr/pole-csn/cluster-centaure/ | cluster]] avec une rubrique [[https://services-numeriques.emse.fr/pole-csn/formation/| formation]]. Consultez là ! :)+  * Le pole [[https://services-numeriques.emse.fr/calcul-intensif-hpc/| Calcul Intensif]] dispose d'une page [[https://services-numeriques.emse.fr/calcul-intensif-hpc/cluster-calcul/ | cluster]] avec un [[https://services-numeriques.emse.fr/calcul-intensif-hpc/outils/| guide pratique]]. Consultez le ! :) 
 +  * Vous pouvez joindre les admins à [[centaure-admins@listes.emse.fr]]
  
   * **La liste des logiciels** disponible est sur [[recherche:Cluster:softwares]], ainsi que comment compiler certaines choses sur votre home.   * **La liste des logiciels** disponible est sur [[recherche:Cluster:softwares]], ainsi que comment compiler certaines choses sur votre home.
  
-===== 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, qui piochent dans cette pile. 
 +Dans le fichier job, ajoutez avec les commandes spéciales slurm du début la ligne suivante: 
 + 
 +<Code:bash> 
 +#SBATCH --array 1-500%10 
 +</Code> 
 + 
 +Ainsi, vous définissez avoir 500 jobs à lancer, mais n'en autorisez que 10 en simultané. Vous disposez alors d'une variable "$SLURM_ARRAY_TASK_ID" que vous pouvez utiliser de la sorte (par exemple, avec python): 
 + 
 +<Code:bash> 
 +module purge 
 +module load anaconda/python3 
 +cd $SCRATCH 
 +srun python array_job.py $SLURM_ARRAY_TASK_ID 
 +</Code> 
 + 
 +Et le python correspondant: 
 +<Code:python> 
 +import sys  
 +import time 
 + 
 +print('Job num {:d}. Dodo 10s...'.format(int(sys.argv[1]))) 
 +time.sleep(10) 
 +print("voila"
 +</Code> 
 + 
 +Les fichiers exemples sont {{ :recherche:cluster:slurm_array.tar.gz | ici}}  
 + 
 +===== 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`, donc on s'y connecte: On voit, par exemple, que le job a été lancé sur `compute-1-1`, donc on s'y connecte:
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:
  
 <Code:shell> <Code:shell>
-alias squeue='squeue -o "%.5i %.9P %.22j %.8u %.2t %.10M %.5D %R" | GREP_COLOR="01;31" egrep --color=always "^.*$USER PD.*$|$" | GREP_COLOR="01;32" egrep -i --color=always "^.*$USER  R.*$|$"'+alias squeue='squeue -o "%.8i %.9P %.22j %.8u %.2t %.10M %.5D %R" | GREP_COLOR="01;31" egrep --color=always "^.*$USER PD.*$|$" | GREP_COLOR="01;32" egrep -i --color=always "^.*$USER  R.*$|$"'
 </Code> </Code>
  
-===== Jupyter lab ==== +==== Créer un module pour votre code utilisable avec module load ====
-:new: +
- +
-On peut avoir un [[https://jupyter.org|JupyterLab]] fonctionnel, qui tourne proprement sur un noeud du cluster avec une réservation. +
- +
-**Avant toute chose !** Python est séquentiel, sauf si vous lui dites autrement, et sauf librairies très spécifiques. Autrement dit, dans 99% des cas, ne réservez qu'un cœur pour votre notebook (ou renseignez vous sur les librairies que vous utilisez) +
- +
-<Code:shell> +
-module load tools/cluster-bin +
-cluster-create-slurm-script-01.sh -jupyter-lab +
-</Code> +
-Çà utilise le module anaconda/python3. +
- +
- +
-Faites vos résas comme d'habitude et soumettez. Si le job démarre alors que vous êtes conencté sur centaure, un message pop pour vous dire de regarder le fichier slurm-XXX.out. +
-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 ...'  Otherwise, don't forget to kill the tunnel once done. <Code:shell> +
-   ssh -L \${port}:localhost:\${port} cluster ssh -L \${port}:localhost:\${port} -N \${computenode} </Code> +
-  - Now look for the connection link to paste in your browser in the bottom of the file. It looks like %%`http://localhost:YYYY/?token=XXXXX`%% +
-  - Happy notebook use ! +
-  - **VERY IMPORTANT**: when you are finished and havesaved your notebook, you **must**, in jupyterlab, click on the menu: `File->Shut Down` . This way, the slurm job will finish properly, and your data will be copied back on your home folder (as usual in a subfolder 'youname-$SLURM_JOB_ID'. If you do a scancel, you will have to copy your data from the compute scratch yourself and risk data loss if not done in the next days. +
- +
- +
-__Notes:__  +
-  * Attention à la durée de réservation, dans un sens comme  dans l'autre. Si vous demandez une heure, au bout d'une heure, vous êtes éjecté, comme un job normal ! +
-  * Si vous voulez lancer avec un autre module python, modifiez le fichier job. Après `module load anaconda/python3`, ajoutez une ligne `conda activate mon_env` +
-  * **Non recommandé, sauf si vous savez ce que vous faites.** Vous pouvez aussi lancer une résa en interactif et tout faire en manuel, par exemple +
-      * 'srun -p intensive.q --time=00:30:00 --ntasks-per-node 1 --pty bash' +
-      * ça vous mets sur, par exemple, compute-0-5 +
-      * 'mkdir /scratch/villani_monjupyter && cd scratch/villani_monjupyter' +
-      * `module load anaconda/python3` (ou 2, ou autre, puis charger un de vos environnements locaux avec `conda activate mon_env`) +
-      * trouvez un port libre: `comm -23 <(seq 7777 8888 | sort) <(ss -Htan | awk '{print $4}' | cut -d':' -f2 | sort -u)| shuf | head -n 1` ça vous sors par exemple 8146 +
-      * `jupyter-lab --no-browser --port=8146` +
-      * faites le tunnel `ssh  -L 8146:localhost:8146 cluster ssh -L 8146:localhost:8146 -N compute-0-5` +
-      * connectez vous depuis votre navigateur %%`http://127.0.0.1:8146/?token=XXXX`%% +
-      * `File->Shut Down` quand vous avez finis +
-      * 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**, on the cluster. Let's say you want to use your code, for instance, **flatori**, on the cluster.
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`
 +
 +
 +
  
  
  • recherche/cluster.1619696045.txt.gz
  • Dernière modification : 29/04/2021 13:34
  • de aurelien.villani