Manuel d’utilisation du cluster IBNBADIS
ibnbadis2 Présentation du Cluster 

     IBNBADIS est une plateforme de calcul haute performance à 32 noeuds de calcul composés chacun de  deux processeurs Intel(R) Xeon(R) CPU E5-2650 2.00GHz. Chaque processeur est composé de 8 coeurs, ce qui fait 512 coeurs au total. La puissance théorique du cluster est d’environs 8TFLOPS.

Architecture  ibnbadis architecture

   IBNBADIS est composé d’un noeud d’administration ibnbadis0, un noeud de visualisation ibnbadis10 et 32 noeuds de calcul ibnbadis11-ibnbadis42.

Le noeud de visualisation ibnbadis10 est équipé d’un GPU Nvidia Quadro 4000 (6GB, 448 coeurs) qui peut être exploité pour les calculs.

Les logiciels installés sur IBNBADIS sont :

  • SLURM pour la gestion des jobs
  • C/C++, Fortran
  • MPI

Première connexion

     Après la création de votre compte par l’administrateur de IBNBADIS, vous receverez un mail du genre :


Bonjour,

Voici les détails de votre compte utilisateur sur le cluster IBNBADIS pour vos tests :

login : user

passwd : password (merci de respecter la casse)

Vous pouvez vous connecter à partir de l’algérie en ssh comme suit : ssh user@193.194.81.82.

Vous atterissez sur le noeud de management ibnbadis0. Les noeuds de calcul sont ibnbadis11 – ibnbadis42.

Prières de ne pas lancer des calculs sur le noeud ibnbadis0. Les calculs deveront être lancés sur les noeuds ibnbadis11 à ibnbadis42.

Bonne utilisation


      Les connexions à IBNBADIS se font via ssh comme suit : ssh user@193.194.81.82.

     A la première connexion à IBNBADIS, vous atterrissez sur le noeud de management ibnbadis0 sur lequel vous effectuez toutes vos opérations (reservation de noeuds, lancement de jobs, consultation de résultats, …).

NB : Le noeud ibnbadis0 n’est pas fait pour les calculs. Prière de ne pas exécuter explécitement vos programmes sur ce noeud. Utilisez plutôt Slurm qui exclut ce noeud.

Utilisation

     IBNBADIS utilise SLURM comme gestionnaire de ressources.

    SLURM (Simple Linux Utility for Resource Management) est un outil open source pour la gestion de cluster et l’ordonnancement de jobs dans les clusters linux. Plus d’informations peuvent être trouvées sur le site officiel de SLURM : http://slurm.schedmd.com/

     Voici quelques commandes Slurm qui vous seront utiles pour l’allocation de ressources et lancement de vos jobs sur IBNABDIS :

sinfo : permet d’avoir des informations sur l’état des ressources sur le cluster

[user@ibnbadis0 ~]$ sinfo

PARTITION AVAIL TIMELIMIT NODES STATE NODELIST

visu up infinite 1 idle ibnbadis10

r424* up infinite 30 alloc ibnbadis[11-19,22-42]

r424* up infinite 2 idle ibnbadis[20-21]

Dans cet exemple, il est indiqué que les noeuds ibnbadis10, 20 et 21 sont libres, les autres sont alloués.

squeue : permet de voir les jobs dans la queue de slurm (en cours d’exécution ou en attente de ressources).

     Pour exécuter un programme parallèle sur le cluster :

1. Il faut disposer d’un programme MPI (ou autre). Donc il faut compiler avec le compilateur necéssaire.

2. Lancer le programme avec la commande « sbatch » de SLURM.

sbatch : permet de lancer un script parallèle sur IBNBADIS. Le script contiendra toutes les informations concernant le nombre de noeuds à utiliser et le programme parallèle à exécuter sur les scripts.

     Voici un exemple de script que vous pouvez reprendre pour vos utilisations sur IBNBADIS :

[user@ibnbadis0 ~]$ cat script_slurm.sh

#!/bin/bash

#SBATCH –nodes=3

#SBATCH –ntasks-per-node=8

> machines .txt

for i in $( nodeset -e ${SLURM_NODELIST} ) ;

do

echo -e « ${i} » >> machines .txt

done

mpirun -machinefile machines.txt MonProgramme

– -nodes=3 : indique le nombre de noeuds à utiliser en parallèle

– –ntasks-per-node=8 : indique le nombre de tâches à lancer par noeud

> machines.txt : pour vider le contenu du fichier machines.txt. Le fichier machines.txt contient les machines sur lesquelles va s’exécuter le programme parallèle.

La boucle for sert à remplir le fichier machines.txt par les machines reservées par SLURM

mpirun : commande qui exécute un programme parallèle écrit en mpi

machinefile machines.txt : indique où sont les machines sur lesquelles on exécute le programme

MonProgramme : indique le programme qui va être exécuté en parallèle.

      Si vous voulez réutiliser le script, il suffit de modifier les informations concernant le nombre de noeuds, le nombre de tâches par noeud et le nom du programme à lancer.

       Voici un exemple de programme MPI :

[user@ibnbadis0 ~]$ cat MonProgramme.c

#include <mpi.h>

#include <stdio.h>

int main(int argc, char** argv) {

MPI_Init(NULL, NULL);

int world_size;

MPI_Comm_size(MPI_COMM_WORLD, &world_size);

int world_rank;

MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

char processor_name[MPI_MAX_PROCESSOR_NAME];

int name_len;

MPI_Get_processor_name(processor_name, &name_len);

printf(« Hello world from processor %s, rank %d »

 » out of %d processors\n »,

processor_name, world_rank, world_size);

MPI_Finalize();

}

     Voici comment compiler un programme mpi :

[user@ibnbadis0 ~]$ mpicc MonProgramme.c -o MonProgramme

Le script script_slurm.sh va être lancé de la façon suivante :

[user@ibnbadis0 ~]$ sbatch script_slurm.sh

Submitted batch job 46901

[user@ibnbadis0 ~]$ ls

MonProgramme slurm-46901.out exemple_script.sh

      Après lancement de votre script, un job est créé avec un identifiant ID (dans l’exemple précédent ID=46901). Le flux de sortie de votre programme est redirigé vers le fichier slurm-”ID”.out que vous trouverez dans le repertoire courant (dans notre exemple slurm-46901.out).

      Voici le résultat d’exécution de l’exemple précédent que nous pouvons trouver dans slurm-46901.out

[user@ibnbadis0 ~]$ cat slurm-46901.out

Hello world from processor ibnbadis40, rank 1 out of 5 processors

Hello world from processor ibnbadis40, rank 0 out of 5 processors

Hello world from processor ibnbadis41, rank 2 out of 5 processors

Hello world from processor ibnbadis42, rank 4 out of 5 processors

Hello world from processor ibnbadis41, rank 3 out of 5 processors

      Vous pouvez à tout moment faire man LaCommande pour avoir de l’aide sur LaCommande.