
Table des matières
Jean Zay : bonnes pratiques pour le profilage de code
Cette page vise à lister les bonnes pratiques à suivre lors d'un profilage de code dans le but d'analyser ses performances. Certains conseils sont généraux et s'appliquent quelle que soit la machine utilisée, d'autres sont spécifiques à la machine Jean Zay.
Choix d'un cas test
Les goulots d'étranglement d'un code peuvent varier très largement en fonction de la configuration et de la taille du cas test utilisé ou encore du nombre de processus MPI choisi pour l'exécution.
- Utilisez un cas test représentatif des travaux que vous exécutez (ou prévoyez d'exécuter) sur Jean Zay dans le cadre de votre projet.
- Si vous avez des configurations très variées, il peut être intéressant de réaliser le profilage de plusieurs configurations différentes pour avoir une meilleure idée de l'impact du cas test sur les performances.
Compilation
La majorité des outils de profilage de code nécessitent que les symboles de débogage soient présents dans l'exécutable analysée pour fonctionner. Dans certains cas, le profilage sera possible sans les symboles de débogage mais les résultats obtenus seront difficilement exploitables (absence du nom des fonctions, des numéros de lignes, etc).
- Utilisez les mêmes compilateurs et options de compilation que vos travaux de production.
- Activez le mode débogage à la compilation (généralement avec l'option
-g
) mais assurez-vous de préciser explicitement le niveau d'optimisation désiré (par exemple-g -O3
) car de nombreux compilateurs désactivent les optimisations par défaut lors de l'activation du mode débogage. Les compilateurs NVIDIA supportent l'option-gopt
qui permet d'activer le mode débogage sans changer le niveau d'optimisation.
Exécution
- Si vous utilisez moins d'un nœud, il peut être intéressant d'utiliser le mode exclusif (option
--exclusive
de Slurm) pour votre travail afin d'être certain de ne pas avoir d'effets liés au potentiel partage du nœud. - Pour des raisons de sécurité, l'accès à certains compteurs matériels de performance est restreint par défaut. Lorsque votre travail est exclusif, vous pouvez obtenir des profils de code plus complets en précisant la contrainte Slurm
prof
(option-C prof
de Slurm) qui permet d'avoir un accès complet aux compteurs de performance (paramètre noyauperf_event_paranoid=-1
).