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 :

  1. Exécution de l'application via APS (en ligne de commande) ;
  2. 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. 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 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