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 :
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:
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++
Utilisation des commandes conda pour Python / R:
1) PréRequis : module load Anaconda3
2) PréRequis 2 possibilités:
3) Création d'un environnement avec packages: conda create -n Rstat r-essentials r-base
NB: Il est possible d'utiliser un fichier .yml en entrée qui contient la liste des packages et d'autres spécifications. La syntaxe sera alors:
conda env create -f environment.yml
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:
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 ... |