Aller au contenu principal

Application Performance Snapshot (APS)

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​

APS (Application Performance Snapshot) est un outil d'analyse de performances fourni avec Intel VTune Amplifier. L'échantillonnage s'effectue trÚs simplement en ligne de commande et produit des fichiers de résultats sous divers formats (texte, HTML, VTune).

Versions installĂ©es​

  • Plusieurs versions d'APS sont accessibles via les diverses versions d'Intel Parallel Studio XE installĂ©es sur la machine.
  • APS est parfaitement adaptĂ© aux applications hybrides MPI et OpenMP.

Utilisation​

Initialisation​

La version d'APS utilisée dépend de l'environnement Intel que vous utilisez. La commande module permet d'accéder aux divers environnements Intel.

La commande module avail intel-all vous indiquera les diverses versions disponibles :

$ module avail intel-all
intel-all/2016.4(16.0.4) intel-all/2019.2(19.0.2) intel-all/2020.0
intel-all/2018.1(18.0.1) intel-all/2019.4(19.0.4) intel-all/2020.1
intel-all/2018.5(18.0.5) intel-all/2019.5(19.0.5) intel-all/2020.2

Avant de travailler avec cet outil, il faut donc exécuter une commande du type :

$ module load intel-all/2019.4
INFO

Notez que les modules intel-all/XXXX.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 chargé, l'utilisation d'APS se fait en deux étapes :

  • ExĂ©cution de l'application via APS (en ligne de commande) ;
  • Analyse/visualisation des rĂ©sultats suivant le format d'Ă©criture choisi :
    • avec un Ă©diteur de texte (fichier de sortie du job batch)
    • en ligne avec la commande aps-report (voir la commande aps-report -h)
    • ou avec un navigateur WEB.
Attention

Nous vous recommandons fortement d'utiliser la mĂȘme version de l'environnement Intel lors de la compilation, lors de l'exĂ©cution et lors de l'analyse de votre code.

ExĂ©cution​

Le plus simple est de faire l'échantillonnage en ligne de commande dans vos scripts Slurm : il suffit d'ajouter la commande aps dans l'appel de srun. Pour que cette commande soit reconnue, il ne faut pas oublier de charger le module intel-all/20XX.Y adéquat dans votre job.

Pour avoir de l'aide concernant les options de la commande aps, il vous suffit de taper aps --help.

En fin Ă©chantillonnage, APS Ă©crit ses fichiers dans un rĂ©pertoire dont le nom peut ĂȘtre spĂ©cifiĂ© via l'option -r=nom_repertoire ou bien --result-dir=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).

Attention

Si le répertoire existe déjà, l'exécution en cours écrasera les résultats des exécutions précédentes.

  • Voici un exemple de soumission pour un code purement MPI (sans threads OpenMP) :
job_aps_mpi.slurm
#!/bin/bash
#SBATCH --job-name=aps_mpi # nom du job
#SBATCH --ntasks=4 # nombre total de processus MPI
#SBATCH --ntasks-per-node=4 # Nombre de processus MPI par noeud
# /!\ Attention, la ligne suivante est trompeuse mais dans le vocabulaire
# de Slurm "multithread" fait bien référence à l'hyperthreading.
#SBATCH --hint=nomultithread # on réserve des coeurs physiques et non logiques
# 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=00:30:00 # temps d'exécution maximum demande (HH:MM:SS)
#SBATCH --output=%x_%j.out # nom du fichier de sortie
#SBATCH --error=%x_%j.out # nom du fichier d'erreur (ici commun avec la sortie)

## Choix d'un environnement Intel disposant de APS
module load intel/2019.4

##echo des commandes
set -x

## Execution sous le SCRATCH
cd $SCRATCH

## Echantillonnage du binaire ./my_bin_exe
## Les fichiers de rapport sont automatiquement generes apres l'echantillonnage.
srun aps --collection-mode=mpi ./my_bin_exe
Attention

Les diverses versions de APS ne peuvent pas utiliser les drivers d'Ă©chantillonnage Intel car ils ne sont pas installĂ©s sur les nƓuds de calcul. En consĂ©quence, certaines analyses, activables via l'option --collection-mode, ne sont pas disponibles sur Jean Zay. Notamment l'option --collection-mode=all qui est la valeur par dĂ©faut n'est pas utilisable. Vous ĂȘtes donc obligĂ© de spĂ©cifier l'option --collection-mode=mpi pour un code purement MPI.

  • Voici un exemple de soumission pour un code hybride MPI/OpenMP :
job_aps_mpi_omp.slurm
#!/bin/bash
#SBATCH --job-name=aps_mpi_omp # nom du job
#SBATCH --ntasks=4 # nombre total de processus MPI
#SBATCH --ntasks-per-node=4 # Nombre de processus MPI par noeud
#SBATCH --cpus-per-task=10 # nombre de threads OpenMP
# /!\ Attention, la ligne suivante est trompeuse mais dans le vocabulaire
# de Slurm "multithread" fait bien référence à l'hyperthreading.
#SBATCH --hint=nomultithread # on réserve des coeurs physiques et non logiques
# 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=00:30:00 # temps d'exécution maximum demande (HH:MM:SS)
#SBATCH --output=%x_%j.out # nom du fichier de sortie
#SBATCH --error=%x_%j.out # nom du fichier d'erreur (ici commun avec la sortie)

## Choix d'un environnement Intel disposant de APS
module load intel/2019.4

##echo des commandes
set -x

## Execution sous le SCRATCH
cd $SCRATCH

## Echantillonnage du binaire ./my_bin_exe
## Les fichiers de rapport sont automatiquement generes apres l'echantillonnage.
srun aps --collection-mode=mpi,omp ./my_bin_exe
Attention

Les diverses versions de APS ne peuvent pas utiliser les drivers d'Ă©chantillonnage Intel car ils ne sont pas installĂ©s sur les nƓuds de calcul. En consĂ©quence, certaines analyses, activables via l'option --collection-mode, ne sont pas disponibles sur Jean Zay. Notamment l'option --collection-mode=all qui est la valeur par dĂ©faut n'est pas utilisable. Vous ĂȘtes donc obligĂ© de spĂ©cifier l'une des options suivantes :

  • --collection-mode=mpi pour effectuer un Ă©chantillonnage MPI.
  • --collection-mode=omp pour effectuer un Ă©chantillonnage OpenMP.
  • --collection-mode=mpi,omp pour effectuer un Ă©chantillonnage MPI et OpenMP.

Visualisation/Analyse des rĂ©sultats​

Vous trouverez les informations globales concernant le code à la fin du fichier de sortie de votre job : sous-programmes MPI appelés, fonctions les plus consommatrices en temps elapsed, etc...

L'outil aps-report ne nĂ©cessite pas un affichage graphique dĂ©portĂ©. Il peut donc ĂȘtre appelĂ© directement depuis une session interactive sur Jean Zay, en lui fournissant le nom du rĂ©pertoire contenant les rĂ©sultats Ă  afficher (par dĂ©faut aps_result_yyyymmdd).

Voici un exemple d'appel permettant de voir dans votre console les données relatives à chaque processus MPI :

$ aps-report -t -D aps_result_yyyymmdd

aps va aussi générer un fichier au format HTML (par défaut aps_report_yyyymmdd_hhmmss.html) mais il n'y a pas de navigateur web sur Jean Zay vous permettant de le consulter.

Documentation​