Cluster de calcul HPC2
Le cluster HPC2, mis en production en 2015. Il est accessible par ssh sur le frontal : hpc2.mesocentre.uca.fr. Il est possible de se connecter via une session graphique au frontal hpc2, voir la documentation X2Go.
Les jobs sont gérés par SLURM et les environnements des applications installées sont gérés sous forme de modules d'environnement.
Stockage
L'espace personnel des utilisateurs est partagé par NFS entre tous les nœuds et le frontal hpc2. Il est monté automatiquement à la connexion dans /home/<login>.
Note
L'espace alloué à chaque utilisateur est de 100Go par défaut.
Le scratch local est monté dans /storage/scratch (512Go). C'est un espace de stockage local à chaque nœud et dédié à l'espace de travail des jobs. Tous les utilisateurs peuvent écrire dans ces scratch locaux, il est donc préconisé que chaque utilisateur se crée un répertoire protégé avant d'y copier des données. Un nettoyage automatique est effectué régulièrement.
Nœuds
Les nœuds sont configurés de la même façon : les mêmes logiciels, les mêmes bibliothèques, les mêmes modules, avec des versions identiques, et les mêmes configurations sont déployés sur les noeuds de calcul, permettant à vos jobs de fonctionner sur n'importe quelle machine du cluster.
Voici le détail des ressources du cluster HPC2:
Noeuds | Qtté | CPU | HT | Coeurs | RAM | Features | Spécificités |
---|---|---|---|---|---|---|---|
hpcnode[01-04] | 4 | 2 x Intel Xeon E5-2670 2.60GHz (Sandy Bridge) | Non | 16 | 64Go | noht, sandy | |
hpcnode[05-08] | 4 | 2 x Intel Xeon E5-2650 v2 2.60GHz (Ivy Bridge) | Oui | 32 | 96Go | ht, ivy | |
hpcnode[09-24] | 16 | 2 x Intel Xeon E5-2650 v2 2.60GHz (Ivy Bridge) | Oui | 32 | 128Go | ht, ivy | |
hpcnode[25-28] | 4 | 2 x Intel Xeon E5-2650 v2 2.60GHz (Ivy Bridge) | Oui | 32 | 256Go | ht, ivy | |
hpcnode[29-36] | 8 | 2 x Intel Xeon E5-2650 v2 2.60GHz (Ivy Bridge) | Oui | 32 | 128Go | ht, ivy, qdr | |
hpcnode37 | 1 | 32 x AMD EPYC 7513 32-Core Processor | Oui | 64 | 128Go | ht,zen3,10g | |
hpcnode38 | 2 | 10 x Intel Xeon E5-2650 v3 2.30GHz (haswell) | Oui | 40 | 256Go | ht,haswell,10g | |
hpcnode39 | 1 | 12 x Intel Xeon E5-2650 v4 2.20GHz | Oui | 40 | 256Go | ht,broadwell,10g | 1 x NVIDIA T4 16Go |
hpcnode40 | 1 | 12 x Intel Xeon E5-2650 v4 2.20GHz | Oui | 40 | 256Go | ht,broadwell,10g | |
hpcphi01 | 1 | 2 x Intel Xeon E5-2650 v2 2.60GHz (Ivy Bridge) | Oui | 32 | 96Go | ht, ivy, phi | 1 x Intel Xeon Phi 7120P |
hpcsmp01 | 1 | 16 x Intel(R) Xeon(R) CPU E7-8890 v4 2.20GHz (Broadwell) | Oui | 768 | 12000 Go | ht, broadwell, 10g | |
simatlabnode[01-04] | 4 | 2 x Intel Xeon E5-2650 v4 2.20GHz (Broadwell) | Oui | 48 | 128Go | ht, broadwell | |
simatlabnode[05-07] | 3 | 2 x Intel Xeon Gold 5118 2.30GHz (Broadwell) | Oui | 48 | 128Go | ht, broadwell, 10g | |
simatlabnode[08-10] | 3 | 2 x Intel Xeon Gold 5218 2.30GHz (Cascade Lake) | Oui | 64 | 256Go | ht, cascadelake, 10g | |
simatlabnode[11,13-19] | 3 | 2 x AMD EPYC 7702 2.00GHz (Zen2) | Oui | 256 | 512Go | ht, zen2, 10g | |
simatlabnode12 | 1 | 2 x AMD EPYC 7702 2.00GHz (Zen2) | Oui | 256 | 1024Go | ht, zen2, 10g | |
simatlabgpu01 | 2 x AMD EPYC 7713 2.00GHz (Zen3) | Oui | 256 | 1024Go | ht, zen3, 10g | 2 x NVIDIA A100 80Go | |
piafgpu01 | 1 | 2 x Intel Xeon Gold 6130 2.10GHz (Skylake) | Non | 32 | 192Go | noht, skylake, 10g | 2 x NVIDIA P100 16Go |
iccfgpu01 | 1 | 4 x Intel Xeon Gold 6138 2.00GHz (Skylake) | Non | 80 | 384Go | noht, skylake, 10g | 1 x NVIDIA P100 16Go |
hpcgpu01 | 1 | 2 x Intel Xeon Gold 5118 2.30GHz (Skylake) | Oui | 48 | 192Go | ht, skylake, 10g | 2 x NVIDIA P40 24Go |
hpcdgx01 | 1 | 2 x Intel Xeon E5-2698 v4 2.20GHz (Broadwell) | Oui | 80 | 512Go | ht, broadwell, 10g | 8 x NVIDIA V100 32Go |
medisnode01 | 1 | 2 x AMD EPYC 7452 32-Core Processor | Oui | 128 | 256Go | ht,zen2,10g | |
gdecnode01 | 1 | 2 x AMD EPYC 7702 64-Core Processor | Oui | 256 | 1024Go | ht,zen2,10g | |
lmgenode01 | 2 | 32 x AMD EPYC 7513 32-Core Processor | Oui | 128 | 2048Go | ht,zen3,10g |
Avec SLURM, la commande sinfo -lNe
permet de voir rapidement l'état et la config des noeuds
(plus de détail dans la doc SLURM) :
[user@hpc2 ~]$ sinfo -lNe
Tue Feb 10 14:45:03 2015
NODELIST NODES PARTITION STATE CPUS S:C:T MEMORY TMP_DISK WEIGHT FEATURES REASON
hpcnode[01-04] 4 normal* idle 16 2:8:1 64364 0 1 noht,san none
hpcnode[05-08] 4 normal* idle 32 2:8:2 95634 0 1 ht,ivy none
hpcnode[09-10] 2 normal* idle 32 2:8:2 129001 0 1 ht,ivy none
hpcnode[11-12] 2 normal* down* 32 2:8:2 129001 0 1 ht,ivy Not responding
hpcphi01 1 debug mixed 32 2:8:2 96695 0 1 ht,ivy,p none
[user@hpc2 ~]$ scontrol show node hpcnode05
NodeName=hpcnode05 Arch=x86_64 CoresPerSocket=8
CPUAlloc=0 CPUErr=0 CPUTot=32 CPULoad=0.00 Features=ht,ivy
Gres=(null)
NodeAddr=hpcnode05 NodeHostName=hpcnode05 Version=14.03
OS=Linux RealMemory=95634 AllocMem=0 Sockets=2 Boards=1
State=IDLE ThreadsPerCore=2 TmpDisk=0 Weight=1
BootTime=2015-02-06T12:42:15 SlurmdStartTime=2015-02-06T12:42:31
CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
Partitions
Quatre partitions ont été définies sur le cluster HPC2 :
- une partition
debug
avec un seul noeud qui lui est dédié, pour les jobs durant moins d'une heure. Cette partition est adaptée aux jobs interactifs ou au débogage. - une partition
fast
pour les jobs durant au maximum 4 heures. Cette partition rassemble quasiment toute les ressources du cluster. Elle doit être utilisée avec la QoS fast pour bénéficier d'un bonus de priorité sur les jobs plus longs.$ sbatch -p fast -q fast monjob.sh
- une partition
gpu
pour les jobs adaptés aux calculs GPU pour une durée maximale de 3jours. - une partition
long
regroupant les 20 premiers noeuds, pour les jobs durant jusqu'à 7 jours, et pouvant réserver au maximum 6 noeuds. - une partition
normal
pour les jobs de moins de 24h. - une partition
smp
pour les jobs nécessitant une grande quantité de RAM, et pouvant durer maximum 3 jours.
La commande sinfo
permet d'identifier les partitions et les contraintes associées:
[user@hpc2 ~]$ sinfo -l
Fri Aug 28 12:45:34 2020
PARTITION AVAIL TIMELIMIT JOB_SIZE ROOT OVERSUBS GROUPS NODES STATE NODELIST
normal* up 1-00:00:00 1-infinite no NO all 1 draining hpcnode20
normal* up 1-00:00:00 1-infinite no NO all 10 drained hpcnode[08-12,14-15,17-19]
normal* up 1-00:00:00 1-infinite no NO all 3 mixed hpcnode[01,05,21]
normal* up 1-00:00:00 1-infinite no NO all 21 allocated hpcnode[02,04,06-07,13,16,22-36]
normal* up 1-00:00:00 1-infinite no NO all 1 idle hpcnode03
long up 7-00:00:00 1-6 no NO all 1 draining hpcnode20
long up 7-00:00:00 1-6 no NO all 10 drained hpcnode[08-12,14-15,17-19]
long up 7-00:00:00 1-6 no NO all 3 allocated hpcnode[07,13,16]
smp up 3-00:00:00 1 no NO all 1 mixed hpcsmp01
debug up 1:00:00 1 no NO all 1 idle hpcphi01
gpu up 1-00:00:00 1-infinite no NO piaf,gpu,i 1 mixed iccfgpu01
gpu up 1-00:00:00 1-infinite no NO piaf,gpu,i 1 allocated piafgpu01
gpu up 1-00:00:00 1-infinite no NO piaf,gpu,i 2 idle hpcdgx01,hpcgpu01
fast up 2:00:00 1-infinite no NO all 9 draining hpcnode20,simatlabnode[01-02,04-06,08,10-11]
fast up 2:00:00 1-infinite no NO all 12 drained hpcnode[08-12,14-15,17-19],simatlabnode[03,07]
fast up 2:00:00 1-infinite no NO all 5 mixed hpcnode[01,05,21],hpcsmp01,iccfgpu01
fast up 2:00:00 1-infinite no NO all 23 allocated hpcnode[02,04,06-07,13,16,22-36],piafgpu01,simatlabnode09
fast up 2:00:00 1-infinite no NO all 1 idle hpcnode03
La partition normal
est la partition par défaut.
Priorités
Les jobs en attente sont ordonnancés par SLURM suivant leur priorité, calculée selon trois critères.
Le critère majoritaire mis en place sur HPC2 est le Fair Share : la priorité des jobs d'un utilisateur est inversemenent proportionnel au temps de calcul qu'il a déjà consommé récemment. Ainsi un job d'un utilisateur qui n'a pas utilisé le cluster depuis un moment sera très souvent prioritaire par rapport aux utilisateurs plus réguliers.
Les deux autres critères qui influent, dans une moindre mesure, sur la priorité d'un job sont :
- la taille du job (les petits jobs sont favorisés)
- l'âge du job (les jobs en attente depuis longtemps sont favorisés).
La commande sprio
de SLURM permet d'obtenir la configuration des priorités :
[user@hpc2 ~]$ sprio --weights
JOBID PRIORITY AGE FAIRSHARE JOBSIZE
Weights 1000 10000 1000
Elle permet aussi de détailler la priorité des jobs en attente :
[user@hpc2 ~]$ sprio
JOBID PRIORITY AGE FAIRSHARE JOBSIZE
2245862 7131 0 6154 978
2245863 7135 0 6154 982
Enfin la commande sshare
permet d'afficher sa valeur de Fair Share (qui dépend de sa propre consommation et de la consommation de son groupe).