Partilhar via


Uso da GPU

Observação

O Diagnóstico de Gráficos do Visual Studio não é suportado no ARM64 Visual Studio.

Use a ferramenta Uso da GPU no Performance Profiler para entender melhor o uso de hardware de alto nível do seu aplicativo Direct3D. Ele ajuda você a ver se o desempenho do seu aplicativo está vinculado à CPU ou à GPU e a obter informações sobre como você pode usar o hardware da plataforma de forma mais eficaz. A Utilização de GPU suporta aplicações que utilizam Direct3D 12, Direct3D 11 e Direct3D 10. Ele não suporta outras APIs gráficas, como Direct2D ou OpenGL.

Veja a aparência da janela Relatório de uso da GPU :

Captura de ecrã do Relatório de Utilização da GPU, com as cronologias da CPU e GPU

Requerimentos

Além dos requisitos para Diagnóstico de Gráficos, o seguinte é necessário para usar a ferramenta de Uso da GPU:

  • Uma GPU e um driver que suportam a instrumentação de temporização necessária.

    Observação

    Para obter mais informações sobre hardware e drivers suportados, consulte Suporte de hardware e driver no final deste documento.

Para obter mais informações sobre os requisitos de diagnóstico de gráficos, consulte Introdução.

Use a ferramenta de Uso da GPU

Quando você executa seu aplicativo na ferramenta Uso da GPU, o Visual Studio cria uma sessão de diagnóstico. Esta sessão apresenta gráficos de alto nível sobre o desempenho de renderização do seu aplicativo e o uso da GPU em tempo real.

Para iniciar a ferramenta de uso da GPU:

  1. No menu principal, escolha Depurar>desempenho e diagnóstico (ou, no teclado, pressione Alt+F2).

  2. No hub Desempenho e Diagnóstico , marque a caixa ao lado de Uso da GPU. Opcionalmente, marque as caixas ao lado de outras ferramentas nas quais você está interessado. Você pode executar várias ferramentas de desempenho e diagnóstico simultaneamente para obter uma visão mais completa do desempenho do seu aplicativo.

    Captura de ecrã do Performance Profiler, com Utilização da GPU selecionada

    Observação

    Nem todas as ferramentas de desempenho e diagnóstico podem ser usadas ao mesmo tempo.

  3. Na parte inferior do hub Desempenho e Diagnóstico , selecione Iniciar para executar seu aplicativo nas ferramentas selecionadas.

As informações de alto nível mostradas em tempo real incluem tempo de quadros, taxa de quadros e uso da GPU. Cada uma dessas informações é grafada de forma independente, mas todas elas usam uma escala de tempo comum para que você possa entender facilmente as relações.

Os gráficos Frame time (ms) e Frames per second (FPS) têm duas linhas horizontais vermelhas que mostram metas de desempenho de 60 e 30 quadros por segundo. No gráfico de tempo de frame, o seu aplicativo excede a meta de desempenho quando o gráfico está abaixo da linha e não atinge a meta quando o gráfico está acima da linha. Para o gráfico de Quadros por segundo, é o oposto: a sua aplicação excede o objetivo de desempenho quando o gráfico está acima da linha e falha ao atingir o objetivo quando o gráfico está abaixo da linha. Você usa esses gráficos principalmente para ter uma ideia de alto nível do desempenho do seu aplicativo e para identificar lentidão que talvez queira investigar. Por exemplo, uma investigação mais aprofundada pode ser necessária se você vir uma queda repentina na taxa de quadros ou um pico na utilização da GPU.

Enquanto seu aplicativo é executado na ferramenta Uso da GPU, a sessão de diagnóstico também coleta informações detalhadas sobre eventos gráficos que foram executados na GPU. Você usa essas informações para gerar um relatório mais granular de como seu aplicativo utiliza o hardware. Como esse relatório leva algum tempo para ser gerado a partir das informações coletadas, ele só fica disponível depois que a sessão de diagnóstico é concluída coletando informações.

Quando você quiser examinar um problema de desempenho ou utilização mais de perto, pare de coletar informações de desempenho para que você possa gerar o relatório.

Para gerar e visualizar o relatório de uso da GPU:

  1. Na parte inferior da janela da sessão de diagnóstico, escolha o link Parar coleta ou selecione Parar no canto superior esquerdo.

    Captura de ecrã de uma janela de sessão de diagnóstico na ferramenta Uso da GPU, mostrando Fotogramas por segundo, utilização da GPU, o botão Parar e o link Parar recolha.

  2. Na parte superior do relatório, selecione uma seção de um dos gráficos que mostra o problema que você deseja investigar. A sua seleção pode ter até 3 segundos de duração. Seções mais longas são truncadas no início.

    Captura de ecrã de uma janela de sessão de diagnóstico na ferramenta Utilização do GPU com parte da cronologia da sessão de diagnóstico selecionada.

  3. Para visualizar uma linha do tempo detalhada da sua seleção, na parte inferior do relatório, na ... clique aqui para ver os detalhes do uso da GPU para esse intervalo de tempo, selecione ver detalhes.

    Captura de ecrã da janela da sessão de diagnóstico, com o intervalo selecionado

Esta seleção abre um novo documento em abas que contém o relatório. O relatório Uso da GPU ajuda você a ver quando um evento gráfico é iniciado na CPU, quando ele atinge a GPU e quanto tempo a GPU leva para executá-lo. Essas informações podem ajudá-lo a identificar gargalos e oportunidades para aumentar o paralelismo em seu código.

Exportar para GPUView ou Windows Performance Analyzer

A partir do Visual Studio 2017, você pode abrir esses dados com GPUView e Windows Performance Analyzer. Basta selecionar os links Abrir no GpuView ou Abrir no WPA localizados no canto inferior direito da sessão de diagnóstico.

Captura de ecrã da janela da sessão de diagnóstico, com hiperligações realçadas

Usar o relatório de uso da GPU

A parte superior do relatório Uso da GPU mostra as linhas do tempo para a atividade de processamento da CPU, a atividade de renderização da GPU e a atividade de cópia da GPU. Essas linhas do tempo são divididas por barras verticais cinza-claro que indicam a sincronização vertical (vsync) da tela. A frequência das barras corresponde à taxa de atualização de um dos monitores (selecionados usando a lista suspensa Display ) dos quais os dados de uso da GPU foram coletados.

Como a exibição pode ter uma taxa de atualização maior do que a meta de desempenho do seu aplicativo, pode não haver uma relação de 1 para 1 entre o vsync e a taxa de quadros que você deseja que seu aplicativo atinja. Para atingir a sua meta de desempenho, uma aplicação deve concluir todo o processamento, fazer a renderização e fazer uma Present() chamada à taxa de fotogramas pretendida. No entanto, o quadro renderizado não será mostrado até o próximo vsync após Present().

A parte inferior do relatório Uso da GPU lista os eventos gráficos que ocorreram durante o período de tempo do relatório. Quando você seleciona um evento, um marcador aparece nos eventos correspondentes nas linhas do tempo relevantes. Normalmente, um evento em um thread da CPU mostra a chamada da API, enquanto outro evento em uma das linhas do tempo da GPU mostra quando a GPU concluiu a tarefa. Da mesma forma, quando você seleciona um evento em uma linha do tempo, o relatório destaca o evento gráfico correspondente na parte inferior do relatório.

Quando você reduz o zoom das linhas do tempo na parte superior do relatório, apenas os eventos mais demorados ficam visíveis. Para ver eventos com uma duração mais curta, aumente o zoom nas linhas do tempo usando Ctrl+wheel no dispositivo apontador ou o controle de dimensionamento no canto inferior esquerdo do painel superior. Você também pode arrastar o conteúdo do painel de linha do tempo para percorrer os eventos gravados.

Para ajudar a encontrar o que você está procurando, filtre o relatório de uso da GPU com base em nomes de processo, IDs de thread e o nome do evento. Além disso, podes escolher qual a taxa de atualização do ecrã que determina as linhas vsync. Você pode classificar eventos hierarquicamente se seu aplicativo usar a interface ID3DUserDefinedAnnotation para agrupar comandos de renderização.

Aqui estão mais detalhes:

Controlo do filtro Descrição
Processo O nome do processo em que está interessado. Durante a sessão de diagnóstico, todos os processos que usaram a GPU estão incluídos nesta lista suspensa. A cor associada ao processo é a cor da atividade do segmento nas linhas do tempo.
Tópico O ID do thread no qual você está interessado. Em um aplicativo multi-threaded, essas informações podem ajudá-lo a isolar threads específicos que pertencem ao processo em que você está interessado. Os eventos associados ao thread selecionado são realçados em cada linha do tempo.
Ecrã O número do monitor cuja taxa de atualização é mostrada. Alguns drivers podem ser configurados para apresentar vários monitores físicos como um único e grande display virtual. Poderá ver apenas um ecrã listado, mesmo que a máquina tenha vários ecrãs ligados.
Filtro Palavras-chave em que está interessado. Os eventos na parte inferior do relatório incluirão apenas os que corresponderem a uma palavra-chave, total ou parcialmente. Você pode especificar várias palavras-chave separando-as com um ponto-e-vírgula (;).
Classificação hierárquica Uma caixa de seleção que indica se as hierarquias de eventos, definidas por meio de marcadores de usuário, são preservadas ou ignoradas.

A lista de eventos na parte inferior do relatório Uso da GPU mostra os detalhes de cada evento.

Coluna Descrição
Nome do evento O nome do evento gráfico. Um evento geralmente corresponde a um evento numa linha temporal de um thread de CPU e num evento numa linha temporal de GPU. Os nomes dos eventos podem não ser atribuídos se o Uso da GPU não conseguir determinar o nome de um evento. Para obter mais informações, consulte a nota a seguir a esta tabela.
Início da CPU (ns) A hora em que o evento foi iniciado na CPU chamando uma API do Direct3D. O tempo é medido em nanossegundos, em relação a quando o aplicativo foi iniciado.
Inicialização da GPU (ns) A hora em que o evento foi iniciado na GPU. O tempo é medido em nanossegundos, em relação a quando o aplicativo foi iniciado.
Duração da GPU (ns) O tempo, em nanossegundos, que o evento levou para ser concluído na GPU.
Nome do processo O nome do aplicativo do qual o evento veio.
Thread ID O ID do thread do qual o evento veio.

Importante

Se a GPU ou o driver não suportarem os recursos de instrumentação necessários, todos os eventos aparecerão como não atribuídos. Se você tiver esse problema, atualize o driver da GPU e tente novamente. Para obter mais informações, consulte Suporte de hardware e driver no final deste documento.

Configurações de uso da GPU

Você pode configurar a ferramenta Uso da GPU para adiar a coleta de informações de criação de perfil, em vez de começar a coletar informações assim que o aplicativo for iniciado. Como o tamanho das informações de criação de perfil pode ser significativo, esta ação é útil quando se sabe que as lentidões no desempenho da sua aplicação só surgem mais tarde.

Para adiar o perfilamento a partir do início da aplicação:

  1. No menu principal, escolha Depurar>desempenho e diagnóstico (ou, no teclado, pressione Alt+F2).

  2. No hub Desempenho e Diagnóstico , ao lado de Uso da GPU, selecione o link de configurações .

  3. Em Configuração de criação de perfil da GPU, na página de propriedades Geral , desmarque a caixa de seleção Iniciar criação de perfil no início do aplicativo para adiar a criação de perfil.

    Captura de ecrã das Páginas de Propriedades do Objeto, mostrando opções de recolha

Importante

No momento, não é possível adiar a criação de perfil para aplicativos Direct3D 12.

Depois de executar seu aplicativo na ferramenta Uso da GPU, um link adicional fica disponível na parte inferior da janela da ferramenta Uso da GPU. Para começar a recolher informações de perfilagem, selecione a ligação Iniciar na mensagem Começar a recolher Dados de Utilização da GPU Detalhados Adicionais.

Suporte para hardware e drivers

O seguinte hardware e drivers de GPU são suportados:

Fornecedor Descrição da GPU Versão do driver necessária
Processador Intel® Processadores Intel® Core de 4.ª geração ('Haswell')

- Gráficos Intel® HD (GT1)
- Placa gráfica Intel® HD 4200 (GT2)
- Placa gráfica Intel® HD 4400 (GT2)
- Placa gráfica Intel® HD 4600 (GT2)
- Gráficos Intel® HD P4600 (GT2)
- Gráficos Intel® HD P4700 (GT2)
- Gráficos Intel® HD 5000 (GT3)
- Intel® Iris™ Graphics 5100 (GT3)
- Intel® Iris™ Pro Graphics 5200 (GT3e)
(use os drivers mais recentes)
AMD® A maioria desde a série AMD Radeon™ HD 7000 (exclui a AMD Radeon™ HD 7350-7670)

GPU AMD Radeon™, GPUs AMD FirePro™ e aceleradores de GPU AMD FirePro com arquitetura Graphics Core Next (GCN)

Unidades de processamento acelerado (APUs) AMD® série E e AMD série A com arquitetura Graphics Core Next (GCN) ('Kaveri', 'Kabini', 'Temash', 'Beema', 'Mullins')
14.7 RC3 ou posterior
NVIDIA® A maioria desde a série NVIDIA® GeForce® 400

GPUs NVIDIA® GeForce®, GPUs NVIDIA Quadro® e aceleradores de GPU NVIDIA® Tesla™ com arquitetura Fermi™, Kepler™ ou Maxwell™
343.37 ou posterior

Configurações de várias GPUs, como NVIDIA® SLI™ e AMD Crossfire™, não são suportadas no momento. Configurações gráficas híbridas, como NVIDIA® Optimus™ e AMD Enduro™, são suportadas.