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 :
hpcrunpour collecter les mesures pendant l'exécution ;hpcstructpour analyser la structure de l'exécutable ;hpcprofpour construire la base d'analyse finale ;hpcviewerpour 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 :
#!/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
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.