Utilisation d’Underworld depuis MESO@LR à travers un exemple
Vous trouverez sur MESO@LR des informations concernant le Cluster de calcul haute performance Muse.
L’exemple choisi est celui ici de Thermomechanical Model disponible à partir de la page : Tutorial_1_ThermoMechanical_Model.ipynb
Comment convertir un fichier .ipynb en fichier .py sur son ordinateur en local (exemple après avoir téléchargé le modèle “Thermomechanical Model” depuis le lien ci-dessus) :
[nom_user_local@localhost]$jupyter-nbconvert --to python Tutorial_1_ThermoMechanical_Model.ipynb
Comment transférer le fichier fichier .py depuis son ordinateur en local vers son répertoire de travail DemModelUW sur Muse :
Dans le shell de muse, au niveau du répertoire de l’utilisateur (par exemple : /home/nom_user/work_underworld), on créé d’abord le répertoire où sera copié l’exemple d’Underworld :
Connexion au cluster Muse via le protocole SSH :
ssh -X nom_user@muse-login.hpc-lr.univ-montp2.fr
IMPORTANT : “nom_user” est à remplacer par le nom de l’utilisateur de Muse.
Création du répertoire DemoModelUW :
[nom_user@muse-login01]$cd work_underworld
[nom_user@muse-login01 work_underworld]$mkdir DemoModelUW
[nom_user@muse-login01]$cd work_underworld
[nom_user@muse-login01 work_underworld]$mkdir DemoModelUW
Puis on copie notre fichier local Tutorial_1_ThermoMechanical_Model.py depuis son ordinateur vers son répertoire de travail sur Muse :
[nom_user_local@localhost]$scp Tutorial_1_ThermoMechanical_Model.py nom_user@muse-login.hpc-lr.univ-montp2.fr:/home/nom_user/work_underworld/DemoModelUW
Puis dans le shell de muse, on se place dans le répertoire DemoModelUW :
[nom_user@muse-login01 work_underworld]$cd DemoModelUW
On charge le module Singularity:
[nom_user@muse-login01 DemoModelUW]$module load singularity/3.6.3
On fixe les variables d’enrironnement qui seront utilisées à l’intérieur du conteneur Singularity, après avoir pris soin de récupérer le fichier setImageUW2-10-2.sh :
[nom_user@muse-login01 DemoModelUW]$cp /trinity/shared/apps/local/underworld2/2.10.2/setImageUW2-10-2.sh .
[nom_user@muse-login01 DemoModelUW]$ ./setImageUW2-10-2.sh
On charge l’image d’Underworld disponible sur hpc@lr :
[nom_user@muse-login01 DemoModelUW]$singularity shell /trinity/shared/apps/local/underworld2/2.10.2/underworld2-10-2.sif
Là on arrive dans le shell de singularity. On tape la commande suivante pour exécuter son fichier python :
Singularity> python3 Tutorial_1_ThermoMechanical_Model.py
Singularity>exit #on sort du shell singularity
Autre manière de procéder : en lançant la commande python depuis l’extérieur du conteneur Singularity :
[nom_user@muse-login01 DemoModelUW]$ ./setImageUW2-10-2.sh
[nom_user@muse-login01 DemoModelUW]$ srun -p gladys singularity exec /trinity/shared/apps/local/underworld2/2.10.2/underworld2-10-2.sif python3 Tutorial_1_ThermoMechanical_Model.py
Comment exécuter Underworld dans le conteneur Singularity, en utilisant 2 noeuds (exemple avec 4 processeurs sur un modèle parallèle noté ici model.py) sur la partition gladys :
[nom_user@muse-login01 mon_rep_travail]$srun -N 2 -n 4 -p gladys singularity exec /trinity/shared/apps/local/underworld2/2.10.2/underworld2-10-2.sif bash -c "python3 model.py"
Comment utiliser un fichier slurm pour lancer un job utilisant Underworld sur hpc :
Il est possible sur le cluster Muse d’utiliser un fichier slurm pour lancer son script utilisant Underworld :
On crée d’abord le fichier DemoMoelUW.slurm :
[nom_user@muse-login01 work_underworld]$nano DemoModelUW.slurm
A l’intérieur, on copie le script suivant, en prenant soin de remplacer “nom_user” par son nom d’utilisateur Muse :
#!/bin/bash
#
#SBATCH -n 4
#walltime (hh:mm:ss)
#SBATCH -t 00:10:00
#My job name (displayed by the queue)
#SBATCH -J DemoModelUW
#Specify the partition
#SBATCH --partition=gladys
# Notification by mail concerning the job : begin, end,…
#SBATCH --mail-type=ALL
#SBATCH --mail-user=user-mail@umontpellier.fr
# --- END OF SLURM BATCH SCRIPT HEADER
#Loading the required modules
module purge
module load singularity/3.6.3
# Go to the directory of example DemoModelUW, change the nom_user by your username !!
cd /home/nom_user/work_underworld/DemoModelUW
# Copie and execute the setImageUW2-10-2.sh to set the variable
cp /trinity/shared/apps/local/underworld2/2.10.2/setImageUW2-10-2.sh .
./setImageUW2-10-2.sh
# Execute the python file in the Singularity
singularity exec /trinity/shared/apps/local/underworld2/2.10.2/underworld2-10-2.sif python3 Tutorial_1_ThermoMechanical_Model.py
# all done
echo "Job finished"
Puis après avoir sauvegarder le fichier DemoModelUW.slurm, on lance toujours sur muse le job avec la commande :
[nom_user@muse-login01 work_underworld]$sbatch DemoModelUW.slurm
On peut utiliser la commande slurm squeue pour afficher la liste des jobs
[nom_user@muse-login01 DemoModelUW]$squeue
2258242 gladys DemoMode nom_user R 1:04 1 muse033
Comment rapatrier l’exemple depuis Muse en local sur son ordinateur :
Sur Muse, les noeuds de calcul ne permettent pas de faire de la visualisation. Pour ce faire, nous devons d’abord rapatrier notre exemple sur notre ordinateur pour ensuite pouvoir faire du post-traitement.
Ainsi, quand le job est terminé sur Muse, il faut archiver le répertoire DemoModelUW pour pouvoir le rapatrier en local :
[nom_user@muse-login01 work_underworld]$tar -czvf DemoModelUW.tar.gz DemoModelUW/
On obtient l’archive : DemoModelUW.tar.gz
Ensuite en local, on rapatrie depuis le serveur muse l’archive DemoModelUW.tar.gz via la commande sécurisée scp directement dans son répertoire local où l’on souhaite disposer de l’exemple DemoModelUW :
“nom_user_local” est le nom de l’utilisateur sur la machine en local.
[nom_user_local@localhost]$ scp nom_user@muse-login.hpc-lr.univ-montp2.fr:/home/nom_user/work_underworld/DemoModelUW.tar.gz /home/nom_user_local/DemoModelUW/
On décompresse l’archive avec la commande linux tar -xzvf (ou avec WinRAR par exemple sous Windows) :
[nom_user_local@localhost DemoModelUW]$ tar -xzvf DemoModelUW.tar.gz
Puis on visualise en local avec par exemple le logiciel ParaView.