Ferramenta de análise de limite de cobertura

A ferramenta de análise de teto oferece um modelo de desempenho visual intuitivo que pode ser usado para entender as limitações inerentes do hardware que afetam o desempenho do programa. Especificamente, ele se concentra se o programa é limitado por memória ou limitado por computação e quão próximo o desempenho do programa está do pico teórico de desempenho do hardware, representado como um "roofline".

Plataformas compatíveis

TPU: compatível

GPU: com suporte (em versão Beta)

O que é o gráfico de limite máximo

O gráfico de teto mostra a relação entre a intensidade operacional (FLOPS por byte acessado) e os FLOPS por segundo alcançados.

\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]

A forma de "teto" é formada pelo menor valor de FLOPS de pico e o desempenho alcançável, considerando a largura de banda de memória e a intensidade operacional. O ponto de pico indica a intensidade operacional mínima necessária para atingir o pico de FLOPS.

Saiba mais sobre modelos de roofline em Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures, ou no tópico Roofline model na Wikipedia.

Como interpretar o gráfico de limite máximo

Ao traçar a intensidade operacional e os FLOPS alcançados para diferentes etapas, partes do programa ou operações individuais de HLO no gráfico de teto, você pode ter insights sobre os gargalos de desempenho:

  • Se um ponto de dados estiver na parte inclinada do limite máximo, o desempenho provavelmente será limitado pela largura de banda da memória (limitação de memória). Aumentar a intensidade operacional (realizar mais cálculos por byte de dados acessados) pode melhorar o desempenho.
  • Se um ponto de dados estiver na parte plana do teto, a performance provavelmente será limitada pela capacidade de computação (limitada por computação). Nesse caso, aumentar ainda mais a intensidade operacional pode não resultar em ganhos significativos de desempenho, a menos que os FLOPS máximos do hardware possam ser melhor utilizados.
  • A distância de um ponto de dados em relação ao limite máximo indica o potencial de melhoria de performance. Uma distância maior sugere que há oportunidades de otimizar o programa para aproveitar melhor os recursos do hardware.

Componentes da interface

A interface da ferramenta de análise de limite de teto tem vários componentes importantes:

  • Uma seção de informações do dispositivo descreve as especificações de hardware, que são usadas para desenhar estaticamente as "linhas de teto" no gráfico.
  • Um gráfico de limite máximo no nível do programa com pontos de dados correspondentes aos seguintes:
    • A duração total do perfil.
    • A duração total do perfil, mas com dados de FLOPS/s derivados de contadores de desempenho de hardware, em vez dos modelos de custo padrão calculados pelo compilador XLA.
    • Uma média das etapas completas executadas durante a duração do perfil (para jobs de treinamento. Você pode ignorar a terminologia de etapas para jobs de inferência).
    • Cada etapa concluída que foi executada durante a duração do perfil (para jobs de treinamento. Você pode ignorar a terminologia de etapas para jobs de inferência).
  • O gráfico de teto também tem os seguintes recursos:
    • Você pode incluir ou excluir operações de infeed/outfeed usando o menu suspenso fornecido.
    • Passar o cursor sobre qualquer um dos pontos de dados no gráfico mostra outras informações relevantes, como números de largura de banda para diferentes memórias, tempo total gasto etc.
  • Uma tabela de estatísticas no nível do programa que fornece detalhes adicionais para cada ponto de dados, como a porcentagem de utilização máxima de memória, a porcentagem de taxa de FLOP máxima etc.
  • Um segundo gráfico de teto que fornece informações mais detalhadas, com pontos de dados plotados para as 1.000 operações mais demoradas durante o período de criação de perfil:
    • Assim como no gráfico de limite máximo no nível do programa, passar o cursor sobre cada ponto de dados mostra mais informações sobre essa operação.
    • É possível personalizar os pontos de dados mostrados no gráfico das seguintes maneiras:
      • Incluir/excluir operações de infeed e outfeed usando um menu suspenso.
      • Filtrar categorias específicas de operações.
      • Filtrar operações vinculadas a um determinado recurso.
      • Filtrar uma operação nomeada específica.
  • Uma segunda tabela de estatísticas, semelhante à tabela do nível do programa, que fornece mais detalhes para cada ponto de dados.

Em todas as seções descritas acima, as seguintes memórias são compatíveis:

  • Para TPUs: HBM, VMEM, CMEM (somente TPU v4).
  • Para GPUs: HBM, L1/SharedMem.
  • As linhas correspondentes no gráfico só aparecem se houver operações na duração do perfil que foram vinculadas a essa memória. Por exemplo, se todas as operações forem HBM ou vinculadas ao compute, não haverá linhas para VMEM ou CMEM.