Profiler votre code avec map sur Turpan

Pour profiler votre code, vous devez travailler en deux temps :

  1. Exécuter le code en lançant les instructions de profilage. Cette opération générera un fichier de données.
  2. Utilisez l’outil de visualisation pour lire les données acquises à l’étape 1

Il est recommandé de compiler son code avec le switch -g pour corréler les différentes phases du profil observé avec le code. Mais à l’inverse de ce qui est recommandé pour la phase de débogage (voir ici, il est utile de garder les options d’optimisation pour avoir un profil correct.

Profiler son code avec map

Dans le fichier de soumission sbatch, il vous suffit de modifier l’appel srun par :

module load arm-forge/22.1.2
map --profile srun mon_appli...

Voir les résultats avec map

La commande ci-dessus produira un fichier dont le nom ressemblera à : mon_appli_2019-02-19_15-47.map

Il suffit alors d’ouvrir le visualiseur par :

map mon_appli_2019-02-19_15-47.map

Il s’agit d’un outil graphique, vous devrez donc ouvrir une session X11 :

  • Vous connecter avec ssh -X
  • Si le débit réseau est insuffisant, ssh -XC permet d’améliorer la fluidité de l’affichage
  • Si cela ne suffit pas, utilisez une session graphique

La partie supérieure de l’écran ressemblera à la figure ci-dessous. Si vous avez compilé votre code avec le switch -g, et si map est capable de trouver les sources de votre programme, vous pourrez alors établir une corrélation entre le profil affiché en haut de l’écran et le code (qui sera affiché en bas de l’écran).

Sortie de map

Le menu Metrics permet de choisir ce qu’on regarde : les entrées-sorties, les appels mpi, etc.

Espace utilisateurs/Doc Technique TURPAN/Améliorer les performances

Voir aussi

LWP

Bull Mpi LightWeight Profiler est un outil de profilage léger, simple à utiliser, et qui ne nécessite aucune modification de code : pas de recompilation ou d’édition de lien.

Nsight Graphics

Pour utiliser nsys, c'est très simple. D'abord, il faut aller sur le nœud de calcul pour générer un rapport avec votre application (nœud unique ou nœuds multiples).