Présentation

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:

  • Fonds propres de la Fédération des Sciences Chimiques de Marseille, FR 1739.
  • Fonds Incitatifs à la Recherche 2009 de l'Université de Provence.
  • Mise en commun de ressources des UMR 7273 – Institut de Chimie Radicalaire– et 7313 – Institut des Sciences Moléculaires de Marseille – (fonds propres et ANR).
  • Subvention d'équipement accordée en 2010 par la Ville de Marseille.

Connection à la frontale

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)

Compilation

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.

Soumission de calculs

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 :

  • sbatch : soumission d'un job dans une file d'attente (appelées partitions dans Slurm) ;
  • scancel : suppression d'un job ;
  • squeue : interrogation des jobs ;
  • sinfo : interrogation des files d'attente ;
  • srun : exécution immédiate d'une commande ;
  • sprio : priorités relatives entre les jobs en attente.

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 :

  • Le temps d'attente déjà écoulé (AGE) ;
  • La taille du job en nombre de coeurs : les gros jobs sont favorisés (JOBSIZE) ;
  • La consommation en heures cpu sur le passé récent : plus la consommation a été faible, plus la priorité augmentera (FAIRSHARE).

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

Logiciels disponibles

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.