Le wiki HPC-MARWAN
Bienvenue sur le wiki de calcul haute performance (HPC) du centre national pour le recherche scientifique et technique.
Sommaire
Guide Utilisateur
Accès à l’HPC
Via linux
Via le Terminal
Commande ssh et commande scp ou installer un client (Filezilla) pour le transfert des fichiers
$ssh -X username@hpc-login.marwan.ma ( remplacer par votre login )
Transfert de fichier
Pour transferer un fichier depuis le HPC vers la machine de l’utilisateur , utiliser la commande :
$scp username@hpc-login.marwan.ma:/home/username/fichier.txt /home/localuser/fichier.txt
Pour transferer un fichier depuis la machine de l’utilisateur vers le HPC , utiliser la commande
$scp /home/localuser/fichier.txt username@hpc-login.marwan.ma:/home/username/fichier.txt
Transfert de dossier
Pour transferer tout un dossier , ajouter l’option -r à la commandes scp :
$scp -r username@hpc-login.marwan.ma:/home/username/dossier
$scp -r /home/localuser/dossier username@hpc-login.marwan.ma:/home/username/dossier
Outil de transfert de fichiers
Vous pouvez utiliser un client SFTP tel que Filezilla .
Voici la Commande d’installation pour Ubuntu :
$sudo apt install filezilla

Connecter l’espace de stockage distant via le gestionnaire de fichier
Dans la plupart des environnements de bureau modernes, le navigateur/gestionnaire de fichiers (Nautilus, Nemo, Thunar, Dolphin, etc.) devrait prendre en charge SFTP.

Il suffit de spécifier protocole sftp dans la barre du nom du serveur sftp://username@hpc-login.marwan.ma:/home/username
Une fois connecté, vous aurez accès aux répertoires et fichiers du serveur distant. Vous pourrez alors naviguer dans ces fichiers et dossiers, copier et coller des fichiers et dossiers, ainsi qu’éditer les fichiers textes, tout comme vous le feriez avec les fichiers et dossiers locaux.
Via windows
Installer un client ssh ( Mobaxterm ou Putty ) et un client scp (Winscp, Filezilla, Mobaxterm) pour le transfert des fichiers
Indication
- Paramètres de connexion:
Username : username (remplacer <username> par votre login )
Remote host: hpc-login.marwan.ma
Port : 22
Acces ssh avec MobaXterm


Transfert de fichiers (scp) avec Mobaxterm
Transfert de fichiers/dossiers de la machine de l’utilisateur vers le dossier personnel sur HPC

Un système HPC peut avoir des milliers de nœuds et des milliers d’utilisateurs. Comment décider qui obtient quoi et quand ? Comment s’assurer qu’une tâche est exécutée avec les ressources dont elle a besoin ? Cette tâche est traitée par un type de logiciel spécial appelé scheduler
,sur un système HPC, l’ordonnanceur gère les tâches qui sont exécutées où et quand.
Le but premier de l’ordonnanceur de tâches est de réserver des ressources pour les calculs des utilisateurs afin de garantir que les calculs soient exécutés au mieux. Il empêche la surcharge d’un nœud de calcul donné et met les calculs en attente jusqu’à ce que les ressources soient disponibles.
Le second objectif de l’ordonnanceur est de surveiller l’utilisation pour assurer une distribution équitable des ressources HPC dans le temps. Les politiques de partage équitable empêchent un utilisateur ou un groupe donné de monopoliser l’ensemble du cluster pendant des périodes prolongées si les calculs d’autres utilisateurs sont en attente dans la file d’attente.
Sur Le cluster HPC-MARWAN, vous contrôlez vos calculs en utilisant un système de planification des tâches appelé Slurm qui gère et vous attribuer les ressources informatiques.
Attention
Soyez un bon utilisateur du cluster. N’exécutez pas les calculs sur des nœuds de connexion (login), car ce-ci peut avoir un impact sur les sessions et la connectivité de tous les autres membres du cluster.
Afin de faciliter l’utilisation de l’ordonnanceur, un certain nombre d’exemples de scripts relatifs aux applications installées sur HPC-MARWAN ont été créés (voir ici). En outre, des scripts simples ont été créés pour illustrer l’utilisation actuelle du HPC et pour aider à supprimer des calculs HPC.
Commandes communes de Slurm
Soumettre un script exécutable au système de mise en file d’attente :
sbatch script.sl
Liste des calculs en attente et en cours.
squeue -u$USER
Annuler un calcul en attente ou arrêterun calcul en cours.
scancel <job_id>
Vérifier le statut d’un calcul individuel (y compris les calculs échoués ou achevés).
sacct -j <job_id>
exemple :
sacct -j 61458 -o start,end
Start End
------------------- -------------------
2020-05-08T23:55:15 2020-05-09T01:55:44
2020-05-08T23:55:15 2020-05-09T01:55:45
Afficher les informations sur les nœuds et les partitions de Slurm.
sinfo [OPTIONS...] : pour visualiser les nœuds hors ligne (sinfo –R).

sinfo -o "%40N %10c %10m %25f"

Pour plus d’information sur les option de sinfo, taper la commande sinfo –help. Les options ci-dessus sont des abréviations de :
N = nom du noeud
c = nombre de cœurs
m = mémoire
f = caractéristiques, souvent ce sera l’architecture ou le type de gpu associé
Le %40 signifie 40 caractères pour ce champ.
Exécution d’un calcul batch
Afin de lancer un job sur l’HPC, vous êtes invités à préparer un script slurm https://slurm.schedmd.com/sbatch.html compatible avec l’application que vous souhaitez utiliser. Ce script shell appelé script de soumission
enveloppe votre travail. Un script de soumission se compose de trois parties:
le programme qui doit exécuter le script. Il s’agit normalement de
#!/bin/bash
.les « directives » qui indiquent à l’ordonnanceur comment configurer les ressources de calcul pour votre job. Ces lignes doivent apparaître avant toute autre commande ou définition, sinon elles seront ignorées.
La partie « script » proprement dite, c’est-à-dire les commandes que vous voulez faire exécuter par votre tâche .
Voici un exemple de script.sl
qui exécute un job sur une unité centrale sur un seul nœud :
#!/bin/bash
#SBATCH --job-name=my_job
#SBATCH --ntasks=1 --nodes=1
#SBATCH --mem-per-cpu=5G
#SBATCH --partition=defq
#SBATCH --time=12:00:00
./myprog -p 20 arg1 arg2 arg3 ...
Pour soumettre ce job à l’ordonnanceur, nous utilisons la commande sbatch
.
$ sbatch script.sl
Submitted batch job 36855
Pour vérifier l’état de notre travail, nous vérifions la file d’attente en utilisant la commande squeue -u yourUsername
.
$ squeue -u yourUsernameJOBID USER ACCOUNT NAME ST REASON START_TIME TIME TIME_LEFT NODES
CPUS36856 yourUsername yourAccount example-job.sh R None 2017-07-01T16:47:02 0:11 59:49 1 1
Les directives d’un script
Comme le montre l’exemple ci-dessus, les « directives » sont composées de #SBATCH
suivi des options Slurm. Les options les plus couramment utilisées sont les suivantes :
Option |
Abréviation |
Description |
–job-name |
-J |
Nom personnalisé du job |
–partition |
-p |
Partition sur laquelle le job sera exécuté (defq, shortq, mediumq, longq) |
–nodes |
-N |
Nombre total de nœuds |
–ntasks |
-n |
Nombre de « tâches ». A utiliser pour le calcul parallèle. |
–cpus-per-task |
-c |
Nombre de CPU alloués à chaque tâche |
–ntasks-per-node |
Nombre de « tâches » par nœud. A utiliser pour le calcul parallèle. |
|
–time |
-t |
|
–constraint |
-C |
Architecture spécifique des nœuds |
–mem-per-cpu |
Mémoire demandée par CPU (par exemple 10G pour 10 GB) |
|
–mem |
Mémoire requise par noeud (par exemple 40G pour 40 GB) |
|
–mail-user |
Adresse de courrier électronique |
|
–mail-type |
Contrôlez les courriels envoyés à l’utilisateur lors d’événements professionnels. Utilisez TOUS pour recevoir des notifications par e-mail au début et à la fin du job. |
Des options supplémentaires sont disponibles dans la documentation officielle de Slurm.
Exemple de script run.sl pour les applications installer sur HPC
Vous trouvez sur le lien suivant des exemples de script que vous pouvez utiliser ou s’inspirer d’eux pour écrire votre script slurm :https://github.com/rahimbouchra/hpc_samples .
Exemple de script java run.sl
#!/bin/bash
#SBATCH -J Java
#SBATCH --partition=mediumq
#SBATCH --time=0-36:00:00
#SBATCH --mem=32G
#SBATCH -o %N.%j.%a.out
#SBATCH -e %N.%j.%a.err
echo "Compiling "
javac TestHpc.java
echo "Running "
java TestHpc
echo "Done"
Example de Script python run.sl
#!/bin/bash
#SBATCH --job-name=myPythonjob
#SBATCH --partition=defq #partition de test limitée a 2h, changer à shortq mediumq ou longq selon durée estimée
#SBATCH -o %x-%j.out #messages de log
#SBATCH -e %x-%j.err #messages d'erreurs
echo "Running "
python testpython.py
echo "Done"
Puis le lancer avec sbatch run.sl
Interactive jobs
La soumission des jobs à Slurm se fait soit en mode interactif soit en mode batch, Les jobs interactifs permettent à un utilisateur d’interagir avec des applications en temps réel dans l’environnement HPC. Les utilisateurs peuvent exécuter des applications d’interface utilisateur graphique (GUI), exécuter des scripts ou exécuter d’autres commandes directement sur un nœud de calcul.
Les utilisateurs sont invités à réserver les ressources nécessaires (nœud de calcul, CPU …) pour leur calcul. Ceux-ci peuvent être exécutés de deux manières, via salloc
et srun
. Si vous voulez juste une seule session interactive sur un nœud de calcul, alors utiliser srun pour allouer des ressources pour une seule tâche et lancer un script
$ srun -N 1 -n 1 --pty bash –i
$ srun --nodes=1 --ntasks-per-node=1 --time=01:00:00 --pty bash -i
Ici, nous demandons un seul cœur sur un nœud interactif pendant une heure avec la quantité de mémoire par défaut.
Vous pouvez également allouer un seul nœud ou plusieurs noeuds à l’aide de la commande salloc, puis voir les nœuds qui vous ont été alloués à l’aide de la commande squeue, puis srun ou mpirun pour démarrer les tâches. Par exemple, vous connectez au nœud principal via la commande ssh et allouer un nœud dans le cluster comme suit :
$ salloc -N 1 bash
salloc: Granted job allocation 109512
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
109512 batch bash robh R 0:12 1 odin006
$ ssh -X ordin006
salloc
/ srun
/ sbatch
prend en charge un large éventail d’options qui vous permettent de demander des nœuds, des processeurs, des tâches, des sockets, des threads, de la mémoire, etc. Si vous les combinez, SLURM essaiera de trouver une allocation raisonnable, donc par exemple si vous demandez 13 tâches et 5 nœuds ,SLURM satisfera votre demande . Voici ceux qui sont les plus susceptibles d’être utiles :
Option |
Description |
-n |
Nombre de tâches |
-N |
Nombre de nœuds à affecter. Si vous l’utilisez,vous pourriez également être intéressé par –tasks-per-node |
–tasks-per-node |
Tâches maximales à affecter par nœud si vous utilisez -N |
–cpus-per-task |
Attribuez des tâches contenant plusieurs CPU. Utile pour les jobs avec parallélisation de mémoire partagée |
-p, –partition |
Demandez une partition spécifique pour l’allocation des ressources.S’il n’est pas spécifié, la partitionpar défaut telle que désignée par l’administrateur système sera sélectionnée. |
-w |
Noms des nœuds à inclure - pour sélectionner un ou des nœuds particuliers |
–mem-per-cpu |
Utilisez ceci pour que SLURM vous attribue plus de mémoire que la quantité par défaut disponible par CPU |
Gestion des données
Systèmes de fichiers
Le cluster HPC-MARWAN contient 3 espaces disques /home , /data et /scratch pour la gestion des fichiers. Un dossier personnel est mis à la disposition de l’utilisateur sur chacun des espaces :
Le dossier personnel sur l’espace /home (/home/$USER) , limité à
100G
par utilisateur.Le dossier personnel sur l’espace /data (/data/$USER) , limité à
500G
par utilisateur.Le dossier personnel sur l’espace /scratch (/scratch/users/$USER) , limité à
500G
par utilisateur.
Il est recommandé d’utiliser l’espace /home pour les fichiers scripts de slurm , bash scripts et codes sources. les fichiers de grandes tailles ( input ou output ) doivent être placé dans le dossier personnel sur l’espace /data , /scratch .
Essayer de nettoyer régulièrement les dossiers /data/$USER , /home/$USER et /scratch/users/$USER en supprimant les fichiers et dossiers non utiles et en déplaçant les données pertinentes vers un stockage personnel.
Gestion du quota disque sur /home
Pour avoir plus d’information sur le quota, exécuter la commande :
$quota -s -f /home

Ou blocks
est la taille de votre espace /home/$USER en Megabyte, quota est le quota
de l’espace /home/$USER définit par le système, limit
est la taille maximum de /home/$USER qu’il ne peut jamais dépasser, grace
est le compteur déclenché si blocks
est égale ou supérieur à 100G
L’utilisateur ne peut pas dépasser la limite de 150G et aura immédiatement une erreur Disk quota exceeded
Au moment où l’utilisateur dépasse 100G sur son espace /home/$USER , un compteur de 14 jours
se déclenche et décrémente chaque jour. Il s’agit d’un délai donné à l’utilisateur afin de lui permettre de nettoyer son espace /home. A la fin de cette période, si la taille de /home/$USER est toujours supérieure à 100G, le système déclenchera une erreur de dépassement de quota disque Disk quota exceeded
le process qui precede s’applique aussi sur l’epace /data et /scratch
$quota -s -f /data

Pour plus d’informations sur votre espace de stockage beegfs (/scratch), tapez la commande suivante:
$srun -p defq -C beegfs beegfs-ctl --getquota --uid $UID

Commandes Utiles
Pour vérifier le contenu des dossiers :
$ls -al /data/$USER
$ls -al /home/$USER
Pour vérifier la taille des dossiers, utiliser la commande :
$du -sh /data/$USER
$du -sh /home/$USER
Pour vérifier la taille des sous dossiers :
$du -h /data/$USER --max-depth 1
$du -h /home/$USER --max-depth 1
Gestion des modules d’environnement
Afin de répondre au mieux aux divers besoins de tous nos chercheurs, Les logiciels sur HPC-MARWAN sont principalement gérés par un système de modules lmod
. En chargeant et en commutant les modules, vous contrôlez les compilateurs, les bibliothèques et les logiciels disponibles.
Lorsque vous compilez ou exécutez des programmes sur HPC-MARWAN, vous devez configurer les modules appropriés, pour charger votre compilateur et toutes les bibliothèques requises (par exemple, les bibliothèques numériques, les bibliothèques de format d’entrée/sortie).
Afin de gérer ces logiciels, le cluster HPC-MARWAN utilise des fichiers de module
.
Ces fichiers de module vous permettent de spécifier facilement quelles versions de quels paquets vous souhaitez utiliser.
Pour plus d’informations, consultez la documentation en ligne sur le système de module d’environnement : https://lmod.readthedocs.io/en/latest/010_user.html
Liste de tous les modules chargés
La commande module list
affiche tous les noms des modules et de leurs versions qui sont actuellement chargés dans votre environnement :

Trouver les modules disponibles
Pour lister les modules disponibles sur le système, on utilise la commande module avail
:

Vous pouvez également lister tous les modules dont le nom contient une chaîne de caractères spécifique. Par exemple, pour trouver tous les fichiers de module Python, utilisez module avail python
:

Si un logiciel n’est pas disponible dans la liste des modules, n’hésitez pas à nous envoyer une demande d’installation du logiciel à hpc@marwan.ma .
Charger et décharger les modules
Pour charger un module, on utiliser la commande module add
ou module load
. Par exemple, si vous avez trouvé et souhaitez charger la version 3.7.4 de Python, exécutez la commande :
module load python/3.7.4
module add python/3.7.4
Vous pouvez charger la version par défaut d’un module. Par exemple, pour charger la version par défaut du compilateur gcc
:

Vous pouvez également décharger / supprimer un module que vous avez déjà chargé, on utilisant les commande module unload
, ou module rm
:

Collections des modules
Les utilisateurs peuvent créer des collections des modules, qui contiennent la liste des modules à charger chaque fois que vous vous connectez au cluster.
Cette méthode est particulièrement utile si vous avez deux ou plusieurs ensembles de modules qui peuvent entrer en conflit les uns avec les autres.
Pour créer une collection sauvegardée, il suffit de charger tous les modules souhaités, puis de taper module save
afin d’enregistrer cet ensemble des modules comme votre ensemble par défaut.
Si vous souhaitez avoir plusieurs collections des modules, il suffit d’attribuer un nom à la collection en tapant module save environnement_name
.

Pour charger la collection par défaut ou spécifiée, tapez respectivement module restore
, module restore environnement_name
.

Pour modifier une collection, restaurer la collection, effectuer les changements souhaités en chargeant et/ou en déchargeant des modules et à sauvegarder sous le même nom.
Un utilisateur peut lister les collections dont il dispose en tapant module savelist
:

Tutoriel
L’application ARB
Vu le fait que l’application ARB fonctionne en mode graphique, on vous demande de lancer l’application dans un nœud de calcul libre, et non pas au niveau de la machine login login-hpc.marwan.ma, en exécutant les étapes suivantes :

Allocation de ressource: allocation de nœud de calcul libre pour une durée de 2 heure par défaut, vous pouvez la changer en spécifiant la partition avec l’option « -p » (pour plus de détails sur les partitions voir le lien https://slurm.schedmd.com/salloc.html) :
$salloc -n1
$squeue --job 65467 :JOBID donnée par la commande précédente.
se connecter en mode ssh au noeud réservé au job donnée par la commande précédente.
$ssh -X node07
une fois connecté au nœud , charger les modules nécessaires pour le lancement de l’application ARB :
$module load ARB/gcc/18314
Puis lancer l’application:
$arb

Avertissement
N’oubliez pas de libérer les ressources réservés (nœud de calcul) à la fin du calcul :
$cancel 65467
L’application NetLogo
Vu le fait que l’application NetLogo fonctionne en mode graphique, on vous demande de lancer l’application dans un nœud de calcul libre, et non pas au niveau de la machine login(login-hpc.marwan.ma), en exécutant les étapes suivantes :

location de ressource: allocation de nœud de calcul libre pour une durée de 2 heure par défaut, vous pouvez la changer en spécifiant la partition avec l’option « -p » (pour plus de détails sur les partitions voir le lien https://slurm.schedmd.com/salloc.html ) :
se connecter en mode ssh au noeud libre donnée par la commande précédente :
$ssh -X node16
une fois connecté au nœud , charger les modules nécessaires pour le lancement de l’application NetLogo :
$module load NetLogo/6.1.1
Lancement de l’application NetLogo :
$NetLogo

Attention
N’oubliez pas de libérer les ressources réservés (nœud de calcul) à la fin du calcul :
$cancel 79860
L’application ParaView
Ce tutoriel vous montre comment exécuter ParaView avec le client fonctionnant sur votre bureau et les tâches pvserver s’exécutant en parallèle sur le cluster HPC-Marwan. Ce tutoriel suppose que vous avez déjà installé une copie de ParaView sur votre pc . Si ce n’est pas le cas, veuillez consulter la page principale de ParaView pour les instructions de téléchargement (le lien de paraview client correspendant à la version installée sur HPC-Marwan est le suivant : lien ). Si vous utilisez Windows, vous devrez installer un logiciel supplémentaire, par exemple Mobaxterm , pour configurer les tunnels SSH.
Etapes de configuration client-serveur
Allocation de ressource
Sur la machine de connexion hpc-login.marwan.ma, utilisez la commande appropriée pour allouer un nœud de calcul libre (srun, salloc ). Vous devez utiliser les différents d’option pour spécifier les détails de la commande tels que le nombre de nœuds, les limites de temps, la partition des nœuds à utiliser. Par exemple:
srun -N 1 -n 1 -p defq --pty bash –i
L’option ``defq`` vous permet d’utiliser la partition par defaut (2h)
Démarrer le(s) serveur(s)
Une fois que les nœuds sont réservés (dans les prise d’écran, le nœud réservé est : node4 ), vous serez connecté à une ligne de commande interactive sur le premier nœud du travail par lots. Charger le module paraview, et lancer le serveur pvserver souhaitées. Par exemple :

Par defaut Paraview utilise le port 11111
Créer un tunnel SSH
Afin de créer des tunnels SSH vers ou depuis votre système Windows, vous aurez besoin d’un logiciel supplémentaire. Nous vous recommandons d’utiliser Mobaxterm comme client SSH sur Windows. Les suivantes vous montrent comment vous pouvez créer un tunnel ssh entre votre machine, la machine hpc-login.marwan.ma et le nœud de calcul réservé auparavant (node4)


Connecter le client ParaView
Une fois que vous avez un pvserver en cours d’exécution sur le cluster, vous pouvez vous connecter à partir de votre client de bureau. Ouvrez ParaView sur votre bureau (si vous ne l’avez pas déjà fait fonctionner). Ensuite, cliquez sur l’icône Connexion, ou sélectionnez Fichier -> Connexion dans les menus.
Cela ouvrira le dialogue de connexion. La première fois que vous vous connecterez à partir de votre client, vous devrez configurer un nouveau serveur. Vous ne devriez avoir à le faire qu’une seule fois ; la configuration sera enregistrée et ajoutée à la liste.
Entrez les valeurs comme indiqué ici pour configurer la connexion. Le « Nom » peut être tout ce que vous souhaitez utiliser pour identifier cette configuration à l’avenir.

Vous choisissez le dossier de travail( par défaut , il va pointer sur le dossier /home/login, il faut monter à / puis choisir /data/login)

Vous pouvez choisir un lecteur (OpenFoam) pour simuler vos données, voir la figure suivante :

A la fin de vos simulation, vouliez arrêter le tunnel ssh et fermer la session ssh vers le nœud de calcul réservé (exit)

L’application Jupyter notebook
Pour accéder à Jupyter Notebook à partir de votre navigateur, vous devez passer par un tunnel ssh. Voici les étapes principales à suivre :
Creation d’un environnement Conda sur votre espace de travail. en poursuivant les étapes décrites dans le lien suivant:https://github.com/HPC-MARWAN-Team/hpc_samples/tree/master/Anaconda et installation de jupyter à l’aide de la commande
conda install
Réservation d’un core d’un nœud de calcul libre via la commande :
srun -N 1 -n 1 -p defq --pty bash -i
Vous pouvez ajouter d’autres argument pour demander une partition spécifique ou plus de cores, pour plus d’informations voir la documentation sur la commande srun –help
. Par défaut cette commande vous donne accès ssh à un des nœuds de calcul où vous pouvez lancer Jupyter Notebook. L’option defq
de cette commande vous permet d’accéder à ce nœud durant 2h.

Charger l’environnement Conda que vous avez crée dans l’étape precedente sur le nœud de calcul réservé auparavant (pour notre exemple de test c’est node11) . l’environnement Conda installé sur le cluster HPC-MARWAN est anaconda, voici les lignes de commandes a exécuter pour charger l’environnement anaconda et activer l’application jupyter :
export CONDA_ENVS_PATH=/data/$USER/envs
module load Anaconda3
source activate my_Env_Name
Lancer Jupyter Notebook en précisant un numéro de port (40000 par exemple)
jupyter notebook --no-browser --port=40000 --ip=node11

Note
Noter le token généré par Jupyter pour sécuriser l’accès
Sur Windows
a l’aide de l’application MobaXterm , créer le tunnel ssh :

Et le configurer pour permettre le forwarding entre
un port libre dans votre machine locale (exemple 8080)
la machine hpc-login.marwan.ma(port 22 )
et le nœud alloué (pour notre exemple : node11 , port 40000)

Puis lancez le tunnel (bouton ‘Start’ ) et tapez le mot de passe de votre compte ssh et le code de vérification sur la machine hpc-login.marwan.ma

Sur Linux
Ouvrir un terminal et lancer la commande suivante:
ssh username@hpc-login.marwan.ma -L8080:node11:40000 -N
Une fois le tunnel ssh démarré, vous pouvez vous connecter via le navigateur de votre machine local (de préférence Firefox ou Chrome) après avoir fourni le token généré (par exemple : db3648aa8efc526c89239523acda3a166ce17389fab97c94), voir la figure suivante :

Pour terminer l’allocation des ressources (node11 dans l’exemple), il suffit d’arrêter le notebook (ctrl –c) et de faire un exit du nœud réservé.
L’application SNAP
Vu le fait que l’application SNAP fonctionne en mode graphique, on vous demande de lancer l’application dans un nœud de calcul libre, et non pas au niveau de la machine login login-hpc.marwan.ma, en exécutant les étapes suivantes :

Allocation de ressource: allocation de nœud de calcul libre pour une durée de 2 heure par défaut, vous pouvez la changer en spécifiant la partition avec l’option « -p » . vus que l’application SNAP est configuré pour utilisé jusqu’à 16 threads et 10G de memoire, vous pouvez spécifier le nombre de cpu, et la taille de memoire a alloué , en changeant l’option «-n » et ajoutant l’option «–mem » , (pour plus de détails sur les options de la commande salloc voir le lien https://slurm.schedmd.com/salloc.html) :
Se connecter en mode ssh au noeud réservé au job donnée par la commande précédente.
$ssh -X node01
Une fois connecté au nœud , charger les modules nécessaires pour le lancement de l’application SNAP :
$module load SNAP/8.0
Puis lancer l’application:
$snap


Avertissement
N’oubliez pas de libérer les ressources réservés (nœud de calcul) à la fin du calcul :
$exit
$cancel 115113
Portail Jupyter Hub
Accès au Portail Jupyter
En plus de la soumission de job via Slurm avec les commandes bash , le service HPC-MARWAN fournit a mis en place portail jupyterhub : https://hpc-jupyter.marwan.ma:8000/ pour faciliter l’execution des Jupyter Notebooks sur les noeuds de calcul du cluster .
Ouvir une session
Se connecter avec le nom d’utlisateur et le mot de passe de votre compte :

Explorateur de fichier
le portail fournit un explorateur de fichiers qui vous permet la gestion de vos fichiers ( inputs , scripts , notebooks ,…) via le navigateur .

Gestion de kernels
Selon la définition de Jupyter https://docs.jupyter.org/en/latest/projects/kernels.html
Note
Kernels are programming language specific processes that run independently and interact with the Jupyter Applications and their user interfaces. ipykernel is the reference Jupyter kernel built on top of IPython, providing a powerful environment for interactive computing in Python.
Au niveau du cluster HPC-MARWAN , des modèles de création de kernel Templates sont proposés pour assurer l’intégration avec le gestionnaire de calcul SLURM . Ceci permet à l’utiulisateur de lancer ses kernels sur les noeuds de calcul du cluster .
Création de kernel
Vous pouvez créer une template pour définir l’environnement d’execution de votre job via la menu suivant :

HPC-MARWAN propose deux template de kernel :
Template |
Description |
---|---|
Python 3.7 via Slurm |
utilise la version python et les modules installés par défaut |
Conda via Slurm |
utilise l’environnement Conda préparé par l’utilisateur |
Pour plus de détail , voir la section [Kernel templates de HPC-MARWAN](<#kernel-templates-de-hpc-marwan> « Kernel templates de HPC-MARWAN »)
Pour créer un nouveau kernel , choisir la template à utiliser et cliquer sur le bouton ``+ ``

Un popup s’ouvre avec plusieurs options à remplir selon le besoin de l’utilisateur , tels que :
Nombre de Tasks ( pour les job MPI)
list des modules à charger

Partition pour l’allocation de ressources

Utilisation du kernel
Pour exploiter le kernel , il suffit de l’assosier à votre notebook :

Attendre l’initialisation du kernel (INITIALIZING)

une fois le kernel pret (IDLE)

vous pouver lancer interactivement les cellules du notebook :

un kernel initialisé correspond à une allocation de ressource via SLURM que vous pouvez visualiser avec la commande squeue au niveau de la session ssh vers la machine de login :
[b.rahim@login02 ~]$ squeue -u $USER
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
144585 defq jupyter- b.rahim R 25:53 1 node22
Arrêt du kernel
a la fin de votre simulation , vous pouvez arreter le kernel via l interface

et s’assurer que l’allocation a bien été annulée avec la commande squeue
Kernel templates de HPC-MARWAN
HPC-MARWAN propose deux type de kernel :
Python 3.7 via Slurm
Cette template permet d’exploiter l’environnement par défaut installé sur HPC-MARWAN correspond à python 3.7 et propose des modules IA/DataScience avec intégration des GPU (CUDA) :
ml-pythondeps-py37-cuda11.2-gcc8
nccl2-cuda11.2-gcc8
opencv4-py37-cuda11.2-gcc8
pytorch-extra-py37-cuda11.2-gcc8
pytorch-py37-cuda11.2-gcc8
tensorflow2-extra-py37-cuda11.2-gcc8
tensorflow2-py37-cuda11.2-gcc8
Conda via Slurm
Cette template permet d’exploiter votre propore environnement python crée par Anaconda
il faut ajouter le package cm-jupyter-eg-kernel-wlm a votre environnement pour l’integrer au gestionnaire de tache SLURM :
$module load Anaconda3/2021.11
$conda activate my_env
$pip install cm-jupyter-eg-kernel-wlm==2.0.0
puis créer une template en spécifiant le nom de l’environnement à utiliser :

Kernel sur GPU
L’utilisation des cartes GPU nécessite de spécifier :
Le modèle de cartes GPU ( Tesla P100 ou Volta S100 ) ;
Une des partitions spécifique au GPU :
gpu-testq
ougpu-prodq
selon la durée estimées ( 1 heure ou 7 jours respectivement ) ;Account
gpu_users
si l’utulisateur est autorisé à réserver les cartes GPU ;
ci dessous un exemple de création de kernel pour GPU

et son exploitation sur un exemple de notebook affichant le nom du noeud et le type de carte GPU

Questions Fréquemment Posées
Q01 Principe de fonctionnement de HPC
Q02 Que dois-je faire pour être autorisé à utiliser le cluster HPC-MARWAN?
Q03 Ai-je besoin d’un programme spécial pour accéder au cluster HPC?
Q04 Combien d’espace disque puis-je utiliser?
Q06 Formulaire reçue incomplet
Q08 Probléme de lancement d’un calcul
Q09 Combien de calculs je peux lancer ?
Q10 Comment annuler un process lancé par erreur sur la machine login?
Q11 Saisie de mot de passe ou de code de vérification sur le client SSH
Q01 Principe de fonctionnement de HPC
En principe, l’utilisation du cluster de calcul haute performance se fait en mode batch
.Ce qui signifie que le chercheur prépare ses fichiers inputs au préalable et lance le calcul via une commande sbatch
.
Le calcul atterrit par la suite dans une file d’attente contenant d’autres calculs appartenant aux autres utilisateurs du HPC
squeue
et le gestionnaire des calculs (SLURM pour notre cas) a pour rôle d’affecter une ressource libre au premier calcul de la file d’attente.
Le calcul est géré par SLURM et le chercheur peut fermer la session . Il peut consulter de temps en temps l’état de calcul avec le commande
squeue
pour voir si son calcul a été lancé.Une fois le calcul lancé, le chercheur consulte le dossier d’exécution et suit l’avancement via les fichiers logs et outputs.
Quand le calcul se termine, il disparait de la file d’attente et le chercheur peut récupérer les résultats sur son laptop.
Les commandes utiles pour le mode batch sont décrite dans la deuxième partie du tutoriel : Gestion des calculs.
Le mode interactif avec interface graphique est aussi possible, mais présente des limitations. S’il n’y a pas de ressources libre, le chercheur doit attendre devant son pc jusqu’à que la ressource lui soit affectée .
Une fois il a la main et fait les manipulations nécessaires, il ne doit pas quitter la session jusqu’à la fin de l’exécution. Aussi la réservation de la ressource ne peut généralement pas dépasser quelques heures si le programme ne se termine pas avant, il sera arrété.
Note
Nous conseillons au chercheur d’utiliser le mode batch
pour la partie lourde du travail,programme qui a besoin d’un temps de calcul important ,
et laisser le mode interactif pour le post-processing
par exemple la visualisation d’un fichier output.
Q02 Que dois-je faire pour être autorisé à utiliser le cluster HPC-MARWAN?
Afin d’accéder au Cluster HPC-MARWAN , il vous suffit de remplir ce formulaire , le signer et le retourner à l’équipe HPC-MARWAN par l’un des moyens suivants :
En vous rendant au CNRST , Angle Allal Al Fassi et Avenue des FAR, Hay Ryad, BP. 8027 10102 Rabat
Par Fax : (+212) 05 37.56.98.34
Par Mail :hpc@marwan.ma
Une fois la demande reçue ,l’équipe vous contactera dans les plus brefs délais pour la création du compte d’accès.
Q03 Ai-je besoin d’un programme spécial pour accéder au cluster HPC?
Cela dépend du système d’exploitation que vous utilisez sur votre ordinateur privé et de la façon dont vous devez utiliser le système HPC. Vous avez besoin d'un client SSH
pour pouvoir vous connecter au système.
Si vous souhaitez utiliser des programmes avec une interface utilisateur graphique, vous pouvez installer le logiciel Mobaxtream
(disponible pour Windows). Les instructions sont disponibles sous le rubrique Guide utilisateur.
Q04 Combien d’espace disque puis-je utiliser?
Chaque utilisateur de HPC-MARWAN dispose d’un répertoire personnel de 100Go
(/home/login). Vous pouvez déposer vos fichiers volumineux sur /data/login ou /scratch/users/login ,dont la limite est 500 Go chacun.
Q05 Demander de l’aide
Le modèle de soutien du service HPC-MARWAN fournit une assistance personnelle individualisée pour répondre aux besoins uniques et complexes de chaque chercheur.
Si vous avez des questions ou si vous avez besoin d’aide pour utiliser le cluster, envoyez un e-mail à hpc@marwan.ma.
Q06 Formulaire reçue incomplet
Au cas de réception du formulaire incomplet,nous demandons à l’utilisateur de nous ré-envoyez le formulaire rempli et signé.
Q07 Problèmes d’accès à l’HPC
La majorité des problèmes d’accès à l’HPC-MARWAN, sont dus:
Plusieurs tentative de connexion erronées.
Mot de passe erronée (erreur de frape/ ajout d’espace …).
Adresse IP public bloquée.
Pour cela on demande aux utilisateurs de nous envoyer une capture d’écran du message d’erreur, et de nous envoyer leur adresse IP public https://www.whatismyip.com.
Q08 Probléme de lancement d’un calcul
En cas d’utilisation d’un éditeur de fichier sous Windows pour écrire le script Slurm run.sl ; le lancement de ce dernier run.sl sous linux, vous donnera l’erreur suivante :
$ sbatch run.sl
sbatch: error: Batch script contains DOS line breaks (\r\n)
sbatch: error: instead of expected UNIX line breaks (\n).
Afin de résoudre se problème, on vous propose d’utiliser un éditeur de fichier (Notepad++) qui permet de spécifier linux comme format.

Q09 Combien de calculs je peux lancer ?
Le nombre de calculs qui peuvent être exécutés Etat Running
simultanément pour chaque utilisateur est de 10
calculs.
Le nombre de calcul pouvant être placés dans la queue Etat Pending
est limité à 10
calculs.
Le nombre de CPU pouvant être exploité par un utilisateur est limité à 64
CPU.
Q10 Comment annuler un process lancé par erreur sur la machine login?
Afin de lister les process lancés par l’utilisateur , utiliser la commande suivante :
ps -o uid_hack,pid,lastcpu,%cpu,cmd --headers -u username -L
Pour annuler un process :
kill -9 PID
(PID est l’identifiant du process affiché via la commande précédente)
Q11 Saisie de mot de passe ou de code de vérification sur le client SSH
Lorsque vous vous connectez à Linux, vous devez saisir un mot de passe. Si vous entrez le mot de passe correctement, , vous devez simplement appuyer sur la touche « Entrée » après avoir saisi le mot de passe pour ouvrir une session. Il est important de noter que Linux est différent des autres systèmes d’exploitation, comme Windows ou MacOS, car il ne montre pas les caractères de mot de passe que vous tapez à l’écran. Cela signifie que lorsque vous tapez votre mot de passe, il n’y aura pas d’étoiles ou de points qui apparaissent à l’écran. C’est une mesure de sécurité pour empêcher les autres personnes de voir votre mot de passe si elles sont à proximité de vous. Donc, ne vous inquiétez pas si vous ne voyez pas les caractères que vous tapez, Linux est toujours en train de les enregistrer.