Aller au contenu principal

HPCToolkit: profilage CPU/MPI

Nous vous invitons à consulter les bonnes pratiques pour le profilage de code pour des conseils généraux sur l'analyse de performance sur Jean Zay.

Description​

HPCToolkit est une suite d'outils de mesure et d'analyse de performance basée sur l'échantillonnage statistique. Elle permet d'attribuer les coûts de performance (temps, compteurs matériels, inefficacités) au contexte d'appels.

La chaĂźne repose principalement sur :

  • hpcrun pour collecter les mesures pendant l'exĂ©cution ;
  • hpcstruct pour analyser la structure de l'exĂ©cutable ;
  • hpcprof pour construire la base d'analyse finale ;
  • hpcviewer pour visualiser les rĂ©sultats.

Pour le profilage GPU avec HPCToolkit, voir la page HPCToolkit : profilage GPU.

Versions installĂ©es​

La commande module permet d'accéder aux diverses versions de HPCToolkit et HPCViewer.

Pour afficher les versions disponibles :

$ module avail hpctoolkit hpcviewer
hpctoolkit/2020.08.03 hpctoolkit/2024.01.1 hpctoolkit/2024.01.1-python3.9
hpctoolkit/2020.08.03-cuda hpctoolkit/2024.01.1-cuda hpctoolkit/2024.01.1-python3.10

hpcviewer/2020.07 hpcviewer/2024.02

Pour le cas CPU/MPI, chargez une version non -cuda de HPCToolkit, par exemple :

$ module load hpctoolkit/2024.01.1-python3.10
$ module load hpcviewer/2024.02

AprĂšs chargement des modules, les commandes suivantes sont disponibles :

$ hpc
hpcprof hpcrun hpcstruct hpcviewer

ExĂ©cution et collecte​

Exemple de script Slurm pour un code MPI :

job_hpctoolkit_mpi.slurm
#!/bin/bash
#SBATCH --job-name=hpctoolkit_mpi
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
#SBATCH --ntasks=4
#SBATCH --ntasks-per-node=4
#SBATCH --cpus-per-task=10
#SBATCH --hint=nomultithread
#SBATCH --time=00:20:00

module purge
module load ...
module load hpctoolkit/2024.01.1-python3.10

set -x

# Collecte des mesures
srun hpcrun ./my_mpi_exe

AprÚs exécution, un répertoire de mesures de type hpctoolkit-*-measurements est généré.

Construction de la base d'analyse​

Une fois la collecte terminée, construisez la base d'analyse :

$ hpcstruct ./my_mpi_exe
$ hpcprof -S ./my_mpi_exe.hpcstruct -o hpctoolkit-my_mpi_exe-database ./hpctoolkit-my_mpi_exe-measurements

Adaptez les noms en fonction des répertoires/fichiers effectivement générés pendant votre exécution.

Visualisation avec HPCViewer​

L'utilisation de hpcviewer nécessite une connexion SSH avec forwarding X11 (ssh -X).

Lancez l'interface graphique sur la base d'analyse :

$ module load hpcviewer/2024.02
$ hpcviewer hpctoolkit-my_mpi_exe-database

Vous pouvez ajuster la mémoire JVM si nécessaire :

$ hpcviewer -jh 3g hpctoolkit-my_mpi_exe-database
Attention

L'interface graphique peut ĂȘtre lente en forwarding X11 depuis une frontale. Vous pouvez utiliser un nƓud de visualisation ou transfĂ©rer la base d'analyse sur votre machine locale.

Documentation​