Compartilhar via


Uso de GPU

Observação

Não há suporte para o Diagnóstico de Elementos Gráficos do Visual Studio no Visual Studio ARM64.

Use a ferramenta de uso de GPU no Perfilador de Desempenho para entender melhor o uso de hardware em alto nível do seu aplicativo Direct3D. Ele ajuda você a ver se o desempenho do seu aplicativo está associado à CPU ou à GPU e obter informações sobre como você pode usar o hardware da plataforma de forma mais eficaz. O uso de GPU dá suporte a aplicativos que usam Direct3D 12, Direct3D 11 e Direct3D 10. Ele não dá suporte a outras APIs gráficas, como Direct2D ou OpenGL.

Aqui está a aparência da janela relatório de uso da GPU :

Captura de tela do Relatório de Uso de GPU, com linhas do tempo de CPU e GPU

Requisitos

Além dos requisitos para o Diagnóstico gráfico, o seguinte é necessário para usar a ferramenta uso de GPU:

  • Uma GPU e um driver que dão suporte à instrumentação de temporização necessária.

    Observação

    Para obter mais informações sobre hardware e drivers com suporte, consulte Suporte a hardware e drivers no final deste documento.

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

Usar a ferramenta de uso da GPU

Quando você executa seu aplicativo na ferramenta uso de GPU, o Visual Studio cria uma sessão de diagnóstico. Esta sessão grafa informações de alto nível sobre o desempenho de renderização do aplicativo e o uso de GPU em tempo real.

Para iniciar a ferramenta de uso de GPU:

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

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

    Captura de tela do Criador de Perfil de Desempenho, com uso de GPU selecionado

    Observação

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

  3. Na parte inferior do hub de 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 quadro, taxa de quadros e uso de 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 Tempo de quadro (ms) e Quadros por segundo (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 quadro, seu aplicativo excede a meta de desempenho quando o gráfico está abaixo da linha e não alcança a meta quando o gráfico está acima da linha. Para o gráfico Quadros por segundo, é o oposto: seu aplicativo excede a meta de desempenho quando o gráfico está acima da linha e não atinge a meta quando está abaixo da linha. Você usa esses gráficos principalmente para ter uma visão geral do desempenho do aplicativo, e identificar as lentidões que talvez você queira investigar. Por exemplo, uma investigação adicional pode ser justificada se você vir uma queda repentina na taxa de quadros ou um pico na utilização da GPU.

Enquanto seu aplicativo está sendo executado na ferramenta de uso da GPU, a sessão de diagnóstico também coleta informações detalhadas sobre eventos gráficos que foram processados 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ó estará disponível depois que a sessão de diagnóstico terminar de coletar 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 exibir o relatório de uso da GPU:

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

    Captura de tela de uma janela de sessão de diagnóstico na ferramenta Uso de GPU, mostrando Quadros por segundo, a utilização de GPU, o botão Parar e o link Interromper coleta.

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

    Captura de tela de uma janela da sessão de diagnóstico na ferramenta Uso da GPU com parte da linha do tempo da sessão de diagnóstico selecionada.

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

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

Essa seleção abre um documento novo com abas que contêm o relatório. O relatório uso de 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 Analisador de Desempenho do Windows

A partir do Visual Studio 2017, você pode abrir esses dados com GPUView e o Analisador de Desempenho do Windows. Para isso, basta selecionar Open in GpuView ou Open in WPA localizados no canto inferior direito da sessão de diagnóstico.

Captura de tela da janela de sessão de diagnóstico, com links realçados

Usar o relatório de uso de GPU

A parte superior do relatório uso de GPU mostra linhas do tempo para a atividade de processamento da CPU, a atividade de renderização de GPU e a atividade de cópia de GPU. Essas linhas do tempo são divididas por barras verticais e cinza claro que indicam a sincronização vertical do display (vsync). A frequência das barras corresponde à taxa de atualização de uma das exibições (selecionada usando a lista suspensa Exibir ) da qual 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 aplicativo, talvez não haja uma relação de 1 para 1 entre o vsync e a taxa de quadros que você deseja que seu aplicativo alcance. Para alcançar sua meta de desempenho, um aplicativo deve concluir todo o processamento, fazer a renderização e fazer uma Present() chamada na taxa de quadros alvo. No entanto, o quadro renderizado não será mostrado até o próximo vsync após Present().

A parte inferior do relatório uso de 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 em eventos correspondentes nas linhas do tempo relevantes. Normalmente, um evento em um thread de CPU mostra a chamada à 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 realça o evento gráfico correspondente na parte inferior do relatório.

Quando você está afastado da linha do tempo na parte superior do relatório, somente os eventos mais demorados são visíveis. Para ver eventos com duração mais curta, amplie as linhas do tempo usando Ctrl+rodinha do mouse ou o controle de dimensionamento no canto inferior esquerdo do painel. Você também pode arrastar o conteúdo do painel de linha do tempo para percorrer os eventos gravados.

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

Aqui estão mais detalhes:

Controle de filtro Descrição
Processo O nome do processo no qual você está interessado. Todos os processos que usaram a GPU durante a sessão de diagnóstico são incluídos nesta lista suspensa. A cor associada ao processo é a cor da atividade do thread nas linhas do tempo.
Tópico A ID do thread na qual você está interessado. Em um aplicativo com vários threads, essas informações podem ajudá-lo a isolar threads específicos que pertencem ao processo no qual você está interessado. Os eventos associados ao thread selecionado são realçados em cada linha do tempo.
Tela O número da exibição cuja taxa de atualização é mostrada. Alguns drivers podem ser configurados para apresentar várias exibições físicas como uma única exibição virtual grande. Você pode ver apenas uma exibição listada, mesmo se o computador tiver várias exibições anexadas.
Filtro Palavras-chave nas quais você está interessado. Os eventos na parte inferior do relatório incluirão apenas os que correspondem a uma palavra-chave, total ou parcialmente. Você pode especificar várias palavras-chave separando-as com um ponto-e-vírgula (;).
Classificação de Hierarquia 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 uma ocorrência na linha do tempo do thread da CPU e na linha do tempo da GPU. Os nomes de eventos poderão ser desatribuídos se o uso de GPU não conseguir determinar o nome de um evento. Para obter mais informações, consulte a observação a seguir nesta tabela.
Início da CPU (ns) A hora em que o evento foi iniciado na CPU chamando uma API Direct3D. O tempo é medido em nanossegundos, em relação a quando o aplicativo foi iniciado.
Início 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 A ID do thread da qual o evento veio.

Importante

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

Configurações de uso de GPU

Você pode configurar a ferramenta Uso de GPU para adiar a coleta de informações de perfilamento, em vez de coletar informações assim que o aplicativo iniciar. Como o tamanho das informações de perfilagem pode ser significativo, essa ação é útil quando você sabe que a lentidão no desempenho do aplicativo só vai aparecer mais tarde.

Para adiar o perfilamento desde o início do aplicativo:

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

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

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

    Captura de tela das Páginas de Propriedades do Objeto, mostrando as opções de coleção

Importante

Neste momento, você não pode adiar a criação de perfil para aplicativos Direct3D 12.

Depois de executar seu aplicativo na ferramenta de Uso da GPU, um link adicional ficará disponível na parte inferior da janela da ferramenta de Uso da GPU. Para começar a coletar informações de desempenho, escolha o link Iniciar na mensagem Iniciar a coleta de dados adicionais de uso detalhado de GPU.

Suporte a hardware e driver

Há suporte para os seguintes drivers e hardware de GPU:

Fornecedor Descrição da GPU Versão do driver necessária
Inteligência® Processadores Intel® Core de 4ª geração ('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)
(use os drivers mais recentes)
AMD® A maioria desde a série AMD Radeon™ HD 7000 (exclui AMD Radeon™ HD 7350-7670)

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

Unidades de Processamento Acelerado (APUs) das séries E e A da AMD® 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

Não há suporte para configurações de várias GPUs, como o NVIDIA® SLI™ e o AMD Crossfire™. Há suporte para configurações de elementos gráficos híbridos, como NVIDIA® Optimus™ e AMD Enduro™.