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
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 commandeaps-report -h) - ou avec un navigateur WEB.
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).
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) :
#!/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
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 :
#!/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
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=mpipour effectuer un échantillonnage MPI.--collection-mode=omppour effectuer un échantillonnage OpenMP.--collection-mode=mpi,omppour 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â
- Guide de prise en main d'Intel APS d'APS chez Intel.
- APS peut ĂȘtre tĂ©lĂ©chargĂ© librement sur https://software.intel.com/performance-snapshot.