Aller au contenu principal

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 :

job_hpctoolkit_gpu.slurm
#!/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é.

Remarque

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
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​