Nsight Compute
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â
Nsight Compute est un outil NVIDIA dédié au profilage fin des noyaux CUDA.
Contrairement à Nsight Systems (vision chronologique globale), Nsight Compute se concentre sur le niveau noyau et permet d'identifier précisément les goulots d'étranglement GPU.
Il fournit notamment des métriques détaillées sur :
- l'occupation des SM et l'efficacité des warps ;
- l'utilisation mémoire (global memory, cache L2, shared memory) ;
- les stalls et les limitations de débit (compute-bound vs memory-bound).
Il peut s'utiliser en ligne de commande (ncu) pour collecter les mesures, puis en interface graphique (ncu-ui) pour explorer les rapports, comparer des exécutions et guider les optimisations de kernels.
Versions installĂ©esâ
La commande module permet d'accéder aux diverses versions de Nsight Compute.
Pour afficher les diverses versions disponibles :
$ module avail nvidia-nsight-compute
nvidia-nsight-compute/2020.3.1 nvidia-nsight-compute/2022.1.0 nvidia-nsight-compute/2023.3.1.0
nvidia-nsight-compute/2021.3.0 nvidia-nsight-compute/2022.4.0 nvidia-nsight-compute/2024.3.2.0
Utilisationâ
Pour utiliser, par exemple, la version 2024.3.2.0 de Nsight Compute, vous devez charger le module correspondant :
$ module load nvidia-nsight-compute/2024.3.2.0
Une fois le module chargé, l'utilisation se fait en deux étapes :
- Exécution de votre application avec
ncu(collecte des données) ; - Visualisation/analyse des rapports avec
ncu-ui.
ExĂ©cution en ligne de commande (CLI)â
La collecte se fait avec ncu dans vos scripts Slurm.
- Pour que la commande
ncusoit reconnue, il faut avoir chargé le module adéquat auparavant. - Le profilage Nsight Compute peut fortement ralentir l'exécution. Il est recommandé de profiler des cas réduits et ciblés.
- Pour voir toutes les options, utilisez
ncu --help.
Voici un exemple de script de soumission pour un code MPI multi-GPU (4 processus, 4 GPU), avec un fichier de rapport par rang MPI :
#!/bin/bash
#SBATCH --job-name=nsight_compute
#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 --exclusive -C prof
#SBATCH --hint=nomultithread
#SBATCH --time=00:20:00
module load ...
module load nvidia-nsight-compute/2024.3.2.0
set -x
# Exemple: un rapport .ncu-rep par processus MPI
srun bash -c 'ncu -f -o ncu_report_rank${SLURM_PROCID} ./my_bin_exe'
Ăvitez de profiler toutes les itĂ©rations d'un gros cas de production. Ciblez plutĂŽt une portion reprĂ©sentative (jeu de donnĂ©es rĂ©duit, phase critique, noyaux ciblĂ©s).
Visualisation/analyse des rĂ©sultats (GUI)â
Les rapports générés par ncu sont des fichiers .ncu-rep.
L'utilisation de ncu-ui sur Jean Zay nécessite une connexion SSH avec forwarding X11 (par exemple ssh -X).
Vous pouvez les ouvrir avec :
ncu-ui ncu_report_rank0.ncu-rep
L'interface graphique peut ĂȘtre lente avec un forwarding X11 depuis une frontale. Vous pouvez utiliser un nĆud de visualisation ou transfĂ©rer les rapports sur votre machine locale.
Documentationâ
La documentation complĂšte est disponible sur le site de NVIDIA.