Jak określić liczbę rdzeni GPU wykorzystywanych w procesie?

4

Jak wiemy, jeśli w CPU są 4 rdzenie, maksymalne wykorzystanie wyniesie 400%, a jeśli całkowite wykorzystanie wynosi 200%, zostanie to przeanalizowane, ponieważ 2 rdzenie zostały wykorzystane wśród 4 rdzeni.

Zatem w przypadku układów GPU maksymalne wykorzystanie wynosi 100%, a jeśli całkowite wykorzystanie wynosi 80%, to jak przeanalizować, ile rdzeni zostało wykorzystanych?

W przypadku grafiki NVIDIA, nvidia-smi może być wykorzystana do sprawdzenia wykorzystania GPU nvidia.

W przypadku grafiki Intel można użyć intel_gpu_time / intel-gpu-top, aby zobaczyć wykorzystanie iGPU.

Ale oba nie pokazują liczby używanych rdzeni GPU. Czy istnieje jakiś sposób, aby to zrobić?

Używam Linuksa. Zarówno Ubuntu 14.04, jak i Centos 7.2

Vanns
źródło
gpu-utlization jest mylącym terminem. dla nvidia-smi, daje procent całkowitego czasu twoi jeden lub więcej wieloczynnościowe są używane. Nie oznacza to procentowej liczby rdzeni w użyciu.
debonair

Odpowiedzi:

3

W przypadku układów GPU 100% wykorzystania oznacza, że ​​wszystkie rdzenie wykonują instrukcje. Działa z najwyższą wydajnością, gdy wszystkie te instrukcje są operacjami łączenia, dodawania i mnożenia: a = a + b * cco większość obecnych GPU może wykonać przy użyciu tylko jednej instrukcji.

Pisząc program, który wykonuje obliczenia na GPU (za pomocą CUDA lub OpenCL), rozprowadzasz pracę w tak zwanych siatkach bloków wątków (terminologia CUDA). GPU musi zaplanować wszystkie te wątki (w „warps” 32 wątków), aby wszystkie rdzenie GPU były zajęte. Nie wiem, jak dobrze znasz ten temat, ale to wprowadzenie może być interesującą lekturą.

Przykład wyjaśnia, w jaki sposób odnosi się to do wykorzystania. Załóżmy, że procesor graficzny jest bezczynny, a następnie uruchamiasz aplikację, która uruchamia jądro tylko dla jednego bloku wątków, ale z wystarczającymi obliczeniami w tym bloku. GPU planuje włączenie bloku wątków w wieloprocesorach przesyłania strumieniowego (SMs = grupa 128 rdzeni) na GPU. Na przykład w przypadku Nvidii GTX 1080, która ma 20 SM, spowodowałoby to wykorzystanie tylko (1/20 * 100%) = 5%.

Biorąc pod uwagę tę podstawową wiedzę na temat obliczeń na GPU, możesz uruchomić go za pomocą Nvidia Visual Profiler (dla aplikacji CUDA) lub przez CodeXL dla (aplikacji OpenCL), aby zobaczyć te konfiguracje wątków dla dowolnego jądra, którego aplikacja używa do uzasadnienia wykorzystania GPU . Ale to nie wszystko, to narzędzie jest nieocenione, aby zobaczyć dokładnie, jakie operacje (i jak wydajne) wykonuje GPU.

Bram
źródło
zaktualizowane wprowadzenie do CUDA devblogs.nvidia.com/parallelforall/...
Scott Stensland