HPC resources
To learn more about Baobab, visit https://plone.unige.ch/distic/pub/hpc/baobab_en
To learn more about Scylla, see below.
La machine Scylla
Scylla
est une machine parallèle à mémoire distribuée/partagée possédant les caractéristiques suivantes:
-
40 Intel Westmeres 5500 (Xeon) Hexa-cœurs (240 cœurs disponibles)
-
960 Go de RAM
Ces ressources sont réparties de la manière suivante sur les 20 nœuds de calcul de Scylla
:
-
chaque nœud est composé de 2 Westmeres (12 cœurs par nœud)
-
les 12 cœurs de chaque nœud partagent 24 Go de RAM
Utilisation de Scylla
Connexion
Pour utiliser la machine vous devez vous connecter à la machine via le nom Scylla0
avec ssh
:
$ ssh scylla0.unige.ch -l login_etudiant
et entrer le mot de passe qui vous a été donné ou utiliser votre mot de passe du CUI. Notez que cette machine est accessible uniquement depuis le réseau interne de l'Université. Si vous voulez vous connecter à cette machine depuis l'extérieur vous devez passer par la machine cuilxa.unige.ch
.
Arborescence
L'arborescence de Scylla est un peu différente des autres machines du CUI par le fait que cette dernière ne monte pas votre home
du CUI. La conséquence est que lorsque vous vous connectez à Scylla
le répertoire dans lequel vous vous trouvez est un home
local à la Scylla
.
Néanmoins votre home
est tout de même accessible et est monté dans /cui/home/xxx
où xxx
est votre nom d'utilisateur du cui
. Notez qu'il est normal de ne pas voir son répertoire en listant les répertoires de /cui/home
étant donné que les répertoires sont montés lorsque l'on tente d'y accéder.
Le .bashrc
Comme le home
de Scylla n'est pas celui du CUI, vous devez modifier votre .bashrc
qui se trouve dans votre répertoire local à scylla
afin de pouvoir importer les librairies et les outils utiles pour accomplir les projets du cours.
Pour utiliser les compilateurs ainsi que le système de gestion de ressources vous devez ajouter les lignes suivantes:
module load gcc module load maui module load torque module load openmpi/gcc
Compilation
Pour compiler sur scylla
vous pouvez utiliser le compilateur mpicxx
qui s'utilise comme le compilateur mpiCC
sur le PC69240.poulailler
L'outil TORQUE
Cette page est une brève introduction au système d'ordonnancement des tâches et de gestion des ressources TORQUE
(Terascale Open-Source Resource and QUEue Manager). Cet outil permet, entre autres, de:
-
procéder à des soumission automatique de tâches;
-
surveiller l'exécution des tâches;
-
gérer les priorités pour contrôler l'ordre d'exécution de différentes tâches indépendantes.
Cet outil permet donc de gérer la répartition des ressources disponible sur une machine entre différentes tâches.
Scripte d'exécution
Pour exécuter votre programme sur une des machines parallèles vous devez le soumettre au système de gestion de ressources de la machine. La soumission d'un job passe par la création d'un script et l'utilisation du programme qsub
auquel vous passez votre scripte en argument.
Temps d'exécution et ressources
Les scriptes passé au système de gestion de ressources doit contenir au minimum les informations suivantes:
-
le temps d'exécution maximal de votre programme;
-
le nombre de ressources nécessaires à votre programme;
-
la commande exécutant votre programme.
Les informations sont soumises sous la forme de commentaires dans votre scripte que Torque
pourra interpréter. La forme à utiliser pour spécifier ces informations est
#PBS -x name/value
où name/value
est le nom et/ou la valeur de l'option que l'on souhaite assigner:
#PBS -l walltime=04:00:00 #PBS -l nodes=2:ppn=8 #PBS -q spc
Dans ce cas précis walltime
est le temps maximal que peut prendre votre programme à s'exécuter au format hh:mm:ss
. Passer le délais du walltime
le système tuera votre job.
L'option nodes=x:ppn=y
permettent de spécifier le nombre le nombre de nœuds (x
) et de cœurs par nœuds (y
) que vous votre programme peut utiliser.
Dans l'exemple ci-dessus on spécifie au gestionnaire de ressource que l'on va utiliser 8 cœurs et 2 nœuds, c'est-à-dire que l'on aura à disposition un total de 16 unités de calculs. Vous devez prendre en compte la manière dont sont répartis les unités de calcul dans la machine.
Par exemple si chaque nœud d'une machine est composé de 3 processeurs quadri-cœurs (un total 12 cœurs) et que vous voulez utiliser 36 cœurs, vous devez réserver 3 nœuds et 12 cœurs par nœud. Ce qu'il faut retenir c'est que pour réserver les ressources correctement il est important de comprendre comment la machine est construite.
La ligne #PBS -q spc
permet de spécifier la file d'attente à utiliser. Dans ce cas le nom de la file est spc
. Les étudiants doivent utiliser la file d'attente nommée etu
sur scylla et default
sur PC69240.
Sortie
Lorsqu'un programme est exécuter par Torque
les sorties standard et d'erreur sont redirigées automatiquement vers deux fichiers dont les noms sont
-
le
nom_du_script.sh
concaténé avec.o
concaténé avec le numéro du job assigné parTorque
pour la sortie standard -
le
nom_du_script.sh
concaténé avec.e
concaténé avec le numéro du job assigné parTorque
pour la sortie d'erreur
Par exemple si l'identifiant associé au job est 7997 et que le scripte fourni à Torque
est myscript.sh
, les fichiers de sortie se nommeront myscript.o7997
et myscript.e7997
. Notez que le système informe de l'identifiant du job lorsque ce dernier lui est soumis.
Il est donc normal que vous n'ayez pas d'affichage à l'écran lorsque votre programme est exécuté. Toutefois il est possible de spécifier le nom des fichier de sortie de sorte à ce que ces derniers ne contiennent pas le nom du script mais un nom de votre choix:
#PBS -N nom_de_la_sortie
Exécution de la tâche
Pour que TORQUE
exécute votre tâche, il suffit de spécifier dans le script quelle est la commande à utiliser pour exécuter votre tâche:
# IMPORTANT: toujours se placer dans le répertoire de travail # ceci même si le script se trouve déjà dans le bon # répertoire cd /home/my/working/directory # commande à lancer pour exécuter la tâche mpirun -np 16 ./my_exec 1204
Dans cet exemple le programme à exécuter compilé se nomme my_exec
que je souhaite exécuter avec mpirun
afin d'avoir une exécution parallèle de mon programme sur 16 cœurs. On peut aussi passer les arguments nécessaires au programme, comme c'est le cas ici avec la valeur 1204
. Notez qu'il est aussi très important de ne pas oublier pas de vous placer dans votre répertoire de travail (utilisez la commande cd
).
Utilisation de Torque
Enfin, pour pouvoir exécuter votre programme, vous devez simplement faire appel à Torque avec:
$qsub my_script.sh
qui, sur Scylla, produit la sortie suivante:
7997.scylla0.cm.cluster
où 7997 est le numéro du job qui a été soumis.
Les commandes suivantes vous permette de connaître l'état de la file d'attente ainsi que des jobs que vous avez soumis:
-
qstat
qui vous donne l'état de vos jobs -
showq
qui vous liste tous les jobs de la machine ainsi que leur état
Sur Scylla la commande qstat
donne:
$ qstat Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 7997.scylla0 my_script.sh username 0 R spc
qui fournit, entre autre, le numéro du job (Job id
) et l'état (S
). Habituellement on a affaire à deux états:
-
R
qui informe que le job est en cours d'exécution; -
Q
qui informe que le job est en attente ou bloqué.
La commande showq
donne sur la même machine:
$ showq ACTIVE JOBS-------------------- JOBNAME USERNAME STATE PROC REMAINING STARTTIME 7997 username Running 16 4:00:00:00 Sat Aug 6 11:37:20 1 Active Job 16 of 240 Processors Active (6.67%) 2 of 20 Nodes Active (10.00%) IDLE JOBS---------------------- JOBNAME USERNAME STATE PROC WCLIMIT QUEUETIME 0 Idle Jobs BLOCKED JOBS---------------- JOBNAME USERNAME STATE PROC WCLIMIT QUEUETIME
Cette commande fournit des informations sur les jobs qui peuvent se trouver dans trois états différents.
-
Active jobs liste les jobs en cours d'exécution sur la machine. Les détails précisent quelles sont les ressources utilisées, le temps d'exécution maximal du job (walltime) et le nom de l'utilisateur qui a lancé le job.
-
Idle jobs liste les jobs en attente d'être exécuter. S'il n'y a pas assez de ressources disponibles un job est mis en attente. Notez que tous les jobs passent par cet état avant d'être exécutés.
-
Blocked jobs liste les jobs qui sont bloqués sur la machine et ne seront probablement jamais exécuter. Ceci peut se produire si, par exemple, vous demandez plus de ressources que la machine peut fournir.
La commande qdel
vous permet de supprimer un job de la file d'attente ou en cours d'exécution. La commande qdel
prend en paramètre le numéro d'identification du job. Ce numéro est affiché lors de la soumission du job ou est visible avec les deux commandes précédentes. Dans le cas des exemples de commande précédents il faudrait utiliser la commande comme ceci:
qdel 7997
Le script complet
Voici le script complet. Notez que les ressources demandée à TORQUE
correspondent aux ressources utilisée par mpirun
.
#!/bin/sh #PBS -l walltime=04:00:00 #PBS -l nodes=2:ppn=8 #PBS -N nom_de_la_sortie # IMPORTANT: toujours se placer dans le répertoire de travail # ceci même si le script se trouve déjà dans le bon # répertoire cd /home/my/working/directory # commande à lancer pour exécuter la tâche mpirun -np 16 ./my_exec 1204