| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| formation:cbp20190606gpu [2019/06/04 14:11] – [Conclusion] equemene | formation:cbp20190606gpu [2019/06/11 08:37] (Version actuelle) – [Conclusion] equemene |
|---|
| ====== 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 ? ===== |
| |
| * **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 ! |
| 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. |
| </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 |
| * 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 |
| </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'' |
| </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 ===== |
| |
| ''Test de \\'\\' '' | |
| |
| Comme vous l'aurez remarqué au cours de ces Travaux Pratiques, l'exploitation peut être pleine de surprises : une métrologie pertinente ne peut se passer de la connaissance du matériel exploité. | Comme vous l'aurez remarqué au cours de ces Travaux Pratiques, l'exploitation peut être pleine de surprises : une métrologie pertinente ne peut se passer de la connaissance du matériel exploité. |
| 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// |