Skip to content
Melhorando a Eficiência de Auto-Tuning de Kernels GEMM em GPUs NVIDIA com Heurísticas e CUTLASS 4.2
Source: developer.nvidia.com

Melhorando a Eficiência de Auto-Tuning de Kernels GEMM em GPUs NVIDIA com Heurísticas e CUTLASS 4.2

Sources: https://developer.nvidia.com/blog/improving-gemm-kernel-auto-tuning-efficiency-on-nvidia-gpus-with-heuristics-and-cutlass-4-2, https://developer.nvidia.com/blog/improving-gemm-kernel-auto-tuning-efficiency-on-nvidia-gpus-with-heuristics-and-cutlass-4-2/, NVIDIA Dev Blog

TL;DR

  • nvMatmulHeuristics oferece heurísticas rápidas para GEMMs e prevê um conjunto pequeno de configurações de kernel com alto potencial.
  • Integrado ao CUTLASS 4.2, ele reduz drasticamente o tempo de tuning de kernels do modo exaustivo para avaliação de candidatos direcionados.
  • Resultados iniciais mostram ganhos de tempo substanciais: usar 16 configurações atinge cerca de 96% do desempenho máximo em aproximadamente 150 minutos, versus mais de 700 minutos na busca exaustiva (treinamento Llama 3 405B em H100 SXM).
  • Para o DeepSeek-R1 671B em um GPU B200, 8 configurações alcançam cerca de 99% do desempenho da busca exaustiva com mais de 5x de melhoria na construção e no tempo de auto-tuning. Isso viabiliza fluxos tipo JIT em frameworks de DL.
  • A abordagem enfatiza tamanhos de cluster estáticos conhecidos no tempo de compilação, permitindo kernels mais eficientes do que em alguns casos com clusterização dinâmica em kernels pré-compilados. Esses resultados ilustram como uma boa heurística pode levar o desempenho próximo ao kernel ideal, reduzindo drasticamente os custos de tuning. NVIDIA Developer Blog

Contexto e antecedentes

Selecionar o melhor kernel GEMM para um problema e hardware específicos é um desafio de otimização. O desempenho do GEMM depende de um conjunto amplo de meta-parâmetros, incluindo CTA, tamanhos de tile por warp e nível de instrução, escalonamento de kernel, estratégias de rasterização, dimensões de cluster e fatores de divisão. Historicamente, encontrar o kernel ótimo envolvia gerar milhares de configurações, compilá-las e executá-las em busca exaustiva. Esse fluxo pode levar muitas horas e se torna um obstáculo para adoção em bibliotecas offline como o CUTLASS, bem como em ambientes de compilação JIT, como Torch Inductor ou OpenAI Triton, onde a compilação rápida é crítica. O atrito costuma levar usuários a escolher kernels subótimos para evitar custos elevados de tuning. O NVIDIA blog apresenta nvMatmulHeuristics, um módulo de otimização de meta-parâmetros de kernels de GPU, projetado para entregar um conjunto pequeno e de alto potencial de configurações de kernel para um GEMM dado e hardware. O módulo analisa os parâmetros da operação e as capacidades do hardware-alvo para prever um conjunto conciso de configurações com desempenho próximo do ponto máximo. A integração com o CUTLASS 4.2 visa transformar o fluxo de geração de kernels e de tuning em um processo mais rápido e previsível. O recurso é apresentado como parte dos heurísticos do cuBLAS e está disponível em acesso antecipado para uso geral, com integração no CUTLASS. NVIDIA Developer Blog O fluxo muda de uma busca por força bruta para uma exploração direcionada. Os usuários preparam uma lista de problemas GEMM em formato JSON, constroem o CUTLASS com heurísticas habilitadas e especificam -DCUTLASS_LIBRARY_HEURISTICS_PROBLEMS_FILE= e -DCUTLASS_LIBRARY_HEURISTICS_CONFIGS_PER_PROBLEM=N, onde N é o número de configurações emitidas por problema. A etapa de construção gera uma lista CSV de testes que enumera todos os casos de teste necessários para executar o auto-tuning sobre as configurações emitidas. Este CSV pode ser utilizado com código de benchmarking próprio ou com cutlass_profiler para executar as configurações. Para resultados de profiling consistentes, execute com clocks bloqueados. O recurso faz parte do ecossistema CUTLASS e é compatível com cenários FP16 de entrada/saída e FP32 de computação (HSH). NVIDIA Developer Blog

Um exemplo FP16 e desempenho prático

Para um cenário FP16 de entrada/saída com computação FP32 (HSH), nvMatmulHeuristics pode emitir oito configurações. Esses oito kernels podem ser compilados e avaliados, e o melhor entre eles pode ser escolhido para implantação, frequentemente alcançando desempenho próximo ao do melhor kernel obtido pela busca exaustiva. Nos resultados publicados, oito configurações atingiram 104% do baseline quando testadas com tamanhos de cluster estáticos, ilustrando como concentrar o esforço de construção e perfil em um conjunto reduzido pode alcançar desempenho de pico com custo menor do que a busca exaustiva. NVIDIA Developer Blog

Resultados empíricos e conclusões

Dois workloads representativos ilustram o impacto de nvMatmulHeuristics. Em um treinamento Llama 3 405B em uma GPU NVIDIA H100 SXM, a busca exaustiva pode levar mais de 700 minutos para identificar o kernel ideal, enquanto uma seleção restrita a 16 configurações atinge 96% do desempenho de pico em cerca de 150 minutos. Isso revela uma redução drástica do tempo total de tuning com uma queda modesta em relação ao desempenho máximo. Outro workload, o DeepSeek-R1 671B em uma GPU NVIDIA B200, mostrou que utilizar um conjunto pequeno de candidatos pode alcançar 99% do desempenho da busca exaustiva com mais de 5x de melhoria no tempo de construção e de auto-tuning. Nesse caso, o baseline utilizava tamanhos de cluster dinâmicos, enquanto as configurações recomendadas pelo nvMatmulHeuristics foram compiladas com tamanhos de cluster estáticos disponíveis no tempo de compilação, resultando em 104% do desempenho de baseline para esses GEMMs. Esses resultados ilustram como heurísticas bem definidas podem levar ao desempenho de pico de workloads, reduzindo o custo de tuning e facilitando a incorporação em frameworks, compiladores e bibliotecas de kernels. NVIDIA Developer Blog

Implicações para desenvolvedores e empresas

Ao concentrar o tuning no conjunto reduzido e de alto potencial de kernels, nvMatmulHeuristics reduz significativamente o tempo de implantação de GEMMs de alto desempenho em ambientes de produção. Isso facilita a adoção de kernels otimizados em stacks JIT e bibliotecas offline, acelerando ciclos de desenvolvimento para frameworks de deep learning, compiladores e bibliotecas de kernel. A integração com o CUTLASS 4.2 simplifica a adoção para desenvolvedores que já utilizam CUTLASS e heurísticas cuBLAS como parte de suas stacks. NVIDIA Developer Blog

Detalhes técnicos ou Implementação

O nvMatmulHeuristics trabalha em duas camadas: um módulo de heurísticas preditivas que analisa parâmetros do GEMM e capacidades de hardware, e uma integração com CUTLASS que utiliza as configurações previstas para construir e avaliar um conjunto compacto de kernels. Passos-chave:

  • Preparar uma lista de problemas GEMM em formato JSON, descrevendo transposição/ layout de A, B e C/D conforme necessário (por exemplo, GEMMs FP16 com entrada/saída FP16 e computação FP32, HSH).
  • Construir CUTLASS com a integração de heurísticas habilitada e especificar -DCUTLASS_LIBRARY_HEURISTICS_PROBLEMS_FILE e -DCUTLASS_LIBRARY_HEURISTICS_CONFIGS_PER_PROBLEM para controlar quantas configurações são emitidas por problema.
  • A etapa de build gera uma lista CSV de testes que enumera todos os casos de teste para executar o auto-tuning sobre as configurações emitidas. Você pode usar código de benchmarking próprio ou o cutlass_profiler para executar as configurações, de forma automática.
  • Para resultados de profiling consistentes, execute com clocks bloqueados. O documentation fornece orientações sobre uso e integração. O exemplo de oito configurações para FP16/FP32 (HSH) demonstra o efeito prático: compilando e testando esses oito kernels, é possível selecionar o melhor kernel sem o overhead de uma busca exaustiva, mantendo desempenho próximo ao ótimo. Em workloads publicados, 8 configurações atingiram 104% do baseline com cluster sizes estáticos, demonstrando como concentrar o esforço de construção e perfil pode alcançar desempenho de pico com menor custo do que a busca completa. NVIDIA Developer Blog

Pontos-chave

  • Heurísticas fornecem um conjunto pequeno e direcionado de configurações de GEMM com alto potencial, em vez de uma busca exaustiva.
  • Integração com CUTLASS 4.2 facilita um fluxo de trabalho com listas JSON de problemas, CSVs de teste e uso opcional do cutlass_profiler.
  • Resultados de cases reais mostram ganhos de tempo significativos mantendo desempenho próximo ao ótimo.
  • Tamanhos de cluster estáticos podem oferecer ganhos adicionais sobre estratégias de cluster dinâmico em cenários específicos.
  • nvMatmulHeuristics faz parte central dos heurísticos do cuBLAS e está disponível em acesso antecipado com integração ao CUTLASS. NVIDIA Developer Blog

FAQ

  • Q: O que o nvMatmulHeuristics faz? A: Analisa parâmetros do GEMM e capacidades de hardware para prever um conjunto pequeno de configurações de kernel com alto potencial.
  • Q: Como ele é usado com o CUTLASS? A: Compile o CUTLASS com heurísticas habilitadas, forneça a lista de problemas em JSON e defina o número de configurações por problema; o build gera um CSV que pode ser usado com profiling ou com cutlass_profiler.
  • Q: Quais ganhos de desempenho esperar? A: Em resultados reportados, uma seleção de 16 configurações atingiu ~96% do pico em ~150 minutos, vs. >700 minutos na busca exaustiva. Outros workloads mostraram ganhos similares e reduções de tempo de construção. NVIDIA Developer Blog
  • Q: O nvMatmulHeuristics está publicamente disponível? A: Sim, é apresentado como parte dos heurísticos cuBLAS e está disponível em acesso antecipado para uso geral, com integração no CUTLASS. NVIDIA Developer Blog

Referências

More news