~~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.