Babel : mesures de performances avec HPM

Description

HPM est une bibliothèque de mesure de performances fournie par IBM. Elle est basée sur le relevé des compteurs hardware de la machine.

Utilisation

Pour pouvoir utiliser cette bibliothèque, il est nécessaire d'instrumenter manuellemment votre application. Elle permet à l'utilisateur de focaliser les mesures sur les parties du code qu'il souhaite instrumenter (fonctions, sous-programmes, boucles,…). 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.

La bibliothèque HPM fournit les appels suivants :

  • Appel d'initialisation l'environnement HPM :
    • en C et C++ : hpmInit(taskID,nom_programme)
    • en Fortran : f_hpminit(taskID,nom_programme), Le premier argument est un entier qui n'est plus utilisé, le second est une chaîne de caractères qui définit le nom du programme et qui sera utilisé pour le nom des fichiers de sortie.
  • Appel de terminaison de l'environnement HPM :
    • en C et C++ : hpmTerminate(taskID)
    • en Fortran : f_hpmterminate(taskID) L'argument est une valeur entière non utilisée. On peut donc y mettre n'importe quel entier.
  • Appel de début d'enregistrement des mesures :
    • en C et C++ : hpmStart(instID,label)
    • en Fortran : f_hpmstart(instID,label) Le premier argument est un entier qui sert à identifier la section mesurée, le second est une chaîne de caractères qui définit le nom de la section.
  • Appel de fin d'enregistrement des mesures :
    • en C et C++ : hpmStop(instID)
    • en Fortran : f_hpmstop(instID) L'argument est un entier identifiant la section de mesure (doit donc être le même qu'une section demarrée par un appel à hpmStart ou à f_hpmstart).

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

  • libhpc.h dans un programme C/C++,
  • f_hpm.h dans un programme Fortran.

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=suffixsuffix est le suffixe du programme source (i.e. f90, f ou f03).

peekperf est une interface graphique qu'on lance après l'execution, qui permet de 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.

Documentation

  • L'utilisation de cette bibilothèque est détaillée dans le document Performance Analysis Tools.
  • Un autre document très détaillé est disponible dans le répertoire /bglocal/prod/IHPCT/2.2.0/doc/hpm/ sur Babel.