~~SLIDESHOW yatil~~
====== CALI VERSION 2-B ======
Une évolution logicielle majeure est passée en production sur CALI le 14 septembre 2022. Le //système// est un équivalent RedHat 8 ([[https://almalinux.org/ | AlmaLinux]] 8.6).
Vous trouverez ici les éléments importants à prendre en compte. Dans la suite, nous indiquons les différences entre l'ancienne version et la nouvelle.
===== Connexion aux clusters =====
==== Connexion au "nouveau" cluster CALI 2-B =====
Nom DNS pour se connecter : ''cali.unilim.fr''
La connexion est possible :
* Par SSH
* Par X2GO
===== Espaces de stockage =====
==== Home directory ====
Le //home directory// **n'est plus le même**. Vous pouvez retrouver l'ancien //home directory// en allant dans le sous-dossier ''~/old-home'' (lien présent à la racine de votre nouveau home directory)
==== Espace scratch ====
L'espace scratch existe toujours :
* Identique à celui de CALI2-A
* Accessible comme avant via le lien ''~/scratch'' présent dans votre home directory
===== Choix de l'environnement logiciel -- Les modules =====
La commande ''module'' permet (comme précédemment) de sélectionner un environnement logiciel, pour utiliser un logiciel avec une certaine version.
A la différence de l'ancienne version du cluster, //aucun module n'est chargé par défaut//. Sur CALI2-A, certains modules (compilateurs Intel, Intel MPI) étaient chargés par défaut -- **ce n'est plus le cas**.
===== Slurm =====
L'environnement Slurm est relativement identique à CALI2-A, afin de faciliter la transition :
* mêmes partitions
* mêmes limites
Cependant, des modifications ont été apportées pour permettre d'utiliser plus facilement tous les noeuds disponibles.
==== Partition GPU ====
La partition ''gpu'' **a été étendue à tous les noeuds avec GPU** (qu'ils soient communs ou "privatifs", càd propriété de certaines équipes de recherche).
* elle donne maintenant accès à des cartes K20, K40m ou GTX 1080 Ti
* le type de carte voulue peut être précisé dans le job -- modifier la réservation pour ajouter le type : ''%%--gres=gpu:K20:1%%'' ou ''%%--gres=gpu:K40m:1%%'' ou ''%%--gres=gpu:GTX1080Ti:1%%''
* les cartes K40m et GTX1080Ti sont mises à disposition par des laboratoires qui les ont financés -- en contre-partie, s'ils en ont besoin, vos jobs seront //pré-emptés// en les arrêtant (kill) et en les remettant dans la queue
==== Partitions CPU ====
Les 3 partitions principales à utiliser pour du calcul CPU sont ''rapide'', ''normal'' et ''cluster''
* Ces partitions ont été étendues à des noeuds plus récents
* Tous ces noeuds ont un réseau Infiniband
* Comme pour les gpu, vous pouvez préciser le type de processeur, principalement ''Xeon-E5-2630-v4'' pour les noeuds "récents" ou ''Xeon-E5-2650-v2'' pour les noeuds d'origine -- La sélection se fait avec l'option ''%%--constraint=%%//TYPE//''
===== Compilateurs =====
==== Suite GNU ====
* Vous disposez nativement de la suite GNU (gcc, g++, gfortran), en version 8.5, de la distribution AlmaLinux
* Si vous avez besoin d'autres versions, les //modules// permettent de choisir une autre version -- récupérées de CALI2-A -- voir les versions disponibles avec ''module avail gcc''
==== Suite INTEL ====
* Les anciennes versions des compilateurs Intel sont toujours disponibles -- voir les versions disponibles avec ''module avail intel/composer''
* Une nouvelle version, la suite OneAPI, a été installée -- pour la charger, la commande est simplement ''module load compiler''
===== MPI =====
Deux familles de librairies MPI sont mises à disposition : OpenMPI et Intel MPI
==== Avertissement ====
Une partie des noeuds du cluster est relié par un réseau haute performance Infiniband, de technologie //QLogic TrueScale// ou //Intel Infinipath//. Cette technologie a été abandonnée par Intel, et mal supportée à l'heure actuelle.
La meilleure façon de faire fonctionner ce réseau consiste à utiliser une API appelée ''psm''. Hors elle ne fonctionne pas avec la nouvelle version. Il faut alors se "rabattre" soit sur l'API ''verbs'', soit sur le mode ''tcp''.
==== OpenMPI ====
Trois versions sont réellement disponibles :
* celle livrée par AlmaLinux 8 -- à charger avec ''module load mpi/openmpi-x86_64''
* deux versions (3.1 et 4.1) recompilées -- à charger avec ''module load mpi/openmpi/3.1.6'' ou ''mpi/openmpi/4.1.2''
La configuration qui semble optimale avec OpenMPI est d'utiliser la couche PML ''ucx'' -- par exemple en positionnant la variable suivante dans vos jobs slurm :
export OMPI_MCA_pml=ucx
Si vous avez besoin de déboguer la couche OpenMPI, vous pouvez ajouter ces variables :
export OMPI_MCA_pml_base_verbose=10
export OMPI_MCA_mtl_base_verbose=10
export OMPI_MCA_btl_base_verbose=10
==== Intel MPI ====
__Avertissement__ La librairie Intel MPI semble moins efficace qu'OpenMPI en l'absence de support de psm. A tester pour votre code.
Plusieurs versions sont disponibles :
* les ancienns versions de CALI2-A sont toujours disponibles -- voir les versions avec ''module avail mpi/impi''
* une version issue de OneAPI est aussi disponible : ''module load mpi/2021.3.0''
Pour utiliser ''verbs'', vous devez positionner la variable suivante (par exemple dans vos //jobs// slurm) :
export FI_PROVIDER=verbs
# Et si vous voulez avoir des informations de "debogage":
export FI_LOG_LEVEL=99
export I_MPI_DEBUG=4
==== Intégration avec SLURM ====
Comme sur CALI2-A, il est conseillé de lancer les programmes MPI via ''srun''
===== Logiciels disponibles =====
Les anciens logiciels de CALI2-A ont été recopiés et sont donc toujours accessibles via les //modules//. **Cependant, la plupart risquent de ne pas fonctionner sur CALI2-B** car l'environnement système n'est plus le même :!:
* Si vous obtenez une erreur ''error while loading shared libraries: libiomp5.so'', chargez le module pour les compilateurs Intel : ''module load compiler''
* Si vous obtenez une autre erreur ''error while loading shared libraries: ...so'', chargez le module suivant : ''module load compat/centos-6''
Si ces mesures ne sont pas suffisantes, signalez-nous le logiciel nécessaire pour vos calculs et l'erreur précise obtenue.
__Note__ Nous vous rappelons aussi que sous Linux, vous pouvez installer tous les logiciels souhaités dans vos espaces disques, en totale autonomie -- suivant votre degré de familiarité avec ce système.