NSight Systems to potężne narzędzie zaprojektowane do wizualizacji i analizy interakcji CPU-GPU w aplikacjach, zapewniając wgląd w wąskie gardła i możliwości optymalizacji. Oto jak wizualizuje te interakcje:
analiza wydajności w całym systemie
NSight Systems przechwytuje dane dotyczące aktywności w całym systemie, w tym zarówno zdarzenia procesora, jak i GPU, i wyświetla je na ujednoliconej osi czasu. Ta harmonogram pozwala programistom zobaczyć, w jaki sposób różne komponenty systemu oddziałują ze sobą w czasie, ułatwiając identyfikację korelacji, zależności i wąskich gardeł w przepływie pracy aplikacji [3] [4].
Wizualizacja aktywności CPU
Systemy NSight wizualizują aktywność procesora, pokazując stany wątków, wykorzystanie i wykonywanie algorytmu. Pomaga to programistom zrozumieć, w jaki sposób są wykorzystywane zasoby procesora i gdzie mogą istnieć potencjalne wąskie gardła. Narzędzie obsługuje analizę drzew wieloprocesowych, umożliwiając użytkownikom śledzenie aktywności wielu procesów i wątków jednocześnie [1] [3].
GPU Wizualizacja aktywności
W przypadku aktywności GPU Systemy NSight zapewnia szczegółowy wgląd w obciążenia GPU, w tym optymalizację multiprocesora strumieniowego (SM), transfery pamięci i wykonywanie jądra. Obsługuje śledzenie różnych interfejsów API GPU, takich jak CUDA, Vulkan i OpenGL, umożliwiając programistom dogłębnie analizę zadań obliczeniowych i graficznych GPU [3] [4]. Narzędzie oferuje również próbkowanie wskaźników GPU, które obejmują wskaźniki takie jak wykorzystanie SM, aktywność rdzenia tensora i przepustowość instrukcji. Te wskaźniki pomagają programistom zoptymalizować wydajność GPU poprzez identyfikację niewykorzystania lub nieefektywności w użyciu zasobów GPU [1] [3].
Korelowanie zdarzeń CPU i GPU
Jedną z kluczowych cech systemów NSight jest jego zdolność do skorelowania zdarzeń CPU i GPU. Wizualizując zarówno działania procesora, jak i GPU na tej samej osi czasu, programiści mogą zobaczyć, w jaki sposób operacje procesora wpływają na wydajność GPU i odwrotnie. Ta korelacja ma kluczowe znaczenie dla identyfikacji wąskich gardeł, które występują z powodu interakcji między CPU i GPU, takich jak opóźnienia przesyłania danych lub problemy z synchronizacją [3] [4].
niskie koszty ogólne i skalowalność
NSight Systems jest zaprojektowany do działania z niskim kosztem ogólnym, zapewniając, że proces profilowania nie wpływa znacząco na wydajność aplikacji. To sprawia, że nadaje się do analizy złożonych aplikacji na dużą skalę działających na różnych platformach NVIDIA, od stacji roboczych po centra danych i środowiska chmur [3] [6].
Interfejs użytkownika i nawigacja
Narzędzie zapewnia przyjazne dla użytkownika GUI, które pozwala programistom nawigować po widoku osi czasu za pomocą skrótów przewijania, koła myszy i skrótów klawiatury. Ten interfejs umożliwia użytkownikom powiększenie określonych zakresów czasowych lub zdarzeń, ułatwiając szczegółową analizę problemów z wydajnością [5] [9].
Ogólnie rzecz biorąc, NSight Systems oferuje kompleksowy widok interakcji CPU-GPU, umożliwiając programistom optymalizację ich aplikacji w celu lepszej wydajności i wydajności na wielu platformach.
Cytaty:
[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%20Introdukction%20-%20Cern.pdf
[5] https://www.youtube.com/watch?v=tgchxcfm-yo
[6] https://docs.nersc.gov/tools/performance/nvidiaProftols/
[7] https://www.youtube.com/watch?v=Kkanp0kl_hk
[8] https://docs.nvidia.com/nsight-systems/usergoide/index.html
[9] https://www.youtube.com/watch?v=dudgo66iadu
[10] https://dev-discuss.pytorch.org/t/using-nsight-system-to-profile-gpu-workload/59