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 Prochaine révision Les deux révisions suivantes | ||
formation:insa2018gpu [2018/11/27 18:11] equemene |
formation:insa2018gpu [2018/11/27 18:23] equemene [Session pratique du cours sur les GPU] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Session pratique du cours sur les GPU ====== | + | ====== INSA 2018 : session pratique du cours sur les GPU ====== |
- | Session pratique du [[http://www.cbp.ens-lyon.fr/emmanuel.quemener/documents/CoursINSA_GPU_181112.pdf|cours du 12/11/2018]] réalisé par Emmanuel Quémener. | + | Cette session pratique accompagne le [[http://www.cbp.ens-lyon.fr/emmanuel.quemener/documents/CoursINSA_GPU_181112.pdf|cours du 12/11/2018]] réalisé par Emmanuel Quémener. |
===== CQQCOQP : Comment ? Qui ? Quand ? Combien ? Où ? Quoi ? Pourquoi ? ===== | ===== CQQCOQP : Comment ? Qui ? Quand ? Combien ? Où ? Quoi ? Pourquoi ? ===== | ||
Ligne 73: | Ligne 73: | ||
* Récupérez le modèle du circuit de GPU, dans son nom étendu. | * Récupérez le modèle du circuit de GPU, dans son nom étendu. | ||
* Récupérez sur le web les informations suivantes pour chaque GPU : | * Récupérez sur le web les informations suivantes pour chaque GPU : | ||
- | * le nombre d'unités de calcul (les "cudacores" ou les "streamprocessor") | + | * le nombre d'unités de calcul (les "cuda cores" ou les "stream processors") |
* la fréquence de base des coeurs de calcul | * la fréquence de base des coeurs de calcul | ||
* la fréquence de la mémoire | * la fréquence de la mémoire | ||
Ligne 834: | Ligne 834: | ||
Dans l'expérience précédente, nous avons exploité un régime de parallélisme sur les processeurs très supérieur au nombre de //Compute Units//, lesquelles sont identifiées comme les coeurs. Il y avait 8 coeurs physiques et nous avons "chargé" chaque coeur à 256 fois leur charge. Que se passe-t-il si nous effectuons la même chose avec les GPU ? | Dans l'expérience précédente, nous avons exploité un régime de parallélisme sur les processeurs très supérieur au nombre de //Compute Units//, lesquelles sont identifiées comme les coeurs. Il y avait 8 coeurs physiques et nous avons "chargé" chaque coeur à 256 fois leur charge. Que se passe-t-il si nous effectuons la même chose avec les GPU ? | ||
- | Dans notre exemple, la GTX 1080 Ti dispose de 3584 //cudacores//. La Quadro K420 de 192 //cudacores//. Explorons ces périphériques avec des **PR** de 256x ces valeurs (nous sommes obligés de porter les itérations à 1000 milliards) : | + | Dans notre exemple, la GTX 1080 Ti dispose de 3584 //cuda cores//. La Quadro K420 de 192 //cuda cores//. Explorons ces périphériques avec des **PR** de 256x ces valeurs (nous sommes obligés de porter les itérations à 1000 milliards) : |
^ Périphérique ^ Durée ^ Itops ^ Inside ^ | ^ Périphérique ^ Durée ^ Itops ^ Inside ^ | ||
Ligne 847: | Ligne 847: | ||
**Exercice #15 : exécution sur tous les périphériques pour un PR optimal** | **Exercice #15 : exécution sur tous les périphériques pour un PR optimal** | ||
- | * Reprenez les spécifications des GPU et isolez le nombre de //cudacores// | + | * Reprenez les spécifications des GPU et isolez le nombre de //cuda cores// |
- | * Exécutez le programme sur les GPU avec un nombre d'itérations de 100 milliards et un PR de 256x le nombre de //cudacores// | + | * Exécutez le programme sur les GPU avec un nombre d'itérations de 100 milliards et un PR de 256x le nombre de //cuda cores// |
* Repérez les éléments de **durée**, **itops** et **inside** | * Repérez les éléments de **durée**, **itops** et **inside** | ||
* Tracez l'histogramme correspondant aux performances sur le modèle ci-dessus | * Tracez l'histogramme correspondant aux performances sur le modèle ci-dessus | ||
Ligne 1009: | Ligne 1009: | ||
</note> | </note> | ||
- | Nous pouvons également "explorer" la scalabilité des GPU forts de notre expérience de ''PiOpenCL''. Par exemple, du nombre de //cudacores// à ce nombre multiplié par 16, par pas de 128. La commande appelée est la suivante :<code> | + | Nous pouvons également "explorer" la scalabilité des GPU forts de notre expérience de ''PiOpenCL''. Par exemple, du nombre de //cuda cores// à ce nombre multiplié par 16, par pas de 128. La commande appelée est la suivante :<code> |
python PiXPU.py -d 2 -b 3584 -e $((3584*8)) -s 128 -r 3 -i 100000000000 | python PiXPU.py -d 2 -b 3584 -e $((3584*8)) -s 128 -r 3 -i 100000000000 | ||
</code> | </code> | ||
Ligne 1056: | Ligne 1056: | ||
<note warning> | <note warning> | ||
Exercice #21 : étude de valeurs particulières de PR | Exercice #21 : étude de valeurs particulières de PR | ||
- | * Exécutez ''PiXPU.py'' autour du PR égal à 4x le nombre de //cudacores// (16 avant et 16 après) | + | * Exécutez ''PiXPU.py'' autour du PR égal à 4x le nombre de //cuda cores// (16 avant et 16 après) |
* Tracez les résultats avec GNUplot | * Tracez les résultats avec GNUplot | ||
* Quels sont les PR avec les performances les plus faibles ? | * Quels sont les PR avec les performances les plus faibles ? | ||
Ligne 1259: | Ligne 1259: | ||
</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:insa2018gpu:insa2018gromacs4stretch|recette de Gromacs pour Debian Stretch]] ;-) |
<note warning>Exercice #26 : Exécutez l'exemple ''1536'' | <note warning>Exercice #26 : Exécutez l'exemple ''1536'' | ||
Ligne 1296: | Ligne 1296: | ||
</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:insa2018gpu:insa2018pkdgrav4stretch|recette d'un PKDGRAV3 pour Debian Stretch]] ;-) |
+ | |||
+ | ===== Conclusion ===== | ||
+ | |||
+ | 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. | ||
--- //[[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 2018/11/26 15:37// |