HPCToolkit : profilage GPU
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 permet de profiler des applications GPU (CUDA) par échantillonnage, puis d'analyser les résultats avec hpcviewer.
Pour une analyse orientée timeline et kernels CUDA sur Jean Zay, voir aussi :
Versions installĂ©esâ
La commande module permet d'accéder aux versions de HPCToolkit (dont les variantes -cuda) et de 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 GPU, chargez une version -cuda, par exemple :
$ module load hpctoolkit/2024.01.1-cuda
$ module load hpcviewer/2024.02
ExĂ©cution et collecteâ
Exemple de script Slurm pour un code MPI + CUDA :
#!/bin/bash
#SBATCH --job-name=hpctoolkit_gpu
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
#SBATCH --ntasks=4
#SBATCH --ntasks-per-node=4
#SBATCH --gres=gpu:4
#SBATCH --cpus-per-task=10
#SBATCH --hint=nomultithread
#SBATCH --time=00:20:00
module purge
module load ...
module load hpctoolkit/2024.01.1-cuda
set -x
# Collecte des mesures
srun hpcrun ./my_gpu_exe
AprÚs exécution, un répertoire de mesures de type hpctoolkit-*-measurements est généré.
Le choix fin des événements/métriques dépend de la version de HPCToolkit et de votre application. Consultez hpcrun --help pour adapter la collecte.
Construction de la base d'analyseâ
Une fois la collecte terminée, construisez la base d'analyse :
$ hpcstruct ./my_gpu_exe
$ hpcprof -S ./my_gpu_exe.hpcstruct -o hpctoolkit-my_gpu_exe-database ./hpctoolkit-my_gpu_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_gpu_exe-database
Vous pouvez ajuster la mémoire JVM si nécessaire :
$ hpcviewer -jh 3g hpctoolkit-my_gpu_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.