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é 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-goptqui 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
--exclusivede 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 profde Slurm) qui permet d'avoir un accĂšs complet aux compteurs de performance (paramĂštre noyauperf_event_paranoid=-1).