Skip to content

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               
Le détail de la configuration d'un nœud peut être obtenu avec la commande suivante:

[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
(ici, les deux jobs en attente appartiennent au même utilisateur, ils ont donc la même valeur de Fair Share)

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