Serveurs de calcul ICARE

Description générale du cluster

Le nouveau cluster de calcul est composé de 114 cœurs répartis sur 5 serveurs de calcul et il est structuré de la manière suivante :
  • Un frontal pour la connexion
  • Ce serveur interactif est utilisé pour la compilation, pour la validation des codes avant de les lancer sur le cluster de calcul. Il est partagé entre tous les utilisateurs et il ne doit pas être utilisé pour l'exécution de jobs longs.
  • Les nœuds de calcul
  • Ces nœuds sont des serveurs dédiés aux calculs. Un processus qui tourne sur un nœud de calcul accède aux données de l’archive, effectue un traitement et enregistre le résultat sur le disque work_users.

Liste des machines

Dans le tableau suivant le nombre de coeurs physiques = nb sockets * nb coeurs par socket

Machines Nombre de cœurs
alloués au cluster
Hyperthreading Processeur RAM
Frontal (access) 26 Non Intel(R) Xeon(R)
2xGold 5120 CPU @ 2.20GHz
384 Go
Node 001 26 Non Intel(R) Xeon(R)
2xGold 5120 CPU @ 2.20GHz
384 Go
Node 002-005 22 cœurs physiques
44 cœurs logiques
Oui Intel(R) Xeon(R)
2xSilver 4116 CPU @ 2.10GHz
384 Go

Demande d’accès au cluster

Afin d’accéder au ressources de calcul du cluster, merci de remplir le formulaire "registration for computing resources".

Accès au cluster

Pour accéder au cluster, on se connecte en ssh sur le serveur access:
ssh –X user@access.icare.univ-lille1.fr
et on utilise le login / mot de passe de son compte habituel.

Pour exécuter un programme sur un nœud de calcul, il est obligatoire de passer par l'ordonnanceur de tâches SLURM.
SLURM (Simple Linux Utility for Resource Management) est un gestionnaire de ressources et ordonnanceur de tâches pour des clusters LINUX. Il permet de répartir au mieux les ressources de calcul (CPU, RAM) entre utilisateurs en gérant des files d'attente avec priorité.

Soumettre un job avec SLURM

On peut interagir avec le gestionnaire de ressources par les commandes suivantes :
  • 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
sinfo -N -l
NODELIST NODES PARTITION  STATE CPUS S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON
node001 1 COMPUTE*    idle 28  2:14:1 386225    0 1000  (null) none
node002 1 COMPUTE*    idle 48  2:24:1 386225    0 1000  (null) none
node003 1 COMPUTE*    idle 48  2:24:1 386225    0 1000  (null) none
node004 1 COMPUTE*    idle 48  2:24:1 386225    0 1000  (null) none
node005 1 COMPUTE*    idle 48  2:24:1 386225    0 1000  (null) none
Une seule partition COMPUTE (file d’attente) a été créée avec l’ensemble des nœuds de calcul. Le temps de calcul par défaut pour un job est de 24h mais il peut être augmenté en précisant la valeur.

Les ressources demandées par un job lui sont allouées pour toute la durée de son exécution. Si un job dépasse le temps précisé en option (ou à défaut le temps max autorisé par la partition) il est automatiquement tué.

Si des options ne sont pas précisées, ce sont celles par défaut qui sont appliquées :
  • 1 CPU/job
  • 4Go de RAM par CPU
  • Soumission dans la partition " compute" : jobs limités à 24h (max 16 jours)
La priorité d'un job dépend, entre autre, de la quantité de ressources demandées : plus un utilisateur demande de ressources, plus la priorité de son job tend à être faible.

Pour soumettre un job, il existe deux possibilités :
  • Définir son job dans un script et le lancer à l'aide de la commande sbatch,
  • Lancer directement son job en ligne de commande à l'aide de la commande srun.

Soumission via la commande sbatch

Les options dans le script doivent être précédées de la directive #SBATCH.
Exemple de script permettant d'exécuter un programme :
#!/bin/bash
 
#===============================================================================
# Options SBATCH :
#SBATCH --job-name=TestJob # Nom du Job
#SBATCH --time=10:00      # temps max alloué au job (format = m:s ou h:m:s ou j-h:m:s) 
#SBATCH --ntasks=3         # Nombre de Tasks total pour le job
#SBATCH --cpus-per-task=4     # Allocation de 4 CPU par Task
#SBATCH --mem=2000          # mémoire nécessaire (par noeud) en Mo
#SBATCH --partition=COMPUTE # Nom de la partition Slurm utilisée
 
#SBATCH --mail-type=ALL # Notification par mail concernant le job : début d’exécution, fin
#SBATCH --mail-user=user@univ-lille.fr
 
#===============================================================================

Le job décrit dans le script est soumis via la commande sbatch suivie du nom du script.
SLURM affecte alors un numéro au job et le place dans la file d'attente. Le job est exécuté quand les ressources sont disponibles.
ops@access:~ $ sbatch submit.sh
Submitted batch job 17

Soumettre directement avec srun

La commande srun permet soumettre directement un job (sans écriture de script). Le résultat d'exécution s'affiche alors directement à l'écran (il n'y a pas de création de fichier résultat). Les options sont les mêmes qu'avec le script, elles sont passées en ligne de commande.

Exemple de soumission d'un exécutable dans la partition COMPUTE pour 30 minutes :
ops@access:~ $ srun --partition=COMPUTE –time=30.0 job.sh

Suivre l’état d’un job

Pour obtenir le détail de l'état d'un job, en attente ou en exécution, on peut utiliser les commandes scontrol ou squeue. La commande sview permet également en partie d'obtenir ces informations.

Liste des jobs en cours :
Usage:
ops@access:~ $ squeue
squeue –u <login>
Détail de l’état d’un job :
ops@access:~ $ scontrol show job <jobid>
Une documentation des commandes de base est disponible ici :
http://slurm.schedmd.com/man_index.html