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:00]
montap01 [Librairie CUDA]
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 ==== 
-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> 
- 
-==== 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.1663171247.txt.gz · Dernière modification: 2022/09/14 18:00 de montap01