Użycie procesora GPU

Uwaga

Diagnostyka grafiki programu Visual Studio nie jest obsługiwana w programie Visual Studio ARM64.

Użyj narzędzia Użycie procesora GPU w profilerze wydajności, aby lepiej zrozumieć ogólne użycie sprzętu aplikacji Direct3D. Pomaga to sprawdzić, czy wydajność aplikacji jest powiązana z procesorem CPU, czy powiązanym z procesorem GPU, i uzyskać wgląd w sposób, w jaki można efektywniej korzystać ze sprzętu platformy. Użycie procesora GPU obsługuje aplikacje korzystające z direct3D 12, Direct3D 11 i Direct3D 10. Nie obsługuje innych interfejsów API grafiki, takich jak Direct2D lub OpenGL.

Oto jak wygląda okno Raport użycia procesora GPU:

Screenshot of GPU Usage Report, with CPU and GPU timelines

Wymagania

Oprócz wymagań dotyczących diagnostyki grafiki wymagane są następujące elementy do korzystania z narzędzia Użycie procesora GPU:

  • Procesor GPU i sterownik obsługujący niezbędne instrumentacje chronometrażu.

    Uwaga

    Aby uzyskać więcej informacji na temat obsługiwanego sprzętu i sterowników, zobacz Sprzęt i obsługa sterowników na końcu tego dokumentu.

Aby uzyskać więcej informacji na temat wymagań dotyczących diagnostyki grafiki, zobacz Wprowadzenie.

Korzystanie z narzędzia Użycie procesora GPU

Po uruchomieniu aplikacji w narzędziu Użycie procesora GPU program Visual Studio tworzy sesję diagnostyczną. Ta sesja zawiera ogólne informacje o wydajności renderowania aplikacji i użyciu procesora GPU w czasie rzeczywistym.

Aby uruchomić narzędzie użycie procesora GPU:

  1. W menu głównym wybierz pozycję Debugowanie>wydajności i diagnostyki (lub na klawiaturze naciśnij klawisze Alt+F2).

  2. W centrum Wydajność i diagnostyka zaznacz pole wyboru obok pozycji Użycie procesora GPU. Opcjonalnie zaznacz pola obok innych zainteresowanych narzędzi. Jednocześnie można uruchomić kilka narzędzi do oceny wydajności i diagnostyki, aby uzyskać pełniejszy obraz wydajności aplikacji.

    Screenshot of the Performance Profiler, with GPU Usage selected

    Uwaga

    Nie wszystkie narzędzia do diagnostyki i wydajności mogą być używane w tym samym czasie.

  3. W dolnej części centrum Wydajność i diagnostyka wybierz pozycję Uruchom , aby uruchomić aplikację w obszarze wybranych narzędzi.

Ogólne informacje wyświetlane w czasie rzeczywistym obejmują chronometraż ramek, szybkość klatek i użycie procesora GPU. Każda z tych informacji jest grafowana niezależnie, ale wszystkie używają wspólnej skali czasowej, dzięki czemu można łatwo zrozumieć relacje.

Wykresy czasu ramki (ms) i ramki na sekundę (FPS) mają dwa czerwone, poziome linie, które pokazują cele wydajności 60 i 30 ramek na sekundę. Na wykresie czasu ramowego aplikacja przekracza docelową wydajność, gdy wykres znajduje się poniżej linii i pomija element docelowy, gdy wykres znajduje się nad linią. W przypadku wykresu Ramki na sekundę jest odwrotnie: aplikacja przekracza cel wydajności, gdy wykres znajduje się nad linią, i pomija element docelowy, gdy wykres znajduje się poniżej linii. Te grafy są używane głównie do uzyskania wysokiego poziomu pojęcia o wydajności aplikacji oraz identyfikowania spowolnień, które warto zbadać. Na przykład dalsze badanie może być uzasadnione, jeśli wystąpi nagły spadek szybkości klatek na klatce lub wzrost wykorzystania procesora GPU.

Podczas gdy aplikacja działa w narzędziu Użycie procesora GPU, sesja diagnostyki zbiera również szczegółowe informacje o zdarzeniach graficznych, które zostały uruchomione na procesorze GPU. Te informacje służą do generowania bardziej szczegółowego raportu o sposobie korzystania ze sprzętu przez aplikację. Ponieważ ten raport trwa trochę czasu na wygenerowanie zebranych informacji, jest dostępny tylko po zakończeniu sesji diagnostyki zbierania informacji.

Jeśli chcesz dokładniej przyjrzeć się problemowi z wydajnością lub wykorzystaniem, zatrzymaj zbieranie informacji o wydajności, aby można było wygenerować raport.

Aby wygenerować i wyświetlić raport użycia procesora GPU:

  1. W dolnej części okna sesji diagnostyki wybierz link Zatrzymaj kolekcję lub wybierz pozycję Zatrzymaj w lewym górnym rogu.

    Screenshot of a diagnostics session window in the GPU Usage tool, showing Frames per second, GPU utilization, the Stop button, and the Stop collection link.

  2. W górnej części raportu wybierz sekcję z jednego z wykresów, które pokazują problem, który chcesz zbadać. Wybór może trwać do 3 sekund. Dłuższe sekcje są obcinane na początku.

    Screenshot of a diagnostics session window in the GPU Usage tool with part of the diagnostic session timeline selected.

  3. Aby wyświetlić szczegółową oś czasu zaznaczenia, w dolnej części raportu w ... Kliknij tutaj, aby wyświetlić szczegóły użycia procesora GPU dla tego komunikatu zakresu , wybierz pozycję Wyświetl szczegóły.

    Screenshot of the diagnostics session window, with range selected

To zaznaczenie otwiera nowy dokument z kartami zawierający raport. Raport Użycie procesora GPU pomaga zobaczyć, kiedy na procesorze CPU jest uruchomione zdarzenie grafiki, kiedy osiąga procesor GPU i jak długo trwa jego uruchomienie. Te informacje mogą pomóc w zidentyfikowaniu wąskich gardeł i możliwości zwiększenia równoległości w kodzie.

Eksportowanie do widoku GPUView lub systemu Windows Analizator wydajności

Począwszy od programu Visual Studio 2017, możesz otworzyć te dane za pomocą elementów GPUView i Windows Analizator wydajności. Wystarczy wybrać link Otwórz w widoku GpuView lub Otwórz w usłudze WPA znajdujący się w prawym dolnym rogu sesji diagnostycznej.

Screenshot of the diagnostics session window, with links highlighted

Korzystanie z raportu Użycia procesora GPU

Górna część raportu Użycie procesora GPU przedstawia osie czasu działania przetwarzania procesora CPU, działania renderowania procesora GPU i działania kopiowania procesora GPU. Te osie czasu są podzielone przez jasnoszary, pionowe słupki wskazujące synchronizację pionową wyświetlacza (vsync). Częstotliwość pasków jest zgodna z częstotliwością odświeżania jednego z ekranów (wybraną przy użyciu listy rozwijanej Wyświetlanie ), z której zostały zebrane dane użycia procesora GPU.

Ponieważ ekran może mieć wyższą częstotliwość odświeżania niż docelowy cel wydajności aplikacji, może nie istnieć relacja od 1 do 1 między vsync i szybkością ramki, którą aplikacja ma osiągnąć. Aby spełnić cel wydajności, aplikacja musi ukończyć wszystkie przetwarzanie, wykonać renderowanie i wywołać docelową Present() szybkość klatek. Renderowana ramka nie będzie wyświetlana dopiero po następnym asynchronizacji po Present(), choć.

W dolnej części raportu Użycie procesora GPU są wyświetlane zdarzenia graficzne, które wystąpiły w okresie raportu. Po wybraniu zdarzenia znacznik pojawia się w odpowiednich zdarzeniach na odpowiednich osiach czasu. Zazwyczaj jedno zdarzenie w wątku procesora CPU pokazuje wywołanie interfejsu API, podczas gdy inne zdarzenie na jednej z osi czasu procesora GPU pokazuje, kiedy procesor GPU zakończył zadanie. Podobnie po wybraniu zdarzenia na osi czasu raport wyróżnia odpowiednie zdarzenie graficzne w dolnej części raportu.

Po pomniejszeniu osi czasu w górnej części raportu widoczne są tylko najbardziej czasochłonne zdarzenia. Aby wyświetlić zdarzenia o krótszym czasie, powiększ osie czasu za pomocą klawiszy Ctrl+wheel na urządzeniu wskazującym lub kontrolki skalowania w lewym dolnym rogu górnego panelu. Możesz również przeciągnąć zawartość panelu osi czasu, aby przejść przez zarejestrowane zdarzenia.

Aby ułatwić znalezienie szukanych elementów, przefiltruj raport Użycie procesora GPU na podstawie nazw procesów, identyfikatorów wątków i nazwy zdarzenia. Ponadto można wybrać częstotliwość odświeżania ekranu, która określa linie vysnc. Zdarzenia można sortować hierarchicznie, jeśli aplikacja używa interfejsu ID3DUserDefinedAnnotation do grupowania poleceń renderowania.

Poniżej przedstawiono więcej szczegółów:

Formant filtru opis
Proces Nazwa interesującego Cię procesu. Wszystkie procesy, które używały procesora GPU podczas sesji diagnostyki, znajdują się na tej liście rozwijanej. Kolor skojarzony z procesem jest kolorem działania wątku na osi czasu.
Wątku Identyfikator wątku, który cię interesuje. W aplikacji wielowątkowa te informacje mogą pomóc w izolowaniu określonych wątków należących do interesującego Cię procesu. Zdarzenia skojarzone z wybranym wątkiem są wyróżnione na każdej osi czasu.
Wyświetlanie Liczba wyświetlanych ekranów, których częstotliwość odświeżania jest wyświetlana. Niektóre sterowniki można skonfigurować tak, aby prezentowały wiele ekranów fizycznych jako jeden, duży wyświetlacz wirtualny. Może zostać wyświetlony tylko jeden ekran, nawet jeśli maszyna ma wiele ekranów dołączonych.
Filtr Słowa kluczowe, które Cię interesują. Zdarzenia w dolnej części raportu będą zawierać tylko te, które pasują do słowa kluczowego, całkowicie lub częściowo. Możesz określić wiele słów kluczowych, oddzielając je średnikami (;).
Sortowanie hierarchii Pole wyboru wskazujące, czy hierarchie zdarzeń zdefiniowane za pomocą znaczników użytkownika są zachowywane lub ignorowane.

Lista zdarzeń w dolnej części raportu Użycie procesora GPU zawiera szczegóły każdego zdarzenia.

Kolumna opis
Nazwa zdarzenia Nazwa zdarzenia graficznego. Zdarzenie zwykle odpowiada zdarzeniu na osi czasu wątku procesora CPU i zdarzeniu osi czasu procesora GPU. Nazwy zdarzeń mogą nie być przypisywane , jeśli użycie procesora GPU nie może określić nazwy zdarzenia. Aby uzyskać więcej informacji, zobacz tę tabelę.
Uruchamianie procesora CPU (ns) Czas zainicjowania zdarzenia na procesorze CPU przez wywołanie interfejsu API Direct3D. Czas jest mierzony w nanosekundach względem momentu uruchomienia aplikacji.
Uruchamianie procesora GPU (ns) Czas zainicjowania zdarzenia na procesorze GPU. Czas jest mierzony w nanosekundach względem momentu uruchomienia aplikacji.
Czas trwania procesora GPU (ns) Czas, w nanosekundach, że zdarzenie trwało do ukończenia na procesorze GPU.
Nazwa procesu Nazwa aplikacji, z której pochodzi zdarzenie.
Identyfikator wątku Identyfikator wątku, z którego pochodzi zdarzenie.

Ważne

Jeśli procesor GPU lub sterownik nie obsługują niezbędnych funkcji instrumentacji, wszystkie zdarzenia będą wyświetlane jako nieprzydatne. Jeśli wystąpi ten problem, zaktualizuj sterownik procesora GPU i spróbuj ponownie. Aby uzyskać więcej informacji, zobacz Sprzęt i obsługa sterowników na końcu tego dokumentu.

Ustawienia użycia procesora GPU

Narzędzie Użycie procesora GPU umożliwia odroczenie zbierania informacji o profilowaniu, a nie rozpoczynanie zbierania informacji natychmiast po uruchomieniu aplikacji. Ponieważ rozmiar informacji o profilowaniu może być znaczący, ta akcja jest przydatna, gdy wiesz, że spowolnienie wydajności aplikacji nie będzie wyświetlane dopiero później.

Aby odroczyć profilowanie od początku aplikacji:

  1. W menu głównym wybierz pozycję Debugowanie>wydajności i diagnostyki (lub na klawiaturze naciśnij klawisze Alt+F2).

  2. W centrum Wydajność i diagnostyka obok pozycji Użycie procesora GPU wybierz link ustawienia.

  3. W obszarze Konfiguracja profilowania procesora GPU na stronie Właściwości Ogólne wyczyść pole wyboru Rozpocznij profilowanie przy uruchamianiu aplikacji, aby odroczyć profilowanie.

    Screenshot of Object Property Pages, showing collection options

Ważne

Obecnie nie można odroczyć profilowania dla aplikacji Direct3D 12.

Po uruchomieniu aplikacji w narzędziu Użycie procesora GPU w dolnej części okna narzędzia Użycie procesora GPU zostanie udostępniony dodatkowy link. Aby rozpocząć zbieranie informacji o profilowaniu, wybierz link Rozpocznij w komunikacie Rozpocznij zbieranie dodatkowych szczegółowych danych użycia procesora GPU.

Obsługa sprzętu i sterowników

Obsługiwane są następujące sterowniki i sprzęt procesora GPU:

Vendor Opis procesora GPU Wymagana wersja sterownika
Intel® Procesory Intel® Core drugiej generacji ('Haswell')

- Intel® HD Graphics (GT1)
- Intel® HD Graphics 4200 (GT2)
- Intel® HD Graphics 4400 (GT2)
- Intel® HD Graphics 4600 (GT2)
- Intel® HD Graphics P4600 (GT2)
- Intel® HD Graphics P4700 (GT2)
- Intel® HD Graphics 5000 (GT3)
- Intel® Iris™ Graphics 5100 (GT3)
- Intel® Iris™ Pro Graphics 5200 (GT3e)
(użyj najnowszych sterowników)
AMD® Najwięcej od serii AMD Huntington™ HD 7000 (z wyłączeniem AMD Hdd™ HD 7350-7670)

Procesory GPU AMD Amd Amd™ FirePro™ i akceleratory procesorów GPU AMD FirePro z architekturą Graphics Core Next (GCN)

Procesory AMD® E-Series i AMD A z przyspieszonym przetwarzaniem (APU) z architekturą Gpu Core Next (GCN) ("Kaveri", "Kabini", "Temash", "Beema", "Mullins")
14.7 RC3 lub nowszy
NVIDIA® Najbardziej od serii NVIDIA® GeForce® 400

Procesory® GPU NVIDIA GeForce®, procesory GPU NVIDIA Quadro® i akceleratory procesorów GPU NVIDIA® Tesla™ z architekturą Fermi™, Kepler™ lub Maxwell™
343.37 lub nowszy

Konfiguracje z wieloma procesorami GPU, takie jak NVIDIA® SLI™ i AMD Crossfire™, nie są obecnie obsługiwane. Obsługiwane są konfiguracje grafiki hybrydowej, takie jak NVIDIA® Optimus™ i AMD Enduro™.