Aller au contenu principal

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
INFO

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).

Attention

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-cl soit 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 taper amplxe-cl --help.
Attention

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.

Attention
  • 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 -r n'existe pas.
  • Par dĂ©faut, VTune utilise le rĂ©pertoire systĂšme /tmp qui 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 :

job_vtune_mpi.slurm
#!/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
Attention

L'environnement Intel utilisĂ© Ă  cette Ă©tape doit ĂȘtre le mĂȘme que celui utilisĂ© pour faire l'Ă©chantillonnage.

Documentation​