Utilisation du CLUSTER vSMP (math10.unice.fr)

Version imprimableVersion imprimableEnvoyer à un amiEnvoyer à un ami

 

 

 N'hésitez pas à venir nous voir si vous avez besoin d'informations complémentaires. 

Toutes remarques sur le contenu de ce mini WIKI sont les bienvenues.

Informations préliminaires:

L'accès aux ressources du Cluster SMP est conditionné au respect des "bonnes pratiques" décrites ci-dessous, notamment la soumission de travaux par la commande ssub. Le non respect de ces règles simples d'utilisation ne permettra pas de bénéficier de toute la puissance de calcul de la machine, et en conséquence, nous conduirait à en restreindre l'accès par l'utilisation d'un gestionnaire de Batch et de Ressources, ce qui sera pénalisant pour tous les utilisateurs de cette machine.

Il n'est pas inutile de rappeler que cette machine n'est pas reservée à une seule personne, et qu'il convient de partager les ressources disponibles. Alors pensez un peu aux collègues. Merci.


Description du Cluster MATH10

5 serveurs DELL aggrégés en une seule machine SMP grâce à la technologie ScaleMP (http://www.scalemp.com), soit:  

5 noeuds ( 2 x 18 cores Xeon Gold 3.1Ghz de 192 GBytes de mémoire à 2933 Mhz par noeud)

soit 180 cores et 833 GBytes de mémoire.

1 espace de 15Tbytes a été configuré en RAID60 afin d'optimiser les entrées/sortie des codes. Nous vous recommandons de l'utiliser systématiquement pour les exécutions des programmes, les performances seront nettement meilleures que si vous utilisez votre homedir à travers NFS

L'ouverture d'un espace personnel dans ce "/workdir" se fait à la demande.

!!! ATTENTION !!! Cet espace n'est PAS sauvegardé. Il n'est donc pas conseillé d'y installer les codes sources ... !!!


Compilateurs

Pour bénéficier des derniers compilateurs il faut rajouter à la fin de votre ~/.zlogin les lignes suivantes :

if [ `hostname -s` = "math11" ] ||
   [ `hostname -s` = "math5"  ] ||
   [ `hostname -s` = "math10" ]; then
   scl enable devtoolset-7 zsh
fi
 

La commande module:

La gestion des variables d'environnement spécifiques à chaque type de calculs est gérée par la commande module , qui permet de configurer et changer d'environnement très simplement, par exemple:

  • module help    Liste des commandes disponibles
  • module avail   Liste des modules disponibles
  • module load Intel-xe-2013-sp1   Charge l'environnement Intel (compilers/libraries/debugger/optimizer, ...)
  • module list      Liste des modules chargés
  • module purge  Décharge tous les modules utilisés et remet l'environnement par défaut.

Dans tous les cas, il faut charger l'environnement ScaleMP par la commande suivante:

module load ScaleMP

Cas particulier des codes parallélisés MPI:
Remarque: 
Pour un maximum de performances, ScaleMP utilise une version optimisée de MPICH2

module load Mpich2-1.4  Charge l'environnement MPICH2 version 1.4 optimisé par ScaleMP.

et référencer les compilateurs de la façon suivante: exemples

Pour INTEL:

mpif90   -fc=ifort
mpicc    -cc=icc
mpic++  -cxx=icpc

Pour GNU:

mpif90   -fc=gfortran mpicc    -cc=gcc
mpic++  -cxx=g++


Utilsation des commandes conda pour Python / R:

  1) PréRequis : module load Anaconda3

  2) PréRequis : eval "$(/usr/local/anaconda3/bin/conda shell.zsh hook)"

  3) Création d'un environnement : conda create -n Rstat r-essentials r-base

  4) Activer cet environnement : conda activate Rstat

  5) Mise à jour des packages d'un environnement : conda activate Rstat ; conda update -n Rstat --all

  6) Ajout de packages à un environnement :

      a) le package existe pour conda: conda install -c r r-igraph

      b) le package n'existe pas pour conda, il faut utiliser la commande R : install.packages("lassoshooting")   

      c) si le package s'appuie sur des parties du système : demander à l'admin d'installer les rpm manquants

      d) malgré cela il peut manquer des pré-requis matériels comme pour 'rgl' qui s'appuie sur des primitives
      OpenGL et ne peut fonctionner en l'absence d'une carte graphique Adhoc.

  7) Recherche d'un package : conda activate Rstat ; conda search <pkgname>

  8) Voir les packages installés dans un environnement: conda activate Rstat ; conda list

  9) Supression d'un environnement: conda env remove -n Rstat

10) Suppression des caches, téléchargements: conda clean --all

NB: les fichiers / répertoires en question se trouvent ici : ls -alrt ~/.conda

       Cette commande peut générer des messages d'erreurs concernant les répertoires systèmes et qui peuvent être ignorés

 

 Autres commandes Conda utiles:

- Il est possible de modifier le répertoire par défaut (~/.conda) par exemple pour utiliser un répertoire dans votre workdir

où les temps d'accès sont plus rapides, par exemple : /workdir/<user>/.envs

Il faudra alors spécifier explicitement ce répertoire lors des opérations conda, exemple:

     conda create --prefix ./envs jupyterlab=0.35 matplotlib=3.1 numpy=1.16

- Activation d'un environnement: conda activate ./envs
- Mise à jour d'un environnement: conda env update --prefix ./env <envname>  --prune

NB: L'option --prune indique à conda de supprimer toutes les dépendances inutiles

Pour plus de détails vous pouvez consulter le site suivant :

   https://conda.io/projects/conda/en/latest/user-guide


Compilation et Edition de liens:

Les commandes module load définissent également les options de compilation et d'édition de liens optimales pour l'architecture de la machine.

Nous vous préconisons l'utilisation des commandes make, cmake ou cmake3 pour la compilation et l'edition de liens de vos programmes.


Execution de programmes Séquentiels / Pthreads / OpenMP / MPI:

!!! IMPORTANT !!!

La commande ssub sans argument pour le mode d'emploi:

------------------------------------------------------------------------------
 The following instructions assume that your environment was properly defined.
 using the command : module. To see all availables module, use : module avail 
------------------------------------------------------------------------------
Usage:ssub <kind> <prog>
where:
<kind>: is one of: serial | pthreads:np | mpi:np | FFmpi:np | Rmpi:np | openmp:np 
(where np is the number of required cores)
<prog>: is your executable
 
 Remark:
 If your executable needs input and/or output files, you can use one the following syntaxes:
  ssub kind 'prog input output'
  or
  ssub kind prog < input > output
 

 


Visuel de l'occupation du Cluster:

htop


Utilisation de la commande SCREEN: La commande SCREEN permet de détacher les processus lancés pendant la session SSH.

Exemple:

ssh math10.unice.fr # connexion au serveur
math10: screen # initialisation de la commande screen
math10: ssub mpi:3 programme_executable # execution d'une commande
math10: Control-A d # detacher le processus : appuyer sur la touche Control A, puis sur d
math10: exit # fin de la session SSH
ssh math10.unice.fr # re-connexion au serveur
math10: screen -r # récupération des processus détachés
math10: top # voir l'état des processus ...