Slater est un cluster HP composé d'une frontale et de 32 nœuds de calcul HP Proliant BL460c et un noeud GPU HP Proliant XL190r pour un total de 516 cœurs de calcul. La mise en œuvre de ce cluster a été rendue possible grâce aux participations financières suivantes:
La connection à la frontale se fait par ssh à l'adresse slater.up.univ-mrs.fr
Le mot de passe pour s'y connecter sera envoyé par e-mail et devra être modifié à la première connection.
Sur la frontale (2 processeurs intel xeon x86_64 de hexa-coeurs), il est possible de compiler les codes, préparer et soumettre des calculs, et visualiser les résultats.
Les nœuds de calcul (appelés lame1 à lame15) possèdent chacun 2 processeurs quadricœurs et 24 Gb de mémoire. Les nœuds appelés lame16 à lame32 possèdent 12 à 40 cœurs de calcul. La GPU appelée apollo possède 32 coeurs, 128 Gb de RAM et quatre GPU-Tesla K80. Les fichiers input/output et autres fichiers importants doivent être stockés dans le répertoire personnel (partition /home commune à tous les nœuds, 3.5 Tb en RAID 5) tandis que les fichiers temporaires sont stockés sur une partition locale $SCRATCH créée à la volée.
La commande permettant l'utilisation du scratch local avec le login et le job ID est:
SCRATCH=/scratch/$USER.\$SLURM_JOB_ID
Cette partition (défaut 10 Gb, maximum 1 To en RAID 0) reste invisible depuis la frontale* et est détruite à la fin d'un job. Il est donc nécessaire de prévoir le rapatriement des fichiers depuis le $SCRATCH vers /home dans le script de soumission.
La commande permettant de spécifier la taille du "scratch" est:
#SBATCH --comment=disk=SCRSIZE
* Il est toutefois possible de se connecter sur une lame de calcul via un shell restreint (commande ssh lame1 pour une connection sur la lame1)
Les compilateurs et environnement de compilation installés sont :
Compilateurs GNU gfortran, gcc et g++
Intel fortran, C et C++ 10.0 ; 10.1 et 11.0 (ifort, icc); intel/2018
Débuggeurs gdb (GNU) et idb (Intel)
Librairies mathématiques MKL
MPICH1, MPICH2 et MPICH3 (version shmem ; utilise rsh pour les connections inter-noeuds)
OpenMPI (dernière version 3.1.2)
Le chargement des environnements correspondants se fait avec la commande module load ... Pour obtenir la liste des modules, utiliser module avail. Les processeurs sur la frontale sont du même type que ceux trouvés sur les nœuds. Les codes compilés sur la frontale sont donc portables sur les nœuds. Cependant, pour améliorer les performances des codes, il est possible de les compiler directement sur un nœud en lançant un job interactif depuis la frontale:
srun --nodes=1 --ntasks-per-node=1 --time=1:00:00 --pty bash
permet de se connecter à n’importe quel nœud pendant une heure, en y réservant 1 cœur.
La soumission et le management des jobs se fait par l’intermédiaire du gestionnaire de ressources Slurm.
Une documentation des commandes de base est disponible ici : http://slurm.schedmd.com/man_index.html
Les commandes utiles de Slum sont :
L'application graphique sview donne accès à l'ensemble des fonctionnalités ci-dessus, en plus d'une vue détaillée de l'ensemble des noeuds de calcul. Chaque onglet de sview est configurable via un click droit à la souris.
Cinq queues de soumission sont disponibles (les queues sont d'autant plus prioritaires qu'elles demandent moins de ressources) :
Queue | Nombre de cœurs Maxi | Nombre de job/user | Temps maximum |
Step | 1 | 100 | 1h |
Walk | 16 | 20 | 12h |
Journey | 16 | 16 | 48h |
odyssey | 16 | 8 | 5 Jours |
intersideral | 8 | 2 | 15 Jours |
Pour connaitre les limites de chaque queue, sur votre terminal utiliser la commande suivante:
sinfo -o "%10P %.11L %.11l"
Lancement d'un job :
$ sbatch mon_script.job
Exemple de script Slurm Simple
#! /bin/bash
#SBATCH -p Journey
#SBATCH -n 36 # 36 coeurs
#SBATCH -N 3-6 # au minimum 3 noeuds, au maximum 6
#SBATCH -t 48:00:00 # Le job sera tué au bout de 48h
#SBATCH --mem=1024 # Quantité mémoire demandée par noeud en Mo (unité obligatoire)
SCRATCH=/scratch/$USER.\$SLURM_JOB_ID
mpirun mon_code
Des modèles de script de soumission de calculs pour la majorité des logiciels installés sur Slater ont été déjà préparés pour faciliter la tâche des utilisateurs.
Un modèle de script de soumission peut être obtenu en utilisant la commande subsub.
Exemple de soumission d’un job avec Gaussian 16 :
subg16 -t walltime monfichier (nécessite la présence d'un fichier monfichier.com). Le fichier de sortie est monfichier.log.
On spécifie le temps maximum (max walltime) en heures avec une seconde variable :
subg16 -t 41 monfichier demandera 41 heures.
Suivre l'état d'un job
Il est possible d'obtenir le détail de l'état d'un job, qu'il soit en attente ou en exécution, avec les commandes scontrol ou squeue. La commande sview permet également en partie d'obtenir ces informations.
Liste des jobs en cours :
squeue
squeue -u <login>
Interface de surveillance de la charge des machines et de vos jobs sur
http://slater.up.univ-mrs.fr/cgi-bin/slurmweb.pl
Détail de l'état d'un job :
scontrol show job <jobid>
Mon job est en attente. Quand va-t-il démarrer ?
Pour les jobs en attente, Slurm calcul périodiquement un temps probable de démarrage.
scontrol show job <jobid> | grep StartTime=
Priorités :
Quand plusieurs jobs sont en même temps en attente dans une file, Slurm calcule une priorité entre ces jobs. Le job ayant la priorité la plus élevée sera le prochain à passer en exécution.
La priorité des jobs peut être vue, par ordre décroissant, avec la commande sprio -l|sort -r -k 4.
La priorité dépend de plusieurs facteurs :
Exemple de script Slurm - Spécification de la répartition des tâches par noeud
Si vous avez besoin d’indiquer exactement la répartition des tâches sur les noeuds, vous pouvez utiliser tout ou partie des paramètres --tasks-per-node, --distribution et éventuellement --cpu_bind pour avoir un état de la répartition.
Vous pouvez par exemple demander 4 coeurs par noeud sur 3 noeuds, avec une répartition cyclique des tâches sur les noeuds, c-à-d la 1ère tâche sur le noeud 1, la 2nd sur le 2nd noeud, la 3ème sur le 3ème noeud, puis la 4ème sur le 1er noeud et ainsi de suite :
#! /bin/bash
#SBATCH -p Walk
#SBATCH -N 3 # 3 noeuds
#SBATCH --tasks-per-node=4 # 4 tâches par noeud (par défaut 1 tâche = 1 coeur)
# La répartition par défaut des tâches est de type block, cad toutes les tâches du début
# sur le 1er noeud, les tâches suivantes sur le 2nd, etc.. :
#SBATCH --distribution=cyclic
#SBATCH --cpu_bind=verbose # produira un état donnant la correspondance tâche/noeud/coeur
SCRATCH=/scratch/$USER.\$SLURM_JOB_ID
cd ${HOME}/somewhere_i_want_to_work
mpirun my_mpi_executable
Les logiciels de chimie théorique actuellement mis à disposition sur les nœuds sont :
AmberTools
Ampac 10.1 – soumission avec subampac
Autodock 4.2.6 / Autogrid – soumission avec subautodock et subautogrid
CP2K – soumission avec subcp2k
Gamess (version 2018 R1)– soumission avec subgamess
Gaussian 16 – soumission avec subg16
Gaussian 09 – soumission avec subg09
Gromacs (version 2018) – soumission avec subgromacs
Orca 4.0.1.2 – soumission avec suborca
Tonto - soumission avec subtonto
Hart - soumission avec subhart
Quantum Espresso 6.2.1
TURBOMOL 7.3 (Calcul structures électroniques)
Toute suggestion de logiciel est la bienvenue.
Préparation et visualisation
Slater dispose de logiciels permettant de préparer les jobs ou d’analyser/visualiser les résultats.
AGUI (interface graphique Ampac + Gaussian)
AIMAll (analyse Atom In Molecule)
MGLtools 1.5.7 (préparation et analyse pour autodock)
gnuplot (tracés 2D et 3D)
Mercury 3.10.1 (visualisation et analyse de structures cristallographiques)
MOLDEN 5.7 (visualisation moléculaire)
NBO et NBOView 6.0
VMD 1.9.3 (visualisation moléculaire)
Toute suggestion de logiciel est la bienvenue.