Aller au contenu principal

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.

important
  • Pour que la commande ncu soit 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 :

job_ncu_mpi.slurm
#!/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'
Attention

É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
Attention

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.