Utilisation des noeuds GPU
Le mésocentre dispose de plusieurs nœuds équipés de cartes graphiques NVIDIA Tesla.
Pour indiquer à SLURM que l’on veut disposer d’une machine équipée de processeurs graphiques (GPU), il faut indiquer, lors de la soumission du job, l’une de partitions dédiées au calcul GPU.
Nom de la partition | Nœud(s) associé(s) | Mémoire par CPU (Mo) |
---|---|---|
kepler | gpu[004-010] | 13430 |
pascal | gpu[011-012] | 11512 |
volta | gpu[013-017] | 11500 |
Il faut également spécifier le nombre de ressources GPU souhaitées par exemple --gres=gpu:2.
Sur une machine GPU donnée, les GPU sont numérotés par un ID variant de 0 à 4 selon le nombre d’accélérateurs embarqués. Il est généralement nécessaire d’indiquer au programme quel(s) GPU_ID utiliser. La variable d’environnement $CUDA_VISIBLE_DEVICES liste le ou les GPU attribués.
Exemple de mise en place dans un code fortran :
dans le .cuf remplacer le cudaSetDevice(0) par: #ifdef GPUID cudaSetDevice(GPUID) #else cudaSetDevice(0) #endif
Associé au script de soumission à SLURM
#!/bin/bash #SBATCH -p kepler #SBATCH --gres=gpu:2 module load userspace/all module load PGI/14.9 pgf90 -Mpreprocess -DGPUID=$CUDA_VISIBLE_DEVICES -fast -o exec exec.cuf ./exec
Exemple de demande de ressource gpu en interactif
srun -p pascal --gres=gpu:1 --pty bash -i