Initiation au Cluster THAU
Adresse de connexion : thau-log.hpc-lr.univ-montp2.fr
Le gestionnaire d’environnement module
Le gestionnaire d’environnement module permet de configurer les variables d’environnements adaptées à votre programme Sélectionnez le compilateur, la bibliothèque MPI et les bibliothèques de routines scientifiques selon vos besoins :
GNU compilers, Intel icc/icpc/ifort
OpenMPI, Intel MPI, mpich, mvapich, mvapich2, etc…
Blas, Lapack, hdf5, fftw3, etc…
Exemple :
$ module load openmpi/gcc
$ module load gcc/4.8.2
Les principales options sont :
$ module available : Liste des modules disponibles.
$ module list : Liste des modules chargés dans votre environnement.
$ module show : Description du module.
$ module purge : Supprime tous les modules de votre environnement.
$ module add/load : Charge le module dans votre environnement.
$ module rm/unload : Supprime le module de votre environnement.
La liste des modules installés est disponible en bas de page
Utilisation du gestionnaire de tâche SLURM sur le cluster Thau
Il y a deux modes d’exécution d’un calcul :
⇒ Un mode d’exécution en temps réel avec la commande srun
⇒ Un mode d’exécution différé avec la commande sbatch.
Avec la commande « srun » les paramètres d’exécution sont renseignés en ligne. Avec la commande « sbach » les paramètres d’exécution sont renseignés dans un fichier bach.
Nous vous recommandons d’utiliser le mode différé.
Exemple de fichier bach :
#!/bin/sh
#SBATCH –job-name=test
#SBATCH -N 3
#SBATCH -n 9
#SBATCH –ntasks-per-node=3
#SBATCH –ntasks-per-core=1
#SBATCH –partition=defqecho « Running on: $SLURM_NODELIST »
mpirun ./mon_programme.exe
Le job nommé ‘test’ va s’exécuter sur 3 cœurs * 3 nœuds soit 9 cœurs au total. La queue de calcul est ‘defq’
La variable d’environnement $SLURM_NODELIST permet de récupérer le nom des nœuds sur les quels le job est exécuté.
Le tableau ci-dessous récapitule les principaux paramètres :
Format long | Format court | Description |
---|---|---|
--job-name | -J | Nom du job |
--account | Nom du projet | |
--nodes | -N | Nombre de nœuds |
--ntasks | -n | Nombre de tâches au total |
--ntasks-per-node | Nombre de tâches par nœud (doit correspondre au nombre total de tâches divisé par le nombre de nœuds) | |
--ntasks-per-core | Nombre de tâches par cœurs (en général 1) | |
--partition | -p | Groupe de machines sur lequel le job va tourner |
--mem | Mémoire réservée par nœud en MegaBytes? (Si cette option n’est pas spécifiée la totalité de la mémoire du nœud est allouée) | |
--time | -t | Le temps maximum durant lequel le job va tourner (Passé ce délai, le job est automatiquement arrété) |
--output | -o | Le nom du fichier oû sera écrit les sorties. Par défaut slurm-%j.out ou '%j' est le numéro du job |
--error | -e | Le nom du fichier oû seront écrit les messages d'erreur. Par défaut slurm-%j.err ou '%j' est le numero du job |
--time=HH:MM:SS | -t HH:MM:SS | Temps limite de votre job en heures, minutes et secondes. |
--mail-user | Adresse mail à laquelle les notifications seront envoyées |
Si vous exécutez un job OpenMP renseignez la variable d’environnement OMP_NUM_THREADS dans votre fichier batch à la suite des paramètres.
Exemple : export OMP_NUM_THREADS=12
Remarque : La commande « srun » peut être utilisée à l’intérieur d’un fichier batch que l’on exécute avec la commande « sbatch ». Dans ce cas les paramètres peuvent être renseignés à la suite de la commande srun.
Autres commandes SLURM utils :
$ squeue : Affiche la liste des jobs avec leurs états
$ scancel 221 : Supprime le job 221 de la queue
$ sinfo : Liste les partitions de calcul avec leurs caractéristiques
$ scontrol show jobid 221 : Affiche le détail du job 221
Décompte des heures sur le Cluster THAU
Les noeuds sont exclusifs, c’est à dire que 1 noeud = 24 coeurs.
→ Une heure de calcul réelle sur 1 noeud correspond à 24 heures cluster ←
La commande « mon_nbre_heure » est disponible à tout moment sur « thau-log » pour vous permettre de vérifier votre consommation d’heure de calcul.
Exemple de scripts optimisés pour le cluster THAU
Dans cette archive vous trouverez :
– un exemple de job MPI
– un exemple de job OpenMP
– un exemple de job MPI + OpenMP
A noter : Les paramètres utilisés dans les 3 exemples, optimisés pour l’utilisation de slurm, sont transférable à l’ensemble de vos job sous Slurm.
Environnement logiciel du Cluster Thau
Les logiciels suivant sont installés sous forme de modules dans le répertoire commun :
- Modules arborescence local : Cast3M/2019 GMT/5.2.1 ImageMagick/7.0.3-10 JDK/jdk.8_x64 Nlopt/2.6.1 R/3.6.1 R/3.6.1-tcltk R/4.0.2 VTK/7.1.1 VTK/8.1.1 automake/1.16.1 flex/2.6.4 gdal/2.1.2 gdal/3.0.1 geos/3.7.2 ghmm/1.0 go/12.9 gromacs/2019.4 gsl/2.3 gsl/2.4 intel/opencl-1.2-6.4.0.37 jre/jre.8_x64 julia/1.1.0 knem/1.1.2 lapack-with-PIC/3.7.0 libarchive/3.3.2 netcdf/4.4.1.1 pi4u/torc proj/6.1.1 python/3.5.2 python/3.5.2-bz2 python/3.7.2 python/3.8.2 python/3.8.3_shared_library python/Anaconda/3-5.1.0 sage/7.6 scite/3.7.1 singularity/2.2.1 singularity/2.4 singularity/2.6 singularity/3.3 singularity/3.5 squashfs/4.3 swig/3.0.11 vmd/1.9.3 xmgrace/5.1.25 - Modules arborescence cv-standard : R/3.3.1 R/3.4.3 blas/3.6.0 boost/1.61.0(default) boost/icc16/1.61.0 boost/impi/icc16/1.61.0 boost/mvapich2/1.61.0 boost/mvapich2/icc16/1.61.0 boost/openmpi/1.61.0 boost/openmpi/icc16/1.61.0 cmake/3.6.0(default) fftw2/2.1.5(default) fftw3/3.3.5(default) fftw3/3.3.8-test fftw3/mvapich2/3.3.5 fftw3/openmpi/3.3.5 fftw3-mvapich2/mvapich2/3.3.5 fftw3-openmpi/openmpi/3.3.5 gcc/4.9.3(default) gcc/5.3.0 gcc/6.1.0 gcc/7.5.0 gdb/7.11 git/2.9.3 hdf5/1.10.1(default) hdf5/1.8.17 hdf5/gcc49/1.10.1 hdf5/gcc49/1.8.17(default) hdf5/gcc53/1.10.1 hdf5/gcc53/1.8.17 hdf5/gcc61/1.10.1 hdf5/gcc61/1.8.17 hdf5/icc16/1.10.1 hdf5/icc16/1.8.17 hdf5/impi/icc16/1.10.1 hdf5/impi/icc16/1.8.17 hdf5/mvapich2/1.10.1 hdf5/mvapich2/1.8.17 hdf5/mvapich2/gcc49/1.10.1 hdf5/mvapich2/gcc49/1.8.17 hdf5/mvapich2/gcc53/1.10.1 hdf5/mvapich2/gcc53/1.8.17 hdf5/mvapich2/gcc61/1.10.1 hdf5/mvapich2/gcc61/1.8.17 hdf5/mvapich2/icc16/1.10.1 hdf5/mvapich2/icc16/1.8.17 hdf5/openmpi/1.10.1 hdf5/openmpi/1.8.17 hdf5/openmpi/gcc49/1.10.1 hdf5/openmpi/gcc49/1.8.17 hdf5/openmpi/gcc53/1.10.1 hdf5/openmpi/gcc53/1.8.17 hdf5/openmpi/gcc61/1.10.1 hdf5/openmpi/gcc61/1.8.17 hdf5/openmpi/icc16/1.10.1 hdf5/openmpi/icc16/1.8.17 hwloc/1.11.2 intel/advisor/32/2016.3.210 intel/advisor/32/2017.1.132 intel/advisor/64/2016.3.210 intel/advisor/64/2017.1.132 intel/clck/64/2016.3.210 intel/clck/64/2017.1.132 intel/clck/mic/2016.3.210 intel/clck/mic/2017.1.132 intel/compiler/32/2016.3.210 intel/compiler/32/2017.1.132 intel/compiler/64/2016.3.210 intel/compiler/64/2017.1.132 intel/daal/32/2016.3.210 intel/daal/32/2017.1.132 intel/daal/64/2016.3.210 intel/daal/64/2017.1.132 intel/inspector/32/2016.3.210 intel/inspector/32/2017.1.132 intel/inspector/64/2016.3.210 intel/inspector/64/2017.1.132 intel/ipp/32/2016.3.210 intel/ipp/32/2017.1.132 intel/ipp/64/2016.3.210 intel/ipp/64/2017.1.132 intel/itac/64/2016.3.210 intel/itac/64/2017.1.132 intel/mkl/32/2016.3.210 intel/mkl/32/2017.1.132 intel/mkl/64/2016.3.210 intel/mkl/64/2017.1.132 intel/mkl/mic/2016.3.210 intel/mkl/mic/2017.1.132 intel/mpi/64/2016.3.210 intel/mpi/64/2017.1.132 intel/omnipath/64/libpsm2-10.3.8-3 intel/runtime/32/2016.3.210 intel/runtime/32/2017.1.132 intel/runtime/64/2016.3.210 intel/runtime/64/2017.1.132 intel/tbb/32/2016.3.210 intel/tbb/32/2017.1.132 intel/tbb/64/2016.3.210 intel/tbb/64/2017.1.132 intel/vtune/32/2016.3.210 intel/vtune/32/2017.1.132 intel/vtune/64/2016.3.210 intel/vtune/64/2017.1.132 lapack/3.6.1 matplotlib/py27/1.5.3 mvapich2/gcc49/2.2rc2 mvapich2/gcc53/2.2rc2 mvapich2/gcc61/2.2rc2 mvapich2/psm/2.2rc2 mvapich2/psm/icc16/2.2rc2 mvapich2/psm2/2.2rc2 mvapich2/psm2/gcc49/2.2rc2(default) mvapich2/psm2/gcc53/2.2rc2 mvapich2/psm2/gcc61/2.2rc2 mvapich2/psm2/icc16/2.2rc2 numpy/py27/1.11.2 openblas/0.2.18(default) openmpi/icc17/2.0.1 openmpi/psm2/2.0.1 openmpi/psm2/3.1.6 openmpi/psm2/gcc49/2.0.1(default) openmpi/psm2/gcc49/3.1.6 openmpi/psm2/gcc53/2.0.1 openmpi/psm2/gcc53/3.1.6 openmpi/psm2/gcc61/2.0.1 openmpi/psm2/gcc61/3.1.6 openmpi/psm2/gcc75/3.1.6 openmpi/psm2/icc17/2.0.1 openmpi/psm2/icc17/3.1.6 openmpi/psm2/old.version python/2.7.12(default) qt/gcc/4.8.6 scalapack/mvapich2/2.0.2 scalapack/openmpi/2.0.2 scilab/5.5.2 scipy/py27/0.18.1 valgrind/3.11.0 - Modules arborescence cv-advanced : M2/1.9.2 gromacs/openmpi-2.0.1-psm2/gcc-6.1.0/5.1.4 metis/4.0.3(default) metis/5.1.0 metis/icc16/4.0.3 metis/icc16/5.1.0 namd/impi-5.1.3/gcc-6.1.0/2.11 namd/ompi-2.0.1-psm2/2.11 paraview/gcc49-ompi-qt-mesa/5.1.0 parmetis/impi/icc16/4.0.3 parmetis/mvapich2/4.0.3 parmetis/mvapich2/icc16/4.0.3 parmetis/openmpi/4.0.3 parmetis/openmpi/icc16/4.0.3 scotch/6.0.4(default) scotch/icc16/6.0.4 |
Vous avez la possibilité d’installer vos logiciels dans votre espace utilisateur, sous réserve bien évidemment de vous êtres acquitté des droits éventuels liés à cette utilisation (cas de logiciels payant).