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 [2022/09/14 18:06]
montap01 [Exemple de batch Slurm]
gpu:utilisation [2023/01/03 15:45] (Version actuelle)
montap01 [Eviter la pré-emption]
Ligne 8: Ligne 8:
  
 ===== Noeuds GPU ===== ===== Noeuds GPU =====
-Le cluster comporte un ud GPU accessible à tous les utilisateurs sans restriction (''node29''), 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.
  
-Notez que ses 3 cartes graphiques NVidia K20m sont basées sur l'architecture Kepler, GPU ''sm_35''+===== 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à vula 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...
  
-D'autres nœuds GPU sont également à disposition (58, 63-65) : tout le monde peut les utiliser **mais** votre job pourra être tué (et resoumis à slurm) si le laboratoire propriétaire du noeud utilisé en a besoin. 
 ===== Environnement de développement ===== ===== Environnement de développement =====
 ==== Librairie CUDA ==== ==== Librairie CUDA ====
Ligne 36: Ligne 75:
  
 ==== Documentations ==== ==== Documentations ====
-Les documentations sont disponibles sur CALI (pour les anciennes versions de CUDA) : +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, par exemple :+
   * 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 ==== 
-Les noeuds GPU sont dans une //partition// nommée ''gpu'' 
- 
-Chaque noeud est déclaré avec le //type// de GPU qu'il possède :  
-  * ''K20m'' pour ''node29'' 
-  * ''K40'' pour ''node58'' 
-  * ''GTX1080Ti''' pour ''node[63-65]'' 
- 
-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  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 . 
- 
-==== 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:2 
-</code> 
- 
-Si vous voulez explicitement utiliser tel ou tel //type// de carte, précisez-le :  
-<code> 
-#SBATCH  --partition=gpu 
-#SBATCH  --gres=gpu:K20m:2 
-</code> 
- 
-<note> 
-Cette façon de faire vous permet aussi, en précisant ''K20m'', d'être sûr que le job ne sera pas tué, car seul le noeud commun ''node29'' possède des ''K20m'', votre job ne pourra donc pas être //pré-empté// -- Mais K20m sont des cartes très anciennes... 
-</note> 
-==== 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... 
gpu/utilisation.1663171612.txt.gz · Dernière modification: 2022/09/14 18:06 de montap01