Jean Zay : VTune

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 :

  1. Exécution de votre programme via Vtune (en ligne de commande) ;
  2. 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 (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 permettrait 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.

Attention : 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)
#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 d' 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