Documentation utilisateurs

Connexion au calculateur haute performance Muse

La connexion au cluster de calcul haute performance se fait via le protocole SSH. Le nom d’hôte de la machine de connexion est « muse-login.hpc-lr.univ-montp2.fr ».

Suivant votre système d’exploitation, vous pouvez vous y connecter comme suit :

Sous linux :

Ouvrir une connexion ssh dans un terminal en tapant la commande suivante : « ssh -X « nom_utilisateur »@muse-login.hpc-lr.univ-montp2.fr »
(L’option -X permet d’avoir un affichage graphique)

Sous windows :

Installer le logiciel putty , ouvrir putty en remplissant les champs de configuration comme suit :
– Hostname : « muse-login.hpc-lr.univ-montp2.fr »
– Connection type : « SSH »

Cliquer ensuite sur « Open » et remplir les champs « login as» et « password » avec ceux fournis lors de la création du compte.
Vous êtes connecté au cluster Muse.

Si vous souhaitez obtenir un affichage graphique, installer le logiciel Xming et l’ouvrir. Rajouter l’option suivante avant d’appuyer sur « Open » dans putty :

« Category > Connection > SSH > X11 > Cocher  Enable X11 forwarding »

Sous Mac :

Installer Xquartz et l’ouvrir
Entrer la commande :
ssh -X « nom_utilisateur »@muse-login.hpc-lr.univ-montp2.fr

Quelque soit votre système d’exploitation, lors de la première connexion pensez à utiliser la commande « passwd » sur le cluster pour changer le mot de passe par défaut.


Premier pas sous un environnement Linux

Le cluster est sous Linux et ne possède pas d’interface graphique. A cet effet, voici une liste de commandes vous permettant de réaliser des actions basiques une fois connecté :
– ls : liste le contenu de votre répertoire
– cd « chemin_du_dossier » : pour se déplacer dans les sous dossiers de votre répertoire
– pwd : affiche le répertoire courant
– mv (ou cp) fichier_base fichier_destination : déplace (ou copie) un fichier
– mkdir « nom_dossier » : crée un sous-dossier dans le répertoire courant
– vim (ou nano) « fichier_texte » : édite un fichier (le crée si il n’existe pas)
– cat « fichier_texte » : affiche le contenu du fichier

N’hésitez pas à consulter le site suivant pour découvrir d’autres possibilités https://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base


Le gestionnaire d’environnement module

Le gestionnaire d’environnement module permet de configurer les variables d’environnements adaptées à votre programme. Les modules fonctionnent par groupe. Pour obtenir l’ensemble des modules d’un groupe, il vous faut utiliser la commande « module load group ». Par exemple, pour le module le plus courant est « module load cv-standard » et ensuite vous pouvez taper « module available » pour obtenir la liste des modules présents dans le groupe « cv-standard ». Sélectionnez ensuite le compilateur, la bibliothèque MPI et les bibliothèques de routines scientifiques selon vos besoins et chargez-les :

GNU compilers, Intel icc/icpc/ifort
OpenMPI, Intel MPI, mpich, mvapich, mvapich2, etc…
Blas, Lapack, hdf5, fftw3, etc…
Exemple :
$ module load openmpi/2.0.1
$ module load gcc/4.9.3

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 MUSE

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 « sbatch » les paramètres d’exécution sont renseignés dans un fichier batch.
Nous vous recommandons d’utiliser le mode différé.

Exemple de fichier batch :

#!/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
#SBATCH –time=01:00:00

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’ et avec une durée limite d’une heure.
La variable d’environnement $SLURM_NODELIST permet de récupérer le nom des nœuds sur les quels le job est exécuté.

Chaque ligne commençant par « #SBATCH  » décrit un paramètre SLURM. Il est important que ces paramètres se trouvent en haut de fichier avant la première instruction à exécuter.
Remarque : Pour certains paramètres (mais pas tous) il existe deux écritures différentes. Une écriture longue et une écriture courte. Ainsi le nom du job peut être déclaré par ‘–job-name=test’ ou par ‘-J test’. Le nombre de nœuds de calcul peut être déclaré par ‘–nodes=3’ ou par ‘-N 3’ (notez que la syntaxe est un peu différence selon le format utilisé).

Attention au temps de calcul par défaut les queues de calcul « defq » et « thau-smp » ont un temps d’allocation de
7 jours par défaut
Avant de lancer votre Job, le système vérifie que vous disposez du quota suivant :  (7 jours * 24heures * nombres de coeurs demandés pour votre job)
Si vous ne disposez pas du quota nécessaire vous aurez les messages d’erreur suivant : « queued and waiting for resources »  (avec la commande squeue : « QOSGrpCPUMinutesLimit »)

Pour pallier à cela vous devez ajouter la variable « –time=HH:MM:SS » en indiquant le nombre d’heures que vous estimez nécessaire à la réalisation du calcul
Notre conseil : arrondir au-dessus. Il ne s’agit que d’une estimation et non pas un décompte d’heure réel
Seules les heures réellement calculées seront déduites de votre quota

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 MUSE

La commande « mon_nbre_heures » est disponible à tout moment sur « muse-login » pour vous permettre de vérifier votre consommation d’heure de calcul.


Exemple de scripts optimisés pour le cluster MUSE

slurm_muse_exemple

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.


Comment organiser ses fichiers

MontageDescriptionUtilisationQuotaPéremption
/homeNFSFichiers de configuration globale
code, bibliothèques

Partagé avec le groupe
(en général 50GigaOctet
partagé)
Non
/nfs/workNFSFichiers de configuration des travaux
Données d'entrée et de sortie
Copie des exécutables

Partagé avec le groupe
(en général 50GigaOctet
partagé)
Non
/lustre/scratch
lustreExécution des travaux
Donnée temporaires

Non
2 mois

Environnement logiciel du Cluster Muse

Les logiciels suivant sont installés sous forme de modules dans le répertoire commun (12/01/2017) :

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/mvapich2/3.3.5
fftw3-mvapich2/mvapich2/3.3.5
fftw3/openmpi/3.3.5
fftw3-openmpi/openmpi/3.3.5
gcc/4.9.3(default)
gcc/5.3.0
gcc/6.1.0
gdal/2.1.2
gdb/7.11
git/2.9.3
GMT/5.2.1
gromacs/openmpi-2.0.1-psm2/gcc-6.1.0/5.1.4
hdf5/1.8.17
hdf5/gcc49/1.8.17(default)
hdf5/gcc53/1.8.17
hdf5/gcc61/1.8.17
hdf5/icc16/1.8.17
hdf5/impi/icc16/1.8.17
hdf5/mvapich2/1.8.17
hdf5/mvapich2/gcc49/1.8.17
hdf5/mvapich2/gcc53/1.8.17
hdf5/mvapich2/gcc61/1.8.17
hdf5/mvapich2/icc16/1.8.17
hdf5/openmpi/1.8.17
hdf5/openmpi/gcc49/1.8.17
hdf5/openmpi/gcc53/1.8.17
hdf5/openmpi/gcc61/1.8.17
hdf5/openmpi/icc16/1.8.17
hwloc/1.11.2
ImageMagick/7.0.3-10
intel/advisor/32/2016.3.210
intel/advisor/64/2016.3.210
intel/clck/64/2016.3.210
intel/clck/mic/2016.3.210
intel/compiler/32/2016.3.210
intel/compiler/64/2016.3.210
intel/daal/32/2016.3.210
intel/daal/64/2016.3.210
intel/inspector/32/2016.3.210
intel/inspector/64/2016.3.210
intel/ipp/32/2016.3.210
intel/ipp/64/2016.3.210
intel/itac/64/2016.3.210
intel/mkl/32/2016.3.210
intel/mkl/64/2016.3.210
intel/mkl/mic/2016.3.210
intel/mpi/64/2016.3.210
intel/runtime/32/2016.3.210
intel/runtime/64/2016.3.210
intel/tbb/32/2016.3.210
intel/tbb/64/2016.3.210
intel/vtune/32/2016.3.210
intel/vtune/64/2016.3.210
jre/jre.8_x64
knem/1.1.2
lapack/3.6.1
matplotlib/py27/1.5.3
mellanox/fca/2.5
mellanox/hcoll/3.5
mellanox/mxm/3.4
metis/4.0.3(default)
metis/5.1.0
metis/icc16/4.0.3
metis/icc16/5.1.0
mvapich2/2.2rc2
mvapich2/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
namd/impi-5.1.3/gcc-6.1.0/2.11
namd/ompi-2.0.1-psm2/2.11
netcdf/4.4.1.1
numpy/py27/1.11.2
openblas/0.2.18(default)
openmpi/2.0.1
openmpi/icc16/2.0.1
openmpi/psm2/2.0.1
openmpi/psm2/gcc49/2.0.1(default)
openmpi/psm2/gcc53/2.0.1
openmpi/psm2/gcc61/2.0.1
openmpi/psm2/icc16/2.0.1
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
python/2.7.12(default)
python/3.5.2
qt/gcc/4.8.6
R/3.3.1
scalapack/mvapich2/2.0.2
scalapack/openmpi/2.0.2
scilab/5.5.2
scipy/py27/0.18.1
scite/3.7.1
scotch/6.0.4(default)
scotch/icc16/6.0.4
valgrind/3.11.0

Vous pouvez installer des logiciels dans votre espace utilisateur.

Cas des logiciels payants : l’utilisateur doit s’acquitter des droits de licence.
Possibilité d’utiliser des logiciels avec serveur de licence externe (Exemple : MatLab)


Copier des fichiers de façon sécurisée depuis le Cluster Muse

rsync

Ce fichier vous permet de copier des données depuis le cluster Muse vers votre machine LINUX.
Il vous faut modifier les champs USER, DOSSIER_CLUSTER et DOSSIER_PERSO et ensuite le lancer avec la commande « bash rsync ».
Il est vivement conseillé d’utiliser ce script lors de téléchargement de fichiers volumineux.