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.