Table des matières
Jean Zay : APS
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.
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
. Spécifiez un sous-répertoire dans un espace disque permanent (comme le WORK
ou le SCRATCH
) pour écrire ces fichiers.
Attention : si le répertoire existe déjà, l'exécution en cours écrasera les résultats d’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 #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 #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 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
- Guide "du débutant" d'APS chez Intel.
- APS peut être téléchargé librement sur https://software.intel.com/performance-snapshot.