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
Connexion
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)
$WORK
) pour travailler/lancer des calculs.
$ cd Work ou $ cd $WORK ou $ cdw
Exécution d’applications
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.
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.
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