Table des matières
Jean Zay : Arm MAP
MAP est un outil graphique d'analyse de performances pour des applications parallèles CPU (OpenMP, MPI) ou GPU (CUDA C/C++/Fortran, OpenACC) et des applications hybrides (MPI+CUDA/OpenACC).
Compilation
Votre programme doit être compilé avec l'option -g
des compilateurs Intel et GNU. Cette option indique au compilateur d'ajouter dans l'exécutable diverses informations qui permettront d'afficher les numéros de ligne du code source, les noms des variables, …
Pour plus d'information, vous pouvez consulter la liste détaillée des options de débogage des compilateurs Intel.
Utilisation
L’interface graphique Arm Forge est commune pour le débogueur DDT et le profiler MAP. Vous pouvez utiliser l’interface graphique d’Arm Forge installée sur Jean Zay ou celle installée localement sur votre machine (appelée Arm Remote Client).
GUI Arm Forge sur Jean Zay
L'accès à l'interface graphique d'Arm Forge installé sur Jean Zay s'effectue via la commande module :
$ module load arm-forge
Attention : l'interface graphique d'Arm Forge ne peut être utilisée que sur les nœuds frontaux de Jean Zay. De plus, son utilisation requière que votre connexion autorise l'affichage graphique XWindows (par exemple avec l'option -X
de la commande ssh
).
Une fois MAP lancé avec la commande suivante :
$ map&
une fenêtre telle que celle-ci doit apparaitre sur votre écran :
GUI Arm Forge installé localement (Arm Remote Client)
Alternativement, il est possible d’utiliser l'interface graphique Arm Remote Client installé en local sur votre machine. Cela permet d’éviter l’affichage graphique Xwindows au travers de la connexion ssh et, ainsi, d'offrir de meilleurs temps de réponse de l'interface si votre réseau est peu performant.
Arm Remote Client peut être téléchargé gratuitement sur le site d'Arm.
Attention : la version du Remote Client doit correspondre à la version du paquet Arm Forge installé sur Jean Zay. Le numéro de version est indiqué par la commande map -v
:
$ module load arm-forge $ map -v Arm MAP Part of Arm Forge. Copyright (c) 2002-2019 Arm Limited (or its affiliates). All rights reserved. Version: ...
Au premier lancement d’Arm Remote Client, il faut établir une connexion à Jean Zay via Remote Launch
/Configure
/Add
. Dans le champs Remote Installation Directory
, vous devez indiquer le répertoire d’installation d'Arm Forge sur Jean Zay qui peut être connu via la commande suivante :
$ module display arm-forge ... prepend-path PATH /path/to/install/arm/arm-forge-version/bin ...
Dans la sortie de cette commande, vous constaterez que la variable PATH
est complétée par la chaine de caractères /path/to/install/arm/arm-forge-version/bin
qui indique que le répertoire d'installation est /path/to/install/arm/arm-forge-version
(sans le suffixe /bin
).
Pour de plus amples détails sur Arm Remote Client, vous pouvez consulter la section « Connecting to a remote system » de la documentation Arm.
Profiler un code
Il y a deux façons de profiler un code avec MAP :
- soit en exécutant le code en ligne de commande dans votre job Slurm et en visualisant a posteriori les résultats grâce à l'interface graphique d'Arm Forge ;
- soit en exécutant le code directement via l'interface graphique d'Arm Forge et la fonctionnalité Reverse Connect.
Profiler un code en ligne de commande
Pour profiler votre code en ligne de commande, ajoutez la commande map
avec l'option --profile
au début de la ligne d’exécution (avant la commande srun
) :
- intel_mpi_map.slurm
# Vos directives Slurm habituelles ... # Chargement des modules habituels ... # Ajout du module arm-forge pour MAP module load arm-forge # Echo des commandes lancées set -x # Evite une saturation du répertoire temporaire /tmp export TMPDIR=$JOBSCRATCH # Execution du code map --profile srun ./exec_mpi_to_profile
Après l’exécution du code, un fichier .map
sera généré dans votre répertoire d'exécution.
Attention : Si l'exécution est effectuée dans le répertoire temporaire JOBSCRATCH
, le fichier .map
sera effacé automatiquement. Il faut donc penser à le recopier dans un autre répertoire à la fin du job.
Pour le visualiser, lancez l'interface graphique soit en local sur votre machine soit sur Jean Zay,
puis cliquez sur Load Profile Data File
et choisissez le fichier .map
qui vient d'être généré.
Profiler un code via l'interface graphique
La seconde façon de profiler avec MAP est d'utiliser sa fonctionnalité Reverse Connect en respectant les deux étapes suivantes :
- Créez ou modifiez votre script de soumission pour utiliser MAP en mode Reverse Connect (option
--connect
de la commandemap
) :#!/bin/bash # Vos directives Slurm habituelles ... # Chargement des modules habituels module purge module load ... # Ajout du module arm-forge pour MAP module load arm-forge # echo des commandes lancées set -x # Evite une saturation du répertoire temporaire /tmp export TMPDIR=$JOBSCRATCH # exécution du code map --connect srun ...
Remarque : dans certains cas (par exemple, avec des codes qui n’utilisent pas la bibliothèque MPI), il peut être nécessaire de positionner les variables d’environnement suivantes dans votre script :
export ALLINEA_MPI_INIT=main export ALLINEA_HOLD_MPI_INIT=1
ou si elles ne fonctionnent pas
export ALLINEA_STOP_AT_MAIN=1
- Ensuite, depuis votre session interactive sur Jean Zay ou sur votre machine locale (Arm Remote Client), lancez l'interface graphique de MAP (en arrière plan dans cet exemple via le symbole
&
à la fin de la commandemap&
) puis lorsque l'interface est affichée sur votre écran, soumettez votre job Slurm :$ module load arm-forge $ map& $ sbatch intel_mpi.slurm
Attention : quand votre job exécutera la commande
map --connect ...
, MAP affichera une demande de connexion que vous devrez accepter avant de cliquer surRun
pour lancer l'exécution de votre code.
Documentation
La documentation de MAP est disponible sur le site d'Arm.
Licence
L'IDRIS possède une licence comportant au total 8196 jetons pour les deux produits Arm DDT et MAP ; leur utilisation requiert un jeton par processus MPI.