Analyse de performances avec HPM




Vue d'ensemble

HPM (Hardware Performance Monitor) est un ensemble d'outils permettant de mesurer les performances d'un programme Fortran, C ou C++ sur une machine IBM SP. Il permet d'accéder directement aux informations issues des compteurs hardware de la machine (nombre de cycles, nombre d'opérations flottantes, cache miss, etc.). Il possède trois composantes :
  1. hpmcount est une commande dont le but est de mesurer les performances globales d'un programme. Le résultat des mesures est imprimé sur la sortie standard ou redirigé vers un fichier en fin d'exécution du programme.

  2. libhpm est une bibliothèque de procédures permettant à l'utilisateur de focaliser les mesures sur les parties du code qu'il souhaite instrumenter (ex. fonctions, sous-programmes, boucles,etc.) . En fin d'exécution, le résultat des mesures est enregistré dans deux fichiers. Le premier suffixé par .hpm est un fichier texte, le second suffixé par .viz doit être visualisé avec l'outil peekperf (anciennement hpmviz).

    La bibliothèque libhpm définit trois types d'appels :

    L'utilisation de ces appels nécessite l'inclusion du fichier entête :

    Attention : dans un programme Fortran, le nom des procédures appelées doit impérativement apparaître en minuscules et à la compilation, le fichier doit passer par le préprocessseur C. C'est automatique pour les programmes suffixés par F, F90 ou F03 mais dans les autres cas, cela nécessite l'utilisation de l'option -qsuffix=cpp=suffix ou suffix est le suffixe du programme source (i.e. f90, f ou f03).

  3. peekperf est une interface graphique qu'on lance après l'execution, qui permet lire un ou plusieurs fichiers .viz et affiche, sous forme de tableaux, les performances relatives aux différentes régions instrumentées dans l'application.

Utilisation

Partant d'exemples simples, nous allons montrer pas à pas comment utiliser HPM/libhpm pour mesurer et interpréter les performances globales ou partielles des programmes :

Notes


© CNRS - IDRIS, 23/04/2012