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 16:38] 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/centaure | 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.
 +
 +===== 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 ===== ===== Tips =====
Ligne 57: 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>
  
Ligne 91: Ligne 123:
 //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`
  
-===== Jupyter lab ==== 
-: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 
  
  
  
  
  • recherche/cluster.1619707125.txt.gz
  • Dernière modification : 29/04/2021 16:38
  • de aurelien.villani