Nesight Systems è un potente strumento progettato per visualizzare e analizzare le interazioni della CPU-GPU nelle applicazioni, fornendo approfondimenti sui colli di bottiglia delle prestazioni e sulle opportunità di ottimizzazione. Ecco come visualizza queste interazioni:
Analisi delle prestazioni a livello di sistema
I sistemi Nesight acquisiscono dati sulle attività a livello di sistema, inclusi eventi di CPU e GPU, e li visualizza su una sequenza temporale unificata. Questa sequenza temporale consente agli sviluppatori di vedere come i diversi componenti del sistema interagiscono tra loro nel tempo, rendendo più facile identificare correlazioni, dipendenze e colli di bottiglia nel flusso di lavoro dell'applicazione [3] [4].
Visualizzazione dell'attività della CPU ###
I sistemi nsight visualizzano l'attività della CPU mostrando stati di thread, utilizzo e esecuzione dell'algoritmo. Questo aiuta gli sviluppatori a capire come vengono utilizzate le risorse della CPU e dove potrebbero esistere potenziali colli di bottiglia. Lo strumento supporta l'analisi dell'albero multi-processo, consentendo agli utenti di tenere traccia dell'attività di più processi e thread contemporaneamente [1] [3].
Visualizzazione dell'attività GPU ###
Per l'attività GPU, Nsight Systems fornisce approfondimenti dettagliati sui carichi di lavoro GPU, tra cui l'ottimizzazione dello streaming-Multiprocessor (SM), i trasferimenti di memoria e l'esecuzione del kernel. Supporta la traccia di varie API GPU come CUDA, Vulkan e OpenGL, consentendo agli sviluppatori di analizzare in profondità le attività di calcolo della GPU e grafica [3] [4]. Lo strumento offre anche il campionamento delle metriche GPU, che include metriche come l'utilizzo SM, l'attività di core del tensore e il throughput delle istruzioni. Queste metriche aiutano gli sviluppatori a ottimizzare le prestazioni della GPU identificando la sottoutilizzazione o le inefficienze nell'uso delle risorse GPU [1] [3].
eventi CPU e GPU correlati
Una delle caratteristiche chiave dei sistemi nsight è la sua capacità di correlare gli eventi CPU e GPU. Visualizzando le attività di entrambe le CPU e GPU sulla stessa sequenza temporale, gli sviluppatori possono vedere come le operazioni della CPU influenzano le prestazioni della GPU e viceversa. Questa correlazione è cruciale per l'identificazione dei colli di bottiglia che si verificano a causa di interazioni tra CPU e GPU, come ritardi di trasferimento dei dati o problemi di sincronizzazione [3] [4].
Overhead e scalabilità bassi
Nesight Systems è progettato per funzionare con un sovraccarico basso, garantendo che il processo di profilazione non abbia un impatto significativo sulle prestazioni dell'applicazione. Ciò lo rende adatto per l'analisi di applicazioni complesse su larga scala in esecuzione su varie piattaforme NVIDIA, dalle workstation ai data center e agli ambienti cloud [3] [6].
Interfaccia utente e navigazione
Lo strumento fornisce una GUI intuitiva che consente agli sviluppatori di navigare attraverso la vista della sequenza temporale utilizzando barre di scorrimento, ruota del mouse e scorciatoie da tastiera. Questa interfaccia consente agli utenti di ingrandire per intervalli di tempo o eventi specifici, facilitando l'analisi dettagliata dei problemi di prestazioni [5] [9].
Nel complesso, Nsight Systems offre una visione completa delle interazioni CPU-GPU, consentendo agli sviluppatori di ottimizzare le loro applicazioni per migliori prestazioni ed efficienza su una vasta gamma di piattaforme.
Citazioni:
[1] https://extremecomputingtraining.anl.gov/wp-content/uploads/sites/96/2022/11/atpesc-2022-track-6-lalk-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-%20cer.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-siscuss.pytorch.org/t/using-nsight-systems-to-profile-gpu-workload/59