Outils pour utilisateurs

Outils du site


gpu:utilisation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
gpu:utilisation [2021/02/22 17:29]
montap01 [Documentations]
gpu:utilisation [2023/01/03 15:45] (Version actuelle)
montap01 [Eviter la pré-emption]
Ligne 1: Ligne 1:
 ~~SLIDESHOW yatil~~ ~~SLIDESHOW yatil~~
  
-====== Utilisation du noeud GPU ======+====== Utilisation de GPU ======
  
-Cet article donne les instructions pour utiliser le noeud GPU. +Cet article donne les instructions pour utiliser les GPU. 
  
 Nous ne traitons pas ici du modèle de programmation avec les GPU, la littérature disponible sur Internet est conséquente et suffisante. Nous ne traitons pas ici du modèle de programmation avec les GPU, la littérature disponible sur Internet est conséquente et suffisante.
  
-===== Noeud GPU ===== +===== Noeuds GPU ===== 
-Le cluster comporte un ud GPU, voir [[:materiel-cali2#gpgpu_generation_2014 |ici sa configuration]].+Le cluster comporte plusieurs uds GPU 
 +  * ils sont regroupés dans une partition commune nommée ''gpu'' 
 +  * les GPU disponibles sont des NVidia K20K40m et GTX1080Ti (voir [[:materiel-cali2| page de description du matériel]]
 +  * certains nœuds font aussi partie de //partitions privatives//, en conséquence un job de la partuition ''gpu'' peut être pré-empté (stoppé et resoumis) pour libérer des ressources. 
 +  
 +La section suivante détaille comment sélectionner le type de GPU désiré via //slurm//, ainsi que la pré-emption. 
 + 
 +===== Slurm avec les GPU ===== 
 +==== Exemple de batch Slurm ==== 
 +Vous devez donner le nom de la partition (''gpu'') et **le nombre de GPU**. Les autres ressources à indiquer sont identiques aux exemples usuels de batch. 
 + 
 +Pour demander une seule GPU : 
 +<code> 
 +#SBATCH  --partition=gpu 
 +#SBATCH  --gres=gpu 
 +</code> 
 + 
 +Pour demander **2 GPU** 
 +<code> 
 +#SBATCH  --partition=gpu 
 +#SBATCH  --gres=gpu:
 +</code> 
 + 
 +==== Pour demander un type de GPU spécifique ==== 
 +Comme nous l'avons déjà vu, la partition possède des cartes de 3 types, ''K20'', ''K40m'' et ''GTX1080Ti''.  
 +Si vous voulez explicitement utiliser tel ou tel //type// de carte, précisez-le :  
 +<code> 
 +#SBATCH  --partition=gpu 
 +#SBATCH  --gres=gpu:GTX1080Ti:
 +</code> 
 + 
 +==== Eviter la pré-emption ==== 
 +Seul le noeud commun ''node29'' possède des ''K20''. En conséquence, si vous demandez des cartes de ce type, votre job sera placé sur un noeud ne faisant pas partie de //partition privative//, et il ne pourra donc pas être //pré-empté// -- Mais K20 sont des cartes très anciennes... 
 + 
 + 
 +===== Calcul GPU et OpenMP / MPI ===== 
 +Sur  noeud GPU, vous pouvez utiliser en plus des GPU du parallélisme "classique", par //thread// (OpenMP) ou avec MPI. Attention cependant, il faut garder des ressources pour la gestion des GPU . 
 + 
 +===== Démarrer un shell interactif ===== 
 +Vous voudrez peut-être tester un code de façon interactive avant de soumettre de gros batchs. Cependant, le noeud frontal ne dispose pas de carte GPU... Vous pouvez demander à slurm l'ouverture d'un shell //bash// interactif sur la partition GPU avec une commande de la forme :  
 +  srun --partition=gpu --gres=gpu:1 --nodes=1 --ntasks-per-node=1 --time=01:00:00 --pty bash -i 
 + 
 +Ajustez les ressources (nombre de GPU, nombre de taches ou de processeurs, temps, mémoire...) avec les mêmes options que pour un //batch// classique, en prenant en compte vos besoins. Si des ressources sont disponibles immédiatement dans la partition demandée, vous obtenez de suite un shell //bash//. S'il n'y a pas de ressource disponible, la commande vous laisse en attente...
  
 ===== Environnement de développement ===== ===== Environnement de développement =====
Ligne 19: Ligne 61:
   * 10.0   * 10.0
   * 11.2   * 11.2
- 
-Pour information, version du //driver// (pilote noyau) : 460.32.03 
  
 Pour l'utiliser, vous devez charger le [[:modules | module]] ''nivida/cuda'', par exemple : Pour l'utiliser, vous devez charger le [[:modules | module]] ''nivida/cuda'', par exemple :
-  module load nvidia/cuda/11.2+  module load nvidia/cuda/10.0 
 + 
 +==== Compatibilité des versions ==== 
 +  * CUDA 11.2 ne supporte plus la compilation pour architecture Kepler générique (''sm_30''), mais supporte encore les GPU ''sm_35'' (//deprecated//) -> on peut l'utiliser pour compiler du code pour le noeud commun ''node29'' 
 +  * CUDA 10 ne supporte pas GCC > 7 
 +  * 
 ==== Compilation ==== ==== Compilation ====
 La compilation d'un programme avec CUDA se fait sur le nœud frontal, avec les compilateurs CUDA (''nvcc'') La compilation d'un programme avec CUDA se fait sur le nœud frontal, avec les compilateurs CUDA (''nvcc'')
Ligne 30: Ligne 75:
  
 ==== Documentations ==== ==== Documentations ====
-Les documentations sont disponibles sur CALI : +Les documentations sont disponibles sur le site de NVidia, par exemple :
-  * http://cali2.unilim.fr/cuda-6.5/ +
-  * http://cali2.unilim.fr/cuda-7.0/ +
- +
-Ou sur le site de NVidia :+
   * https://docs.nvidia.com/cuda/archive/9.2/   * https://docs.nvidia.com/cuda/archive/9.2/
   * https://docs.nvidia.com/cuda/archive/11.2.0/   * https://docs.nvidia.com/cuda/archive/11.2.0/
-===== Slurm et GPU ===== 
- 
-==== Partition GPU ==== 
-Le noeud GPU est dans une //partition// distincte de //slurm// nommée ''gpu'' 
- 
-Le fait que la partition soit différente ne vous permet pas d'avoir un job « à cheval » entre ce noeud et un autre noeud du cluster : les ressources allouées par slurm pour un job sont obligatoirement dans une et une seule partition. 
- 
-Cette partition possède les caractéristiques suivantes : 
-  * <del>un noeud ne peut être utilisé à un instant donné que par un seul job</del> 
-  * le temps maximal d'exécution est de **2 jours** 
- 
-==== Calcul GPU et OpenMP / MPI ==== 
-Sur le noeud GPU, vous pouvez utiliser en plus des GPU du parallélisme "classique", par //thread// (OpenMP) ou avec MPI. Attention cependant, il faut garder des ressources pour la gestion des GPU (FIXME détailler). 
- 
-==== Exemple de batch Slurm ==== 
-Pour placer un job sur le noeud GPU, vous devez donner le nom de la partition ''gpu'' et **le nombre de GPU**. Les autres ressources à indiquer sont identiques aux exemples usuels de batch. 
- 
-Pour demander une seule GPU : 
-<code> 
-#SBATCH  --partition=gpu 
-#SBATCH  --gres=gpu 
-</code> 
- 
-Pour demander **2 GPU** 
-<code> 
-#SBATCH  --partition=gpu 
-#SBATCH  --gres=gpu:2 
-</code> 
  
gpu/utilisation.1614011371.txt.gz · Dernière modification: 2021/02/22 17:29 de montap01