NSight Systems je močno orodje, ki je zasnovano za vizualizacijo in analizo interakcij CPU-GPU v aplikacijah, ki zagotavlja vpogled v ozka grla in možnosti optimizacije. Tukaj je, kako vizualizira te interakcije:
Analiza uspešnosti na celotnem sistemu
NSight Systems zajema podatke o celotnem sistemu, vključno z dogodki CPU in GPU-ja, in jih prikazuje na enotni časovni premici. Ta časovna premica omogoča razvijalcem, da vidijo, kako različne komponente sistema med seboj medsebojno delujejo, kar olajša prepoznavanje korelacij, odvisnosti in ozkih grl v delovnem toku aplikacije [3] [4].
Vizualizacija aktivnosti CPU
NSIGHT Systems vizualizira aktivnost CPU -ja tako, da prikazuje stanja niti, uporabo in izvajanje algoritmov. To razvijalcem pomaga razumeti, kako se uporabljajo viri CPU -ja in kje lahko obstajajo potencialna ozka grla. Orodje podpira analizo dreves z več procesi, ki uporabnikom omogoča, da hkrati spremljajo aktivnost več procesov in niti [1] [3].
GPU aktivnosti vizualizacija
Za aktivnost GPU-ja NSight Systems ponuja podroben vpogled v delovne obremenitve GPU, vključno z optimizacijo pretakanja multiprocesorja (SM), prenosi pomnilnika in izvajanjem jedra. Podpira sledenje različnih GPU API -jev, kot so CUDA, Vulkan in OpenGL, ki razvijalcem omogoča, da poglobljeno analizirajo GPU in grafične naloge [3] [4]. Orodje ponuja tudi vzorčenje meritev GPU, ki vključuje meritve, kot so uporaba SM, tenzorsko jedro aktivnosti in pretok pouka. Te meritve pomagajo razvijalcem optimizirati uspešnost GPU -ja z opredelitvijo premalo izkoriščanja ali neučinkovitosti pri uporabi virov GPU [1] [3].
Povezava dogodkov CPU in GPU
Ena ključnih značilnosti NSight Systems je njegova sposobnost korelacije dogodkov CPU in GPU. Z vizualizacijo aktivnosti CPU in GPU na isti časovni premici lahko razvijalci vidijo, kako operacije CPU vplivajo na uspešnost GPU -ja in obratno. Ta korelacija je ključnega pomena za prepoznavanje ozkih grl, ki se pojavljajo zaradi interakcij med CPU in GPU, kot so zamude prenosa podatkov ali vprašanja sinhronizacije [3] [4].
Nizka nadzemna in razširljivost
NSight Systems je zasnovan tako, da deluje z nizkimi režijskimi stroški, kar zagotavlja, da postopek profiliranja ne vpliva bistveno na delovanje aplikacije. Zaradi tega je primerno za analizo zapletenih obsežnih aplikacij, ki delujejo na različnih platformah NVIDIA, od delovnih postaj do podatkovnih centrov in oblačnih okolij [3] [6].
Uporabniški vmesnik in navigacija
Orodje ponuja uporabniku prijazen GUI, ki razvijalcem omogoča, da se povišajo po pogledu s časovnim premico s pomočjo drsnih palic, miške kolesa in bližnjic na tipkovnici. Ta vmesnik uporabnikom omogoča, da povečajo določene časovne razpone ali dogodke, kar olajša podrobno analizo vprašanj o uspešnosti [5] [9].
Na splošno NSight Systems ponuja celovit pogled na interakcije CPU-GPU, ki razvijalcem omogočajo optimizacijo svojih aplikacij za boljše delovanje in učinkovitost na širokem razponu platform.
Navedbe:
[1] https://extremeComputTraining.anl.gov/wp-content/uploads/sites/96/2022/11/atpesc-2022-track-6-talk-2-keipert-nvidia.pdf
[2] https://bede-documentation.readthedocs.io/sl/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%20cern.pdf
[5] https://www.youtube.com/watch?v=tgchxcfm-y
[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