Utilizzo GPU

Nota

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 of GPU Usage Report, with CPU and GPU timelines

Requisiti

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

  • Una GPU e un driver che supportino la strumentazione di temporizzazione necessaria.

    Nota

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

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

Usare lo strumento 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 agli 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 of the Performance Profiler, with GPU Usage selected

    Nota

    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 Durata frame l'app supera la destinazione di prestazioni se il grafico si trova sotto la linea e non raggiunge la destinazione se il grafico si trova sopra la linea. Per il grafico Frame al secondo, è l'opposto: l'app supera la destinazione delle prestazioni quando il grafico si trova sopra la linea e perde la destinazione 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é la generazione del report a partire dalle informazioni raccolte richiede del tempo, il report è disponibile solo al termine della raccolta delle informazioni nella sessione di diagnostica.

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 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. Nella parte superiore del report selezionare in uno dei grafici una sezione che mostra il problema da analizzare. La selezione può durare fino a 3 secondi. Le sezioni più lunghe vengono troncate verso l'inizio.

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

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

    Screenshot of the diagnostics session window, with range selected

Si aprirà 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 sono utili per identificare i colli di bottiglia e le opportunità di aumentare il parallelismo nel codice.

Esportare in GPUView o Windows Performance Analyzer

A partire da Visual Studio 2017, è possibile aprire i 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 of the diagnostics session window, with links highlighted

Usare il report Utilizzo 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é lo schermo può avere una frequenza di aggiornamento superiore rispetto alla destinazione di prestazioni dell'app, potrebbe non esserci una relazione 1 a 1 tra vsync e frequenza dei frame che l'app deve ottenere. Per soddisfare la destinazione delle prestazioni, un'app deve completare tutta l'elaborazione, eseguire il rendering e effettuare una Present() chiamata alla frequenza dei fotogrammi di destinazione. 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 indica la chiamata API, mentre un altro evento in una delle sequenze temporali della GPU indica il momento in cui 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. È anche possibile scegliere la frequenza di aggiornamento dello schermo che determina le linee di vysnc. Se l'app usa l'interfaccia ID3DUserDefinedAnnotation per raggruppare i comandi di rendering, è anche possibile ordinare gli eventi gerarchicamente.

Di seguito sono riportate informazioni dettagliate:

Controllo 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.
Thread ID thread a cui si è interessati. In un'app multithread, queste informazioni consentono di isolare thread specifici che appartengono al processo a cui si è interessati. Gli eventi associati al thread selezionato sono evidenziati in ogni sequenza temporale.
Schermo Numero della visualizzazione di cui viene visualizzata la frequenza di aggiornamento. Alcuni driver possono essere configurati in modo da presentare più schermi fisici come un unico schermo virtuale di grandi dimensioni. È possibile che nell'elenco sia presente un solo schermo, anche se al computer sono collegati più schermi.
Filtra 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 (;).
Hierarchy Sort (Ordinamento gerarchia) 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 di grafica. Un evento in genere corrisponde a un evento nella sequenza temporale di un thread della CPU e a un evento in una 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) Momento di avvio dell'evento nella CPU a seguito della chiamata a un'API Direct3D. Il tempo viene misurato in nanosecondi in relazione al momento di avvio dell'app.
Avvio GPU (ns) Momento di avvio dell'evento nella GPU. Il tempo viene misurato in nanosecondi in relazione al momento di avvio dell'app.
Durata GPU (ns) Tempo, in nanosecondi, impiegato per il completamento dell'evento sulla GPU.
Nome processo Nome dell'app da cui proviene l'evento.
ID thread ID del thread da cui proviene 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

Si può configurare lo strumento Utilizzo GPU in modo da posticipare la raccolta di informazioni di profilatura, anziché iniziare a raccogliere le informazioni all'avvio dell'app. Le informazioni di profilatura possono essere di grandi dimensioni. È quindi consigliabile procedere con questa azione quando si è certi che i rallentamenti nelle prestazioni dell'app saranno visibili solo successivamente.

Per posticipare la profilatura rispetto 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 of Object Property Pages, showing collection options

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 diventa disponibile un collegamento aggiuntivo. Per avviare la raccolta di informazioni di profilatura, scegliere il collegamento Inizia nel messaggio Inizia a raccogliere altri dati dettagliati sull'utilizzo della GPU.

Supporto hardware e driver

Di seguito è riportato un elenco delle GPU e dei driver supportati:

Fornitore Descrizione GPU Versione del driver necessaria
Intel® Processori Intel® Core di quarta 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)

APU (Accelerated Processing Unit) AMD® E-Series e AMD A-series con architettura Graphics Core Next (GCN) (Kaveri, Kabini, Temash, Beema, Mullins)
14.7 RC3 o versioni successive
NVIDIA® La maggior parte dalla 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™.