Test du cluster Helios

Caractéristiques principales :

  • Système Centos7.9 Final
  • Slurm 2020 pour la gestion des ressources
  • 192 To Stockage BeeGFS (WORK)
  • Réseau 10G/s pour Data
  • Réseau 100G/s pour MPI
  • Processeurs Intel Skylake-avx512 pour la partition compute
  • Processeurs AMD Zen 3 pour la partition gpu
  • 9 cartes A100 (PCI, 40G de mémoire) → 3 cartes par serveur.

Noeuds de calculs et partitions (slurm)

[kmazouzi@mesointeractive ~]$ sinfo -Nl
Wed Jul 07 13:24:59 2021
NODELIST   NODES PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON              
node4-1        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-2        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-3        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-4        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-5        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-6        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-7        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-8        1  compute*        idle 24     2:12:1  94208        0      1  skylake none                
node4-21       1       gpu       mixed 128    2:32:2 515476        0      1 zen3,a10 none                
node4-22       1       gpu        idle 128    2:32:2 515476        0      1 zen3,a10 none                
node4-23       1       gpu        idle 128    2:32:2 515476        0      1 zen3,a10 none          

Logiciels installés (Spack), selon l'architecture du processeur

$ module avail
-------------------------------------------------------------------------------------------------------------------------------- /Softs/spack/share/spack/modules/linux-centos7-haswell/ ---------------------------------------------------------------------------------------------------------------------------------
gcc@11.1.0
 
----------------------------------------------------------------------------------------------------------------------------- /Softs/spack/share/spack/modules/linux-centos7-skylake_avx512/ -----------------------------------------------------------------------------------------------------------------------------
gromacs@2021.2-mkl                        intel-oneapi-compilers@2021.2.0           intel-oneapi-mpi@2021.2.0                 namd@2.14                                 openmpi@4.0.5                             vasp@5.4.4-mkl
intel-mkl@2020.4.304                      intel-oneapi-mkl@2021.2.0                 ior@3.3.0                                 namd@2.14-mkl                             osu-micro-benchmarks@5.7-intel-oneapi-mpi
 
---------------------------------------------------------------------------------------------------------------------------------- /Softs/spack/share/spack/modules/linux-centos7-zen3/ ----------------------------------------------------------------------------------------------------------------------------------
anaconda3@2020.11

Utilisation SSH

$ ssh user@172.20.92.214

Une fois connecté. Deux espace de travail sont disponible.

  • $HOME : répertoire de connexion par défaut (quota 5G)
  • $WORK : répertoire de travail (quota 1To)

Il faut se placer dans le répertoire Work ($WORK) pour travailler/lancer des calculs.

$ cd Work
ou
$ cd $WORK
ou
$ cdw

Nous utilisons Slurm comme ordonnanceur et gestionnaire de ressources.

Mode interactif

Exemple : lancer une session interactive (un bash) sur un noeud GPU.

$ srun -p gpu --gres=gpu:1 --pty bash

Avec

  • -p gpu utilise la partition (file) gpu
  • –gres=gpu:1 demande une carte GPU
  • –pty bash lance un shell à la connexion
  • A noter que la mémoire, par defaut, allouée est de 64g sur la partition gpu. En cas besoin utiliser l'option –mem=72g par exemple.

Une fois connecté sur le noeud. Vous pouvez utiliser WORK pour travailler.

Pour la file d'attente gpu, un espace de stockage (6 To SSD) local par noeud est disponible. Il est accessible via la variable d'environnement $GPU_SCRATCH_DIR. Cette espace est permanent. Il est utile pour les applications qui font beaucoup de streaming.

Uniquement anaconda de base est installé sur les machines GPU. L'installation de paquets/logiciels se fait via conda

Conda pour installer tensforflow-gpu

Exemple d'un cas d'utilisation
On se place dans le scratch local:

$ cd $GPU_SCRATCH_DIR

On charge anaconda:

$ module load anaconda3@2020.11

On crée un environnement conda :

$ conda env create -n meso_test

On active l'environnement

$ conda env list
$ conda activate meso_test
$ (meso_test)$ conda list

On install tesnforflow-gpu

$ (meso_test)$ conda install tesnforflow-gpu

Mode Batch

Créer un script Slurm dans $WORK.

Adapter le script suivant selon besoins.

Exemple script GPU

gpu.slurm
#!/bin/bash
# Fichier submission.SBATCH
 
#SBATCH --job-name="MON_JOB"
#SBATCH --output=%x.%J.out   ## %x=nom_du_job, %J=id du job
#SBATCH --error=%x.%J.out
 
#SBATCH --partition=gpu 
#SBATCH --gres=gpu:1
 
## votre dresse mail pour les notifs 
#SBATCH --mail-user=votreadresseufc@univ-fcomte.fr
#SBATCH --mail-type=END,FAIL
 
nvidia-smi
 
module purge
module load anaconda3@2020.11
conda activate meso_test  && python GPU_Program.py

soumettre le job :

$ sbatch gpu.slurm

statut des jobs

$ squeue 

Exemple script NAMD

namd.slurm
#!/bin/bash
# Fichier submission.SBATCH
 
#SBATCH --job-name="MON_JOB"
#SBATCH --output=%x.%J.out   ## %x=nom_du_job, %J=id du job
#SBATCH --error=%x.%J.out
 
#SBATCH --partition=compute
#SBATCH -n 96 
 
#SBATCH --mail-user=votreadresseufc@univ-fcomte.fr
#SBATCH --mail-type=END,FAIL
 
module purge
module load namd@2.14-mkl
 
NAMD_SCRIPT=grap10 
srun namd2 $NAMD_SCRIPT.namd > $NAMD_SCRIPT.out