Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
formation:insa2022gpu [2022/12/11 08:02]
equemene créée
formation:insa2022gpu [2023/01/27 11:46] (Version actuelle)
equemene
Ligne 1: Ligne 1:
 ====== INSA 2022 : les GPU, la technologie disruptive du 21ème siècle ====== ====== INSA 2022 : les GPU, la technologie disruptive du 21ème siècle ======
  
-<note warning>​Contient certainement encore un nombre non négligeable de coquilles... Merci de votre compréhension. Mon adresse de courriel est en bas pour vous permettre d'en assurer l'​amélioration !</​note>​ +Cette session de travaux pratiques se compose de 2 séances de 4h. Elle est accompagnée ​des 2 cours suivants donnés par Emmanuel Quémener ​les 5 et 9 décembre 2022.
- +
-Cette session de travaux pratiques se compose de 2 séances de 4h. Elle s'est accompagné ​des 2 cours suivants donnés par Emmanuel Quémener.+
  
 +  * Cours sur les [[https://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​INSA2022-CPU-221204.pdf|CPU et les architectures parallélisées]]
 +  * 
 +  * Cours sur les [[https://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​documents/​INSA2022-GPU_221209.pdf|GPU,​ la technologie discuptive du 21e siècle]]
 ===== CQQCOQP : Comment ? Qui ? Quand ? Combien ? Où ? Quoi ? Pourquoi ? ===== ===== CQQCOQP : Comment ? Qui ? Quand ? Combien ? Où ? Quoi ? Pourquoi ? =====
  
   * **Pourquoi ?** Faire un tour d'​horizon des GPUs et appréhender des méthodes d'​investigation   * **Pourquoi ?** Faire un tour d'​horizon des GPUs et appréhender des méthodes d'​investigation
-  * **Quoi ?** Programmer, tester et comparer les GPU sur des exemples simples pendant ​séances de 1h30 heure +  * **Quoi ?** Programmer, tester et comparer les GPU sur des exemples simples pendant ​séances de 4 heures 
-  * **Quand ?** Entre le 25 et le 29 juillet ​2022+  * **Quand ?** Entre décembre ​2022 et janvier 2023
   * **Combien ?** Mesurer la performance que les GPUs offrent en comparaison des autres machines ​   * **Combien ?** Mesurer la performance que les GPUs offrent en comparaison des autres machines ​
   * **Où ?** Sur des stations de travail, des noeuds de cluster, des portables (bien configurés),​ dans des terminaux   * **Où ?** Sur des stations de travail, des noeuds de cluster, des portables (bien configurés),​ dans des terminaux
Ligne 91: Ligne 92:
 </​note>​ </​note>​
  
-La (presque) totalité des stations de travail contiennent des cartes Nvidia. Plusieurs machines accessibles uniquement à distance ​dispose ​de circuits AMD, mais l'​appropriation de ces GPU, notamment l'​installation des pilotes et le peu de généricité dans le support d'une grande variété de GPU les rendent complètement inexploitables pour des formations ​systématiques ​à large spectre d'application ​graphiques.+La (presque) totalité des stations de travail contiennent des cartes Nvidia. Plusieurs machines accessibles uniquement à distance ​disposent ​de circuits AMD, mais l'​appropriation de ces GPU, notamment l'​installation des pilotes et le peu de généricité dans le support d'une grande variété de GPU les rendent complètement inexploitables pour des formations à large spectre d'applications ​graphiques.
  
 Dans les systèmes **Posix** (**Unix** dans le langage courant), tout est fichier. Les informations sur les circuits Nvidia et leur découverte par le système d'​exploitation peuvent être récupérées avec un ''​grep''​ dans la commande ''​dmesg''​. Dans les systèmes **Posix** (**Unix** dans le langage courant), tout est fichier. Les informations sur les circuits Nvidia et leur découverte par le système d'​exploitation peuvent être récupérées avec un ''​grep''​ dans la commande ''​dmesg''​.
Ligne 213: Ligne 214:
 </​note>​ </​note>​
  
-Pour juger de l'​activité instantanée des GPU (à la ''​htop''​ pour les CPU) ou sur quelques dizaines de secondes (à la ''​dstat''​),​ vous disposez des commandes ''​nvtop''​ et ''​nvidia-smi dmon''​.+Pour juger de l'​activité instantanée des GPU (à la ''​htop''​ pour les CPU) ou sur quelques dizaines de secondes (à la ''​dstat'' ​pour un système sous GNU/Linux), vous disposez des commandes ''​nvtop''​ et ''​nvidia-smi dmon''​.
  
 Comme nous l'​avons vu dans l'​introduction sur la GPU, leur programmation peut-être réalisée par différentes voies. La première, pour les périphériques Nvidia, est d'​utiliser l'​environnement CUDA. Le problème sera qu'il est impossible de réexploiter votre programme sur une autre plate-forme (une CPU) ou la comparer avec d'​autres GPU. [[https://​www.khronos.org/​opencl/​|OpenCL]] reste une approche beaucoup plus polyvalente ! Comme nous l'​avons vu dans l'​introduction sur la GPU, leur programmation peut-être réalisée par différentes voies. La première, pour les périphériques Nvidia, est d'​utiliser l'​environnement CUDA. Le problème sera qu'il est impossible de réexploiter votre programme sur une autre plate-forme (une CPU) ou la comparer avec d'​autres GPU. [[https://​www.khronos.org/​opencl/​|OpenCL]] reste une approche beaucoup plus polyvalente !
Ligne 236: Ligne 237:
 </​code>​ </​code>​
  
 +Détaillons rapidement les propriétés des différentes implémentations OpenCL :
   * ''#​0,#​0''​ **AMD Accelerated Parallel Processing** : implémentation CPU de AMD, la plus ancienne, très proche de OpenMP en performances   * ''#​0,#​0''​ **AMD Accelerated Parallel Processing** : implémentation CPU de AMD, la plus ancienne, très proche de OpenMP en performances
   * ''#​1,#​0''​ **Portable Computing Language** : implémentation CPU OpenSource. Pas vraiment efficace   * ''#​1,#​0''​ **Portable Computing Language** : implémentation CPU OpenSource. Pas vraiment efficace
Ligne 242: Ligne 244:
   * ''#​3,#​0''​ **Intel(R) OpenCL** : implémentation CPU Intel, plutôt très efficace   * ''#​3,#​0''​ **Intel(R) OpenCL** : implémentation CPU Intel, plutôt très efficace
  
-Ainsi, dans cette machine, 5 périphériques OpenCL sont accessibles,​ 3 permettent de s'​adresser au processeur (vu pour le coup comme un périphérique) et 2 sont des GPU Nvidia.+Ainsi, dans cette machine, 5 périphériques OpenCL sont accessibles,​ 3 permettent de s'​adresser au processeur (vu pour le coup comme 3 périphériques) et 2 sont des GPU Nvidia.
  
 <note warning> <note warning>
Ligne 366: Ligne 368:
   * ''​Splutter''​ : un modèle de ''​postillonneur mémoire'',​ très utile pour évaluer les //fonctions atomiques//   * ''​Splutter''​ : un modèle de ''​postillonneur mémoire'',​ très utile pour évaluer les //fonctions atomiques//
   * ''​TrouNoir''​ : un exemple de portage de code de 1994, porté en C en 1997 puis en Python/​OpenCL et Python/CUDA en 2019   * ''​TrouNoir''​ : un exemple de portage de code de 1994, porté en C en 1997 puis en Python/​OpenCL et Python/CUDA en 2019
-  * ''​ETSN''​ : les programmes //​corrigés// ​associés à cette école ETSN 2022+  * ''​ETSN''​ : les programmes //​corrigés// ​de l'école ​d'​été ​ETSN 2022
  
 De tous ces programmes, seuls ceux présents dans ''​BLAS'',​ ''​NBody'',​ ''​Pi''​ et ''​ETSN''​ seront exploités dans le cadre de ces travaux pratiques. Il est quand même conseillé de ne pas se précipiter sur les corrigés situés dans ETSN pour le déroulement de ces séances. Le //no pain, no gain// s'​applique //aussi// dans l'​apprentissage en informatique. De tous ces programmes, seuls ceux présents dans ''​BLAS'',​ ''​NBody'',​ ''​Pi''​ et ''​ETSN''​ seront exploités dans le cadre de ces travaux pratiques. Il est quand même conseillé de ne pas se précipiter sur les corrigés situés dans ETSN pour le déroulement de ces séances. Le //no pain, no gain// s'​applique //aussi// dans l'​apprentissage en informatique.
formation/insa2022gpu.1670742135.txt.gz · Dernière modification: 2022/12/11 08:02 par equemene