Analyser la performance de votre code : Vtune [amplifierXE]

Description et utilisation de vtune amplifier (outil de profilage multithreadé d’intel)

Article mis en ligne le 30 octobre 2014
dernière modification le 26 octobre 2017
logo imprimer

Vtune [amplifierXE] est un outil d’analyse de Performance de code.
Il permet de déterminer facilement les régions chaudes du codes (c’est-à-dire les régions les plus consommatrices en tant de calculs). Il permet de déterminer le profil d’exécution d’un code multihreadé (OpenMP). Par contre, Vtune ne vous dira rien sur les communications inter-nœuds.

Vtune s’utilise de préférence en deux temps :

  1. Collection des données sur un nœud de calcul
  2. Analyse des résultats à travers une interface graphique : amplxe-gui

Collecter les données

Le script suivant, utilisé à travers sbatch, permet d’assurer la collecte des données :

Analyser les données

Charger le module vtune, puis lancer l’interface graphique :

Attention : Vous pouvez aussi lancer votre programme à partir de l’interface graphique, mais dans ce cas il tournera sur la frontale

Ci-dessous quelques copies d’écran sur un cas simple.
Le cas étudié est une produit de matrice 2000x2000 en simple précision (SP).
Le produit est réalisé par appel de la routine BLAS SGEMM de la MKL. Le calcul est multithreadé (-mkl=parallel) sur 20 cœurs physiques.

  • Ci-dessous les temps d’exécution. La majeure partie du temps est dans sgemm (ce qui est attendu). un gain potentiel est indiqué.
    Hot Spot - Points chauds {PNG}
  • Ci-dessous on visualise le % d’utilisation du CPU par les 20 threads du calculs.
    Exactution Time Line % CPU used {PNG}

Ne profiler qu’une partie du code

Afin d’avoir des résultats plus précis, il est souvent nécessaire de ne collecter les données que sur une partie du code : par exemple ne considérer que la boucle principale, en excluant les phases d’initialisation et de terminaison du programme.
Pour cela, il est nécessaire d’ajouter dans votre code quelques appels à des fonctions de vtune. En fortran :

Compilation (en utilisant des versions récentes du compilateur et de vtune) :

Profiler un code MPI avec VTune

Dans le cas où le code à profiler est un code MPI, il est nécessaire d’adapter la ligne de commande.

Ici le paramètre 0-19 correspond aux rangs MPI que l’on souhaite profiler. Par exemple, si on souhaite ne profiler que les rangs 4 et 8, on écrira mpirun -n 20 -gtool "amplxe-cl -collect hotspots : 4,8" mon_executable.

Attention ! Il s’agit ici de profiler de façon indépendante l’exécution d’un ou plusieurs processus issus d’un programme MPI. Aucune information concernant les communications ne sera collectée.



Site réalisé sous SPIP
avec le squelette ESCAL-V3
Version : 3.86.44
Hébergeur : INP Toulouse