Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
formation:cbp20190606gpu [2019/06/04 15:34] equemene [Exploitation en Deep Learning avec TensorFlow] |
formation:cbp20190606gpu [2019/06/11 10:37] equemene [Conclusion] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== CBP 2019 : le GPU par la pratique ====== | ====== CBP 2019 : le GPU par la pratique ====== | ||
- | Cette session pratique accompagne le cours du 6 juin au matin réalisé par Emmanuel Quémener. | + | Cette session pratique accompagne le [[http://www.cbp.ens-lyon.fr/emmanuel.quemener/documents/PresentationGPU_190606_EQ.pdf|cours]] du 6 juin au matin réalisé par Emmanuel Quémener. |
+ | ===== Déroulement de la journée ===== | ||
+ | |||
+ | * 08h30-09h00 Accueil devant la salle M7-1H104 | ||
+ | |||
+ | * 09h00-10h30 Cours d'introduction aux GPU | ||
+ | * 10h30-10h45 Pause | ||
+ | * 10h45-12h30 TP première partie | ||
+ | |||
+ | * 12h30-13h30 Repas salle 116 | ||
+ | |||
+ | * 13h30-15h15 TP seconde partie | ||
+ | * 15h30-15h45 Pause | ||
+ | * 15h45-17h30 TP troisième partie | ||
===== CQQCOQP : Comment ? Qui ? Quand ? Combien ? Où ? Quoi ? Pourquoi ? ===== | ===== CQQCOQP : Comment ? Qui ? Quand ? Combien ? Où ? Quoi ? Pourquoi ? ===== | ||
Ligne 45: | Ligne 58: | ||
* **p100alpha**, **p100beta** : stations virtuelles disposant d'une Nvidia Tesla P100 | * **p100alpha**, **p100beta** : stations virtuelles disposant d'une Nvidia Tesla P100 | ||
* **k40m** : station virtuelle disposant d'une Nvidia Tesla K40m | * **k40m** : station virtuelle disposant d'une Nvidia Tesla K40m | ||
+ | * **r740gpu1** : station disposant de 2 Tesla P100 (appartenant au PSMN) | ||
Jetez un coup d'oeil sur [[http://styx.cbp.ens-lyon.fr/ganglia/?r=hour&cs=&ce=&m=load_one&s=by+name&c=Workstations|Monitoring des stations de travail]] avant de lancer vos tâches ! De grosses requêtes concurrentielles peuvent entraîner des DoS ! | Jetez un coup d'oeil sur [[http://styx.cbp.ens-lyon.fr/ganglia/?r=hour&cs=&ce=&m=load_one&s=by+name&c=Workstations|Monitoring des stations de travail]] avant de lancer vos tâches ! De grosses requêtes concurrentielles peuvent entraîner des DoS ! | ||
Ligne 208: | Ligne 222: | ||
Comme nous l'avons vu dans l'introduction sur le 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 (un 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 le 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 (un CPU) ou la comparer avec d'autres GPU. [[https://www.khronos.org/opencl/|OpenCL]] reste une approche beaucoup plus polyvalente ! | ||
- | Sur les stations du CBP, la majorité des implémentations de OpenCL sont disponibles, autant sur CBP que sur GPU. | + | Sur les stations du CBP, la majorité des implémentations de OpenCL sont disponibles, autant sur CPU que sur GPU. |
La commande ''clinfo'' récupère des informations liées à tous les périphériques OpenCL disponibles. | La commande ''clinfo'' récupère des informations liées à tous les périphériques OpenCL disponibles. | ||
Ligne 1385: | Ligne 1399: | ||
</code> | </code> | ||
+ | Dans le cas d'une exécution uniquement sur CPU (ici 2 Xeon E5-2637 v4 @ 3.50GHz), nous avons comme sortie : | ||
+ | <code> | ||
+ | TIME Command being timed: "python3 cifar10_train.py" | ||
+ | TIME User time (seconds): 21180.80 | ||
+ | TIME System time (seconds): 1391.54 | ||
+ | TIME Elapsed (wall clock) time : 1711.02 | ||
+ | TIME Percent of CPU this job got: 1319% | ||
+ | TIME Average shared text size (kbytes): 0 | ||
+ | TIME Average unshared data size (kbytes): 0 | ||
+ | TIME Average stack size (kbytes): 0 | ||
+ | TIME Average total size (kbytes): 0 | ||
+ | TIME Maximum resident set size (kbytes): 2804244 | ||
+ | TIME Average resident set size (kbytes): 0 | ||
+ | TIME Major (requiring I/O) page faults: 0 | ||
+ | TIME Minor (reclaiming a frame) page faults: 283823921 | ||
+ | TIME Voluntary context switches: 26722288 | ||
+ | TIME Involuntary context switches: 6182435 | ||
+ | TIME Swaps: 0 | ||
+ | TIME File system inputs: 5857601 | ||
+ | TIME File system outputs: 83979 | ||
+ | TIME Socket messages sent: 0 | ||
+ | TIME Socket messages received: 0 | ||
+ | TIME Signals delivered: 0 | ||
+ | TIME Page size (bytes): 4096 | ||
+ | TIME Exit status: 0 | ||
+ | </code> | ||
<note warning>Exercice #26 : appliquez les commandes ci-dessus | <note warning>Exercice #26 : appliquez les commandes ci-dessus | ||
Ligne 1404: | Ligne 1444: | ||
* Lancez une seconde fois l'apprentissage | * Lancez une seconde fois l'apprentissage | ||
- notez les informations de sortie préfixées par ''TIME'' | - notez les informations de sortie préfixées par ''TIME'' | ||
- | * Lancez une seconde fois l'apprentissage avec ''CUDA_VISIBLE_DEVICES="" '' | + | * Lancez une seconde fois l'apprentissage avec ''CUDA_VISIBLE_DEVICES=' ' '' |
- notez les informations de sortie | - notez les informations de sortie | ||
* Comparez les résultats | * Comparez les résultats | ||
Ligne 1427: | Ligne 1467: | ||
</note> | </note> | ||
- | En cas de difficultés, appliquez la [[formation:insa2018gpu:insa2018gromacs4stretch|recette de Gromacs pour Debian Stretch]] ;-) | + | En cas de difficultés, appliquez la [[formation:cbp20190606gpu:gromacs4stretch|recette de Gromacs pour Debian Stretch]] ;-) |
<note warning>Exercice #28 : Exécutez l'exemple ''1536'' | <note warning>Exercice #28 : Exécutez l'exemple ''1536'' | ||
Ligne 1464: | Ligne 1504: | ||
</note> | </note> | ||
- | En cas de difficultés, appliquez la [[formation:insa2018gpu:insa2018pkdgrav4stretch|recette d'un PKDGRAV3 pour Debian Stretch]] ;-) | + | En cas de difficultés, appliquez la [[formation:cbp20190606gpu:pkdgrav4stretch|recette d'un PKDGRAV3 pour Debian Stretch]] ;-) |
===== Conclusion ===== | ===== Conclusion ===== | ||
Ligne 1472: | Ligne 1512: | ||
L'exploitation de "codes métier" vous aura aussi permis d'entrevoir la difficulté d'intégrer et d'exécuter des programmes dans des environnements pourtant bien homogènes : toutes les stations exploitées ont exactement le même système d'exploitation, [[developpement:productions:SIDUS|SIDUS]]. Les "astuces" permettant de simplement pouvoir exécuter les programmes illustraient aussi que, sans expérience, difficile de s'en sortir. | L'exploitation de "codes métier" vous aura aussi permis d'entrevoir la difficulté d'intégrer et d'exécuter des programmes dans des environnements pourtant bien homogènes : toutes les stations exploitées ont exactement le même système d'exploitation, [[developpement:productions:SIDUS|SIDUS]]. Les "astuces" permettant de simplement pouvoir exécuter les programmes illustraient aussi que, sans expérience, difficile de s'en sortir. | ||
- | --- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] CC BY-NC-SA 2018/11/26 15:37// | + | --- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] CC BY-NC-SA 2019-06-11// |