NSight Systems est un outil puissant conçu pour visualiser et analyser les interactions CPU-GPU dans les applications, fournissant un aperçu des goulets d'étranglement de performances et des opportunités d'optimisation. Voici comment il visualise ces interactions:
Analyse des performances à l'échelle du système
Les systèmes NSight capturent les données d'activité à l'échelle du système, y compris les événements CPU et GPU, et les affiche sur une chronologie unifiée. Cette chronologie permet aux développeurs de voir comment les différents composants du système interagissent entre les autres au fil du temps, ce qui facilite l'identification des corrélations, des dépendances et des goulots d'étranglement dans le flux de travail de l'application [3] [4].
Visualisation de l'activité du processeur
Les systèmes NSight visualisent l'activité du processeur en montrant les états de threads, l'utilisation et l'exécution de l'algorithme. Cela aide les développeurs à comprendre comment les ressources CPU sont utilisées et où des goulots d'étranglement potentiels pourraient exister. L'outil prend en charge l'analyse des arbres multi-processus, permettant aux utilisateurs de suivre simultanément l'activité de plusieurs processus et threads [1] [3].
Visualisation de l'activité GPU
Pour l'activité GPU, NSight Systems fournit des informations détaillées sur les charges de travail GPU, notamment l'optimisation du streaming-multiprocesseur (SM), les transferts de mémoire et l'exécution du noyau. Il prend en charge le traçage de diverses API GPU telles que CUDA, Vulkan et OpenGL, permettant aux développeurs d'analyser en profondeur les tâches de calcul GPU et de graphiques [3] [4]. L'outil propose également un échantillonnage de mesures GPU, qui comprend des métriques telles que l'utilisation des SM, l'activité de base du tenseur et le débit de l'enseignement. Ces mesures aident les développeurs à optimiser les performances du GPU en identifiant la sous-utilisation ou les inefficacités dans l'utilisation des ressources GPU [1] [3].
Corrélation des événements CPU et GPU
L'une des principales caractéristiques des systèmes NSight est sa capacité à corréler les événements CPU et GPU. En visualisant les activités CPU et GPU sur la même chronologie, les développeurs peuvent voir comment les opérations du CPU influencent les performances du GPU et vice versa. Cette corrélation est cruciale pour identifier les goulots d'étranglement qui se produisent en raison des interactions entre le CPU et le GPU, tels que les retards de transfert de données ou les problèmes de synchronisation [3] [4].
Average et évolutivité faibles
NSight Systems est conçu pour fonctionner avec des frais généraux faibles, garantissant que le processus de profilage n'a pas d'impact significatif sur les performances de l'application. Cela le rend adapté à l'analyse des applications complexes à grande échelle fonctionnant sur diverses plates-formes NVIDIA, des postes de travail aux centres de données et aux environnements cloud [3] [6].
Interface utilisateur et navigation
L'outil fournit une interface graphique conviviale qui permet aux développeurs de naviguer dans la vue de la chronologie à l'aide de barres de défilement, de roue de souris et de raccourcis clavier. Cette interface permet aux utilisateurs de zoomer sur des gammes de temps ou des événements spécifiques, facilitant l'analyse détaillée des problèmes de performances [5] [9].
Dans l'ensemble, NSight Systems offre une vue complète des interactions CPU-GPU, permettant aux développeurs d'optimiser leurs applications pour de meilleures performances et efficacité sur un large éventail de plateformes.
Citations:
[1] https://extremecomputingtraining.anl.gov/wp-content/uploads/sites/96/2022/11/atpesc-2022-track-6-talk-2-keipert-nvidia.pdf
[2] https://bede-documentation.readthedocs.io/en/latest/software/tools/nsight-systems.html
[3] https://developer.nvidia.com/NSight-Systems
[4] https://indico.cern.ch/event/962112/Contributions/4047370/attachments/2159916/3643963/NSight%20Systems%20-%20X86%20Introduction%20-%20CERN.pdf
[5] https://www.youtube.com/watch?v=tgchxcfm-yo
[6] https://docs.nersc.gov/tools/performance/nvidiaproftools/
[7] https://www.youtube.com/watch?v=kkanp0kl_hk
[8] https://docs.nvidia.com/nsight-systems/userguide/index.html
[9] https://www.youtube.com/watch?v=dudgo66iaDU
[10] https://dev-discuss.pytorch.org/t/using-nsight-systems-to-profile-gpu-workload/59