Condividi tramite


Utilizzo della GPU

Annotazioni

Diagnostica grafica di Visual Studio non è supportata in ARM64 Visual Studio.

Usare lo strumento Utilizzo GPU in Performance Profiler per comprendere meglio l'utilizzo elevato dell'hardware dell'app Direct3D. Consente di verificare se le prestazioni dell'app sono associate alla CPU o associate alla GPU e ottenere informazioni dettagliate su come usare l'hardware della piattaforma in modo più efficace. Utilizzo GPU supporta app che usano Direct3D 12, Direct3D 11 e Direct3D 10. Non supporta altre API grafiche, ad esempio Direct2D o OpenGL.

Di seguito è riportato l'aspetto della finestra Report utilizzo GPU :

Screenshot del report sull'utilizzo della GPU con sequenze temporali cpu e GPU

Requisiti

Oltre ai requisiti per Diagnostica grafica, per l'uso dello strumento Utilizzo GPU è necessario quanto segue:

  • Una GPU e un driver che supportano la strumentazione temporale necessaria.

    Annotazioni

    Per altre informazioni sull'hardware e sui driver supportati, vedere Supporto hardware e driver alla fine di questo documento.

Per altre informazioni sui requisiti di diagnostica della grafica, vedere Introduzione.

Utilizzare lo strumento di Utilizzo GPU

Quando si esegue l'app nello strumento Utilizzo GPU, Visual Studio crea una sessione di diagnostica. Questa sessione mostra informazioni generali sulle prestazioni di rendering dell'app e sull'utilizzo della GPU in tempo reale.

Per avviare lo strumento Utilizzo GPU:

  1. Nel menu principale scegliere Debug>prestazioni e diagnostica (oppure, sulla tastiera, premere ALT+F2).

  2. Nell'hub Prestazioni e diagnostica selezionare la casella accanto a Utilizzo GPU. Facoltativamente, selezionare le caselle accanto ad altri strumenti a cui si è interessati. È possibile eseguire diversi strumenti di diagnostica e prestazioni contemporaneamente per ottenere un quadro più completo delle prestazioni dell'app.

    Screenshot del Profiler delle Prestazioni con Utilizzo GPU selezionato

    Annotazioni

    Non tutti gli strumenti di diagnostica e prestazioni possono essere usati contemporaneamente.

  3. Nella parte inferiore dell'hub Prestazioni e diagnostica selezionare Avvia per eseguire l'app negli strumenti selezionati.

Le informazioni generali visualizzate in tempo reale includono intervallo dei fotogrammi, frequenza dei fotogrammi e utilizzo della GPU. Ognuna di queste informazioni viene grata in modo indipendente, ma tutte usano una scala cronologica comune in modo che sia possibile comprendere facilmente le relazioni.

I grafici Frame time (ms) e Frames al secondo (FPS) hanno ognuna due linee orizzontali rosse che mostrano obiettivi di prestazioni di 60 e 30 fotogrammi al secondo. Nel grafico del Frame time, l'app supera l'obiettivo delle prestazioni quando il grafico è sotto la linea e non raggiunge l'obiettivo quando il grafico è sopra la linea. Per il grafico dei Fotogrammi al secondo, è l'opposto: l'app supera l'obiettivo delle prestazioni quando il grafico è sopra la linea e non raggiunge l'obiettivo quando il grafico è sotto la linea. Questi grafici vengono usati principalmente per ottenere un'idea generale delle prestazioni dell'app e per identificare i rallentamenti da analizzare. Ad esempio, è possibile che vengano giustificate ulteriori indagini se si nota un calo improvviso della frequenza dei fotogrammi o un picco nell'utilizzo della GPU.

Mentre l'app viene eseguita con lo strumento Utilizzo GPU, la sessione di diagnostica raccoglie anche informazioni dettagliate sugli eventi grafici eseguiti nella GPU. Queste informazioni vengono usate per generare un report più granulare sul modo in cui l'app usa l'hardware. Poiché questo report richiede tempo per generare dalle informazioni raccolte, è disponibile solo dopo che la sessione di diagnostica ha completato la raccolta di informazioni.

Quando si vuole esaminare più attentamente un problema di prestazioni o utilizzo, interrompere la raccolta di informazioni sulle prestazioni, in modo da poter generare il report.

Per generare e visualizzare il report Utilizzo GPU:

  1. Nella parte inferiore della finestra della sessione di diagnostica scegliere il collegamento Arresta raccolta oppure selezionare Arresta nell'angolo superiore sinistro.

    Screenshot di una finestra della sessione di diagnostica nello strumento Utilizzo GPU, che mostra Frame al secondo, utilizzo GPU, il pulsante Arresta e il collegamento Arresta raccolta.

  2. Nella parte superiore del report selezionare una sezione da uno dei grafici che mostra il problema da analizzare. La selezione può durare fino a 3 secondi. Le sezioni più lunghe vengono troncate verso l'inizio.

    Screenshot di una finestra della sessione di diagnostica nello strumento Utilizzo GPU con parte della sequenza temporale della sessione di diagnostica selezionata.

  3. Per visualizzare una sequenza temporale dettagliata della selezione, nella parte inferiore del report, nel messaggio ...fare clic qui per visualizzare i dettagli dell'utilizzo della GPU per quell'intervallo, selezionare Visualizza dettagli.

    Screenshot della finestra della sessione di diagnostica con intervallo selezionato

Questa selezione apre un nuovo documento a schede contenente il report. Il report Utilizzo GPU consente di visualizzare quando viene avviato un evento grafico nella CPU, quando raggiunge la GPU e il tempo necessario per l'esecuzione della GPU. Queste informazioni consentono di identificare colli di bottiglia e opportunità per aumentare il parallelismo nel codice.

Esportazione in GPUView o Windows Performance Analyzer

A partire da Visual Studio 2017, è possibile aprire questi dati con GPUView e Windows Performance Analyzer. È sufficiente selezionare i collegamenti Apri in GpuView o Apri in WPA nell'angolo in basso a destra della sessione di diagnostica.

Screenshot della finestra della sessione di diagnostica con collegamenti evidenziati

Usare il rapporto sull'utilizzo della GPU

La parte superiore del report Utilizzo GPU mostra le sequenze temporali per l'attività di elaborazione della CPU, l'attività di rendering gpu e l'attività di copia GPU. Queste sequenze temporali sono divise da barre verticali di colore grigio chiaro che indicano la sincronizzazione verticale dello schermo (vsync). La frequenza delle barre corrisponde alla frequenza di aggiornamento di uno dei display (selezionati usando l'elenco a discesa Visualizza ) da cui sono stati raccolti i dati di utilizzo della GPU.

Poiché la visualizzazione potrebbe avere una frequenza di aggiornamento superiore rispetto alla destinazione delle prestazioni dell'app, potrebbe non esserci una relazione da 1 a 1 tra vsync e la frequenza dei fotogrammi che vuoi ottenere dall'app. Per soddisfare l'obiettivo delle prestazioni, un'app deve completare tutta l'elaborazione, eseguire il rendering e effettuare una Present() chiamata alla frequenza dei fotogrammi prevista. Il frame di cui è stato eseguito il rendering non verrà visualizzato fino al successivo vsync dopo Present(), tuttavia.

Nella parte inferiore del report Utilizzo GPU sono elencati gli eventi grafici che si sono verificati durante il periodo di tempo del report. Quando si seleziona un evento, un marcatore viene visualizzato in corrispondenza degli eventi corrispondenti nelle sequenze temporali pertinenti. In genere, un evento in un thread della CPU mostra la chiamata API, mentre un altro evento in una delle sequenze temporali gpu viene visualizzato quando la GPU ha completato l'attività. Analogamente, quando si seleziona un evento in una sequenza temporale, il report evidenzia l'evento grafico corrispondente nella parte inferiore del report.

Quando si esegue lo zoom indietro delle sequenze temporali nella parte superiore del report, sono visibili solo gli eventi che richiedono più tempo. Per visualizzare gli eventi con una durata più breve, ingrandire le sequenze temporali usando CTRL+rotellina sul dispositivo di puntamento o il controllo di ridimensionamento nell'angolo inferiore sinistro del pannello superiore. È anche possibile trascinare il contenuto del pannello della sequenza temporale per spostarsi tra gli eventi registrati.

Per trovare le informazioni desiderate, filtrare il report Utilizzo GPU in base ai nomi dei processi, agli ID thread e al nome dell'evento. Inoltre, è possibile scegliere quale frequenza di aggiornamento del display determini le linee di vsync. Puoi ordinare gli eventi in modo gerarchico se l'app usa l'interfaccia ID3DUserDefinedAnnotation per raggruppare i comandi di rendering.

Ecco altri dettagli:

Controllo del Filtro Descrizione
Processo Nome del processo a cui si è interessati. Tutti i processi che hanno usato la GPU durante la sessione di diagnostica sono inclusi in questo elenco a discesa. Il colore associato al processo è il colore dell'attività del thread nelle sequenze temporali.
Discussione ID thread a cui si è interessati. In un'app multithread queste informazioni consentono di isolare determinati thread che appartengono al processo a cui si è interessati. Gli eventi associati al thread selezionato vengono evidenziati in ogni sequenza temporale.
Schermo Il numero dello schermo di cui viene mostrata la frequenza di aggiornamento. Alcuni driver possono essere configurati per presentare più schermi fisici come un singolo display virtuale di grandi dimensioni. È possibile che venga visualizzato un solo display elencato, anche se il computer dispone di più schermi collegati.
filtro Parole chiave a cui si è interessati. Gli eventi nella parte inferiore del report includono solo quelli che corrispondono a una parola chiave, interamente o parzialmente. È possibile specificare più parole chiave separandole con un punto e virgola (;).
Ordinamento gerarchico Casella di controllo che indica se le gerarchie degli eventi, definite tramite marcatori utente, vengono mantenute o ignorate.

L'elenco degli eventi nella parte inferiore del report Utilizzo GPU mostra i dettagli di ogni evento.

colonna Descrizione
Nome dell’evento Nome dell'evento grafico. Un evento corrisponde in genere a un evento in una sequenza temporale del thread CPU e a un evento della sequenza temporale della GPU. I nomi degli eventi potrebbero non essere associati se l'utilizzo della GPU non è in grado di determinare il nome di un evento. Per altre informazioni, vedere la nota che segue questa tabella.
Avvio CPU (ns) Ora in cui l'evento è stato avviato sulla CPU chiamando un'API Direct3D. Il tempo viene misurato in nanosecondi, rispetto all'avvio dell'app.
Avvio GPU (ns) Ora in cui l'evento è stato avviato nella GPU. Il tempo viene misurato in nanosecondi, rispetto all'avvio dell'app.
Durata GPU (ns) Tempo, in nanosecondi, impiegato per il completamento dell'evento sulla GPU.
nome del processo Nome dell'app da cui proviene l'evento.
Thread ID ID del thread da cui è venuto l'evento.

Importante

Se la GPU o il driver non supporta le funzionalità di strumentazione necessarie, tutti gli eventi verranno visualizzati come non attribuiti. Se si verifica questo problema, aggiornare il driver GPU e riprovare. Per altre informazioni, vedere Supporto hardware e driver alla fine di questo documento.

Impostazioni di utilizzo GPU

È possibile configurare lo strumento Utilizzo GPU per posticipare la raccolta di informazioni di profilatura, anziché iniziare a raccogliere informazioni non appena viene avviata l'app. Poiché le dimensioni delle informazioni di profilatura possono essere considerevoli, questa azione è utile quando si sa che i rallentamenti delle prestazioni dell'app non inizieranno a manifestarsi fino a un secondo momento.

Per posticipare la profilazione all'avvio dell'app

  1. Nel menu principale scegliere Debug>prestazioni e diagnostica (oppure, sulla tastiera, premere ALT+F2).

  2. Nell'hub Prestazioni e diagnostica , accanto a Utilizzo GPU, selezionare il collegamento impostazioni .

  3. In Configurazione profilatura GPU, nella pagina delle proprietà Generale deselezionare la casella di controllo Inizia profilatura all'avvio dell'app per posticipare la profilatura.

    Screenshot delle pagine delle proprietà dell'oggetto, che mostra le opzioni di raccolta

Importante

In questo momento, non è possibile posticipare la profilatura per le app Direct3D 12.

Dopo aver eseguito l'app nello strumento Utilizzo GPU, nella parte inferiore della finestra dello strumento Utilizzo GPU diventa disponibile un collegamento aggiuntivo. Per iniziare a raccogliere informazioni di profilatura, scegliere il collegamento Start nel messaggio Inizia a raccogliere dati dettagliati sull'utilizzo della GPU .

Supporto hardware e driver

Sono supportati i driver e l'hardware GPU seguenti:

Fornitore Descrizione GPU Versione del driver necessaria
Intel® Processori Intel® Core di seconda generazione ('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)
(usare i driver più recenti)
AMD® La maggior parte dalla serie AMD Radeon™ HD 7000 (esclude AMD Radeon™ HD 7350-7670)

GPU AMD Radeon™, GPU AMD FirePro™ e acceleratori GPU AMD FirePro con architettura Graphics Core Next (GCN)

Serie E di AMD® e serie A di AMD Unità di Elaborazione Accelerata (APU) dotate di architettura Graphics Core Next (GCN) ('Kaveri', 'Kabini', 'Temash', 'Beema', 'Mullins')
14.7 RC3 o versioni successive
NVIDIA® La maggior parte rispetto alla serie NVIDIA® GeForce® 400

GPU NVIDIA® GeForce®, GPU NVIDIA Quadro® e acceleratori GPU NVIDIA® Tesla™ con architettura Fermi™, Kepler™ o Maxwell™
343.37 o versione successiva

Le configurazioni multi-GPU, ad esempio NVIDIA® SLI™ e AMD Crossfire™, non sono attualmente supportate. Sono supportate configurazioni grafiche ibride, ad esempio NVIDIA® Optimus™ e AMD Enduro™.