Analisar o uso da largura de banda da memória do vértice

A largura de banda da memória dos dados do vértice pode ser um possível gargalo para o desempenho da GPU do jogo. Há alguns contadores em um perfil do sistema AGI que podem ajudar a diagnosticar problemas de largura de banda de memória do vértice.

Contadores Qualcomm Adreno

Em dispositivos com GPUs Qualcomm Adreno, alguns contadores importantes incluem:

Enviar contraoferta Descrição
Leitura de memória Vertex Largura de banda dos dados do vértice lidos da memória externa.
Média de bytes/vértices Tamanho médio dos dados do vértice, em bytes.
% de parada de busca de vértices Porcentagem de ciclos de clock em que a GPU está bloqueada nos dados de vértice.

Contadores da ARM Mali (WIP)

Em dispositivos com GPUs ARM Mali, alguns contadores importantes incluem:

Enviar contraoferta Descrição
Carregar/armazenar batidas de leitura da memória externa Os dados superam a leitura da memória externa pela unidade de carga/armazenamento, calculada sobre os núcleos do sombreador.
Carregar/armazenar batidas de leitura do cache L2 Os tempos de dados lidos do cache L2 pela unidade de carregamento/armazenamento, calculados em média sobre os núcleos do sombreador.
[Mais]

Para calcular a largura de banda geral a partir das batidas médias de leitura, o valor do contador é multiplicado pela largura do barramento (normalmente 16 bytes) e pelo número total de núcleos de sombreador. [Mais]

Análise de contagem

Para medir o comportamento desses contadores, você pode medir a largura de banda média e máxima ao longo de um único frame de GPU, que pode ser delineada com um bloco contíguo de Utilização de GPU.

Largura de banda de leitura de memória do vértice para um único frame, com um valor médio de 327 MBps e um valor de pico de 1,16 GBps
Figura 1 : largura de banda de leitura de memória do Vertex para um único frame, com um valor médio de 327 MBps e um valor de pico de 1,16 GBps.

Recomendamos uma largura de banda de leitura de memória do vértice de pico não superior a 1, 5 GBps e uma largura de banda média não superior a 500 MBps. Valores mais altos são indicadores de um de alguns problemas comuns:

  • O tamanho do vértice é muito grande: os vértices podem ter atributos de vértice grandes ou um grande número de atributos de vértice, afetando muito o tempo de sombreamento de vértices.
  • Os fluxos de atributos da Vertex não são divididos: os atributos da Vertex são intercalados em um único buffer, reduzindo a eficiência do cache.
  • Muitos vértices enviados por frame: modelos complexos e/ou um grande número de modelos podem ocupar mais largura de banda e levar mais tempo para serem sombreados.

Os problemas de tamanho do vértice também podem ser diagnosticados pela faixa Average Bytes / Vertex, que recomendamos ter, no máximo, 32 bytes ou vértices.

Tamanho médio do vértice para um único frame, com um valor médio de 31,3 bytes
Figura 2 : tamanho médio do vértice para um único frame, com valor médio de 31,3 bytes.

A melhor maneira de diagnosticar qual desses problemas você está enfrentando é fazer um rastro de perfil de frame para analisar formatos de vértice.