Thau

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=defq

echo « 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 longFormat courtDescription
--job-name-JNom du job
--accountNom du projet
--nodes-NNombre de nœuds
--ntasks-nNombre de tâches au total
--ntasks-per-nodeNombre de tâches par nœud (doit correspondre au nombre total de tâches divisé par le nombre de nœuds)
--ntasks-per-coreNombre de tâches par cœurs (en général 1)
--partition-pGroupe de machines sur lequel le job va tourner
--memMé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-tLe temps maximum durant lequel le job va tourner (Passé ce délai, le job est automatiquement arrété)
--output-oLe nom du fichier oû sera écrit les sorties. Par défaut slurm-%j.out ou '%j' est le numéro du job
--error-eLe 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:SSTemps limite de votre job en heures, minutes et secondes.
--mail-userAdresse 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

slurm_exemples.zip

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).