Aller au contenu principal

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 -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 noyau perf_event_paranoid=-1).