Aula 36: Projeto Final — Otimização de Kernel de Ponta a Ponta
Esta é a aula final do curso. Não vamos aprender um mecanismo novo — vamos conectar tudo o que já aprendemos em um único processo: como pegar um kernel ingênuo e lento e torná-lo rápido. A lista de verificação não é mágica, é uma sequência de checagens que já vimos separadamente. Primeiro, coalescin
Melhorar um kernel é como reformar uma casa: você não pode simplesmente pintar e torcer. Você verifica o que realmente está quebrado — o encanamento, a fiação ou o telhado — e conserta isso. E há um medidor de pressão que você não pode ignorar: a medição (Nsight). Sem medir, você conserta a parede errada.
- lista de verificação de otimização
- Uma sequência de checagens para melhorar um kernel: coalescing, shared memory, redução de divergence, ajuste de occupancy, e medição no Nsight.
- gargalo (bottleneck)
- O limite real que está desacelerando o kernel. Corrigir outra coisa não vai ajudar até que você trate especificamente dele.
- medir primeiro
- Usar o Nsight para identificar o gargalo antes de mudar o código, em vez de adivinhar qual otimização é necessária.
- redução de leituras globais
- Carregar dados reutilizados na shared memory reduz as leituras da memória global lenta, por exemplo de K para K/TILE com tiling.