diff --git a/README.md b/README.md index e90baa0fce8d5f69c618ce26776d7797aff70c4d..7ef2d6d07158294d3af62eca84f6e7cf0bd59819 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,88 @@ -(à completer) +:construction: (à compléter) ## Profiling -(à completer) +Afin d'évaluer les performances d'un logiciel, le "profiling" est la méthode +plus avancée, car elle fournit un profil d'utilisation des ressources +logicielles et matérielles (SW/HW). + +Dans le cadre des logiciels écrit en CUDA, deux outils sont disponibles: + * [Nsight System](https://docs.nvidia.com/nsight-systems/UserGuide/index.html): + profiler classique pour l'analyse globale (système) de l'application, + * [Nsight Compute](https://docs.nvidia.com/nsight-compute/NsightComputeCli/index.html): + profiler avancé axé sur l'optimisation de l'application. + +Ces deux logiciel sont donc complémentaires et peuvent être lancés soit en +ligne de commande (CLI), soit en mode graphique (GUI). On les utilise +normalement en mode interactif, en se connectant en SSH sur un nœud de calcul +avec une GPU rattachée, p. ex.: + +``` shell +lcl$ ssh votre-système-hpc +hpc$ salloc --partition=shared-gpu --gpus=1 --mem=8G -t 0:15:00 +gpu$ nsys ... # lancement de la CLI: +gpu$ nsys-cu ... # +``` + +:bulb: On peut lancer le profiling directement dans la GUI, mais il peut y +avoir de problèmes de stabilité (crash)! + + +### Nsight System + +Aide en ligne: +``` shell +gpu$ ncu --help +gpu$ ncu profile --help +``` + +Profiling de l'application: +``` shell +gpu$ ncu profile YOUR_CUDA_APP [OPTIONS] +``` + +Exemple: +``` shell +gpu$ ncu profile vec_add_grid +... +Generating '/tmp/ncu-report-43ac.qdstrm' +[1/1] [========================100%] report1.ncu-rep +Generated: + /home/users/.../report1.ncu-rep +``` + +On obtient ainsi le rapport `report1.ncu-rep` que l'on peut ensuite analyser +dans la GUI: +``` shell +gpu$ ncu-ui report1.ncu-rep +``` + +### Nsight Compute + +Aide en ligne: +``` shell +gpu$ ncu --help +``` + +Profiling de l'application, avec l'option `-o` pour garder le rapport dans un fichier: +``` shell +gpu$ ncu -o report1.ncu-rep YOUR_CUDA_APP [OPTIONS] +``` + +Exemple: +``` shell +gpu$ ncu -o report1.ncu-rep vec_add_grid +... +==PROF== Disconnected from process 2485633 +==PROF== Report: .../report1.ncu-rep +``` + +On obtient ainsi le rapport `report1.ncu-rep` que l'on peut ensuite analyser +dans la GUI: +``` shell +gpu$ ncu-ui report1.ncu-rep +``` + +<!-- Local Variables: --> +<!-- jinx-languages: "fr_FR" --> +<!-- End: -->