Aller au contenu principal

Accélérateurs

Le cluster HPC est équipé de 24 GPUs NVIDIA (2 RTX2080Ti, 10 A100 et 12 L40S). Ici vous trouverez

Réserver des GPUs

attention

Pour assurer la disponibilité de ces ressources limitées, les nœuds avec accélérateurs sont uniquement destinés aux calculs sur GPU.

Pour réserver un nœud avec accélérateur, vous devez préciser la ressource dans votre script de soumission avec l'option --gres:

SBATCH --gres=<ressource>:<nombre>

  • <nombre> est le nombre par nœud. Par défaut, <nombre> est égal à 1 et vous pouvez l'omettre
  • <ressource> peut être
    • gpu:RTX2080,gpu:A100-80G,gpu:A100-HGX-80G ou gpu:L40S (voir cette liste)
    • gpu sans spécifier le type. Mais vous devez alors préciser l'option --partition.

En raison de leurs différences importantes les cartes sont repartis en deux partitions.

  • la partition gpuai regroupe les cartes conçues pour l'intelligence artificielle et plus généralement des calculs en précision simple ou mixte (max 32-bit).
  • la partition gpu64 regroupe les cartes équipés de cœurs de calcul double précision (FP64).
attention

Si votre calcul se fait en double précision (FP64) il faut utiliser les cartes A100 (partition gpu64)

Il est important de choisir le GPU (ou la partition) qui convient le mieux à vos calculs. Pour vous aider à faire un choix pertinent, vous trouverez ci-dessous les caractéristiques des GPUs présents dans le cluster. Si vous n'êtes pas certain quelle carte choisir pour vos calculs, écrivez-nous à hpc@univ-lille.fr.

En résumé, une demande de ressources GPU doit soit spécifier le type de GPU, soit spécifier la partition cible (soit les deux, si compatible). Par exemple

--gres=--partition=Ressource demandée
gpu:1gpu64A100-80G ou A100-HGX-80GB
gpu:1gpuaiRTX2080 ou L40S
gpu:1gpuai, gpu64GPU indifférent
gpu:RTX2080-RTX2080
gpu:RTX2080gpuaiRTX2080
gpu:1-requête invalide (ni type, ni partition)
-gpu64requête invalide (gres/gpu non spécifiée)
gpu:L40Sgpu64requête invalide (incompatible)

Par exemple, pour réserver un nœud GPU avec une carte Nvidia RTX2080Ti :

#!/bin/bash                                                                                                               
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --time=00:05:00
#SBATCH --job-name=GPU
#SBATCH --mem=1G
#SBATCH --gres=gpu:RTX2080:1

...

Les demandes de ressources doivent être conformes aux limites imposées sur les partitions GPU (voir section QoS).

Quality-of-Service (QoS)

Les jobs qui demandent des ressources GPU sont automatiquement placés dans la partition gpu. Les limites qui s'appliquent aux jobs dans cette partition sont différentes du reste du cluster.

Les limites dépendent du QoS (Quality of Service) avec lequel le job est soumis. Par défaut, le QoS gpu-default est utilisé et l'utilisateur n'a pas à le spécifier.

Afin de changer les limites imposées par défaut, il faut spécifier l'utilisation du QoS gpu-big dans l'en-tête du script Slurm :

#SBATCH --qos=gpu-big
QoSgpu-defaultgpu-big
Limites par job
Walltime48 heures-GPU384 heures-GPU
GPUs18
Mémoire128Gmax
CPUs16max
Limites par utilisateur
GPUs168
Jobs (soumis + actifs)10000020

La durée maximale est exprimée en heures-GPU : pour le QoS gpu-big cela signifie que la durée maximale d'un job mono-GPU est de 384 heures, tandis que les jobs avec 2, 4, 8 GPUs ne pourront pas dépasser une durée de 192, 96, 48 heures respectivement.

Les cartes accélératrices

Le cluster est équipé de 36 GPUs NVIDIA de 4 modèles différents:

ModèleGeForce RTX2080 TiA100 80GB PCIeA100-SXM4-80GBL40S
Ressource (gres)gpu:RTX2080gpu:A100-80Ggpu:A100-HGX-80Ggpu:L40S
Nœuds1 (turing-07-02)1 (ampere-d06-01)1 (golgoth-d06-01)12 (ares-[c,d]02-[01-06])
GPUs/nœud2282
CPU2x20 cœurs (Intel Xeon® Gold 6148)2x16 cœurs (Intel Xeon® Silver 4314)2x64 cœurs (AMD EPYC™ 7763) 2x24 cœurs (AMD EPYC™ 9254)
Mémoire (CPU)320 Go256 Go4 To386 Go

Pour se faire une idée des capacités de chaque carte sans rentrer dans les détails techniques, le tableau suivant montre la puissance crête théorique (en téraFLOPS) selon le type d'opérations.

Modèle  GeForce RTX2080 TiA100 80GB-PCIeA100 80GB-SXM4L40S
CUDA core téraFLOPS
FP64 (précision double)0.429.79.71.4
FP32 (précision simple)13.419.519.591.6
FP16 (demi-précision)26.9787891.6
Tensor core téraFLOPS
FP64-19.519.5-
TF32-156156183
FP16107312312366
BFloat16-312312366
FP8---733

Il en ressort clairement que les gpu:RTX2080 et gpu:L40S ne sont pas adaptés aux calculs scientifiques en double précision.

attention

Si votre calcul se fait en double précision (FP64) il faut utiliser les cartes A100.

En effet, les cartes gpu:RTX2080 et gpu:L40S sont des GPUs IA qui n'ont pas été conçus pour le calcul scientifique en double précision. Comme le montre le tableau suivant, chaque "Streaming multiprocessor" de ces cartes n'embarque que 2 cœurs FP64 qui ont été inclus uniquement par souci de compatibilité.

ModèleGeForce RTX2080 TiA100 80GB-PCIeA100 80GB-SXM4L40S
MicroarchitectureTuring (TU102)Ampere (GA100)Ampere (GA100)Ada (AD102)
CUDA compute capability7.58.08.08.9
#Transistors18.6 millards54.2 millards54.2 millards76.3 millards
Streaming multiprocessors (SM)68108108144
FP32 CUDA cores4352 (64/SM)6912 (64/SM)6912 (64/SM)18176 (128/SM)
FP64 CUDA cores172 (2/SM)3456 (32/SM)3456 (32/SM)288 (2/SM)
TensorCores544 (8/SM) - Gen2432 (4/SM) - Gen3432 (4/SM) - Gen3568 (4/SM) - Gen4
Mémoire11 Go GDDR680 Go HBM280 Go HBM248 Go GDDR6
Bande passante mémoire GPU (Go/s)61619352039864
L2 Cache5.5 Mo40 Mo40 Mo96 Mo
L1 Cache96 ko/SM192 ko/SM192 ko/SM128 ko/SM

Les schémas suivants illustrent les "Streaming multiprocessors" des GPUs de type Turing (TU102), Ampere (GA100) et Ada (AD102). La différence la plus notable est la présence de cœurs FP64 pour les calculs en double précision dans l'architecture Ampere.

turingSMampereSM
adaSM