VTune
Nous vous invitons à consulter les bonnes pratiques pour le profilage de code pour des conseils généraux sur l'analyse de performance sur Jean Zay.
Descriptionâ
VTune Amplifier est un outil d'analyse de performances faisant partie de la suite Intel Parallel Studio XE. Il dispose d'une interface graphique (GUI) mais peut aussi ĂȘtre utilisĂ© en ligne de commande.
Versions installĂ©esâ
- Plusieurs versions de VTune sont accessibles suivant les versions d'Intel Parallel Studio XE installées sur la machine.
- VTune Amplifier est parfaitement adapté aux applications hybrides MPI + OpenMP.
Utilisationâ
La commande module permet d'accéder aux diverses versions de VTune.
Pour afficher les diverses versions disponibles, vous avez deux possibilités :
- via les modulefiles correspondants :
$ module av intel-vtune
intel-vtune/18.0.1 intel-vtune/18.0.5 intel-vtune/19.0.2
intel-vtune/19.0.4(default) intel-vtune/19.0.5
- ou via les environnements Intel :
$ module av intel-all
intel-all/16.0.4 intel-all/18.0.1 intel-all/18.0.5 intel-all/19.0.2
intel-all/19.0.4(default) intel-all/19.0.5
Pour utiliser, par exemple, la version 19.0.4 de VTune, vous pouvez utiliser :
- soit le modulefile correspondant :
$ module load intel-vtune/19.0.4
- soit l'environnement Intel correspondant :
$ module load intel-all/19.0.4
Notez que les modules intel-all/XX.Y.Z contiennent les environnements Intel complets avec les compilateurs, la bibliothÚque mathématique MKL, la bibliothÚque MPI ainsi que les outils d'analyse des codes.
Une fois le module adéquat chargé, l'utilisation de VTune se fait en deux étapes :
- Exécution de votre programme via Vtune (en ligne de commande) ;
- Visualisation/Analyse des résultats avec l'interface graphique.
ExĂ©cutionâ
Le plus simple est de lancer l'exécution en ligne de commande dans vos scripts Slurm : il suffit d'ajouter la commande amplxe-cl juste avant le nom de votre exécutable (avec des options permettant de sélectionner le type d'échantillonnage à réaliser).
Nous vous recommandons fortement d'utiliser la mĂȘme version de l'environnement Intel pour la compilation, l'exĂ©cution et l'analyse de votre code.
Remarques :
- Pour que la commande
amplxe-clsoit reconnue, il faut avoir chargé le modulefile adéquat auparavant (voir ci-dessus) soit dans l'environnement de votre session interactive, soit dans l'environnement de votre job. - Pour avoir de l'aide concernant les options de la commande
amplxe-cl, il vous suffit de taperamplxe-cl --help.
Les diverses versions de VTune n'utilisent pas les drivers d'Ă©chantillonnage Intel car ils ne sont pas installĂ©s sur les nĆuds de calcul, mais l'outil Perf. En consĂ©quence, certaines analyses, activables via l'option -collect, ne sont pas disponibles sur Jean Zay : par exemple l'option -collect memory-access qui permet d'effectuer des mesures de bande passante mĂ©moire.
Lors de l'exĂ©cution, VTune Ă©crit ses fichiers dans un rĂ©pertoire dont le nom peut ĂȘtre spĂ©cifiĂ© via l'option -r nom_repertoire. Pensez Ă bien spĂ©cifier un rĂ©pertoire situĂ© dans un de vos espaces disque permanent (comme le WORK) ou semi-temporaire (comme le SCRATCH). Notez que VTune suffixera le nom du rĂ©pertoire par le nom du nĆud d'exĂ©cution : il y aura donc autant de rĂ©pertoires que de nĆuds d'exĂ©cution.
- Si le répertoire existe déjà , l'exécution échouera pour éviter d'écraser des résultats précédents. Il faut donc vous assurer, avant de lancer l'exécution, que le répertoire spécifié par l'option
-rn'existe pas. - Par défaut, VTune utilise le répertoire systÚme
/tmpqui est trÚs limité en taille pour fabriquer les données. Pour que VTune dispose d'un espace de travail plus important, il est conseillé de définir la variable TMPDIR. Par exemple, pour utiliser le répertoire SCRATCH :
export TMPDIR=$SCRATCH
Voici un exemple de job de soumission pour un code purement MPI initiant 4 processus MPI :
#!/bin/bash
#SBATCH --job-name=vtune_run_mpi # Nom arbitraire du travail Slurm
#SBATCH --output=%x.%j.out # Fichier de sortie standard du travail
#SBATCH --error=%x.%j.err # Fichier d'erreur standard du travail
#SBATCH --ntasks=4 # Nombre de processus MPI demandes
# /!\ Attention, la ligne suivante est trompeuse mais dans le vocabulaire
# de Slurm "multithread" fait bien référence à l'hyperthreading.
#SBATCH --hint=nomultithread # 1 processus MPI par coeur physique (pas d'hyperthreading)
# La ligne ci-dessous peut ĂȘtre dĂ©commentĂ©e pour passer en mode exclusif et disposer
# d'un accÚs complet aux compteurs matériels (cf. les bonnes pratiques pour le profilage)
##SBATCH --exclusive -C prof
#SBATCH --time=0:20:00 # Temps du job hh:mm:ss (0h20mn ici)
## Choix d'un environnement Intel disposant de VTune
module load intel-all/19.0.4
## Echo des commandes
set -x
## Execution dans le SCRATCH
cd $SCRATCH
# Selection d'un repertoire different a chaque run.
export DIR_PROF=profiling.$SLURM_NTASKS.$SLURM_JOB_ID
# Pour ne pas utiliser le /tmp
export TMPDIR=$SCRATCH
## Echantillonnage de type hotspots du binaire ./my_bin_exe avec
## ecriture des resultats dans le repertoire $WORKDIR/$DIR_PROF
## et limitation de la quantite de donnees collectees (ici 4000 MB)
srun amplxe-cl -q -collect hotspots -r $DIR_PROF -data-limit=4000 -- ./my_bin_exe
Analyse/visualisation des rĂ©sultatsâ
L'analyse des rĂ©sultats se fait Ă l'aide de l'interface graphique amplxe-gui en lui indiquant le nom du rĂ©pertoire contenant les fichiers Ă©crits lors de lâexĂ©cution de amplxe-cl.
Pour utiliser la mĂȘme version 19.0.4 que dans l'exemple de job ci-dessus, vous devez utiliser les commandes suivantes :
$ module load intel-vtune/19.0.4
$ amplxe-gui resultdir
L'environnement Intel utilisĂ© Ă cette Ă©tape doit ĂȘtre le mĂȘme que celui utilisĂ© pour faire l'Ă©chantillonnage.
Documentationâ
- Le Guide de démarrage de VTune chez Intel
- Toute la documentation sur le site d'Intel