Aula 7: Medir corretamente — Warmup, synchronize e Percentis
O primeiro número que você medir quase sempre será uma mentira. A GPU roda de forma assíncrona, então time.time() captura só o launch, não o cálculo. A primeira execução paga o preço de alocações e autotuning. E uma única média esconde a cauda que os utilizadores realmente sentem. Nesta aula aprende
Cronometrar a GPU é como fotografar um trem em movimento: se você aperta o botão cedo demais, recebe um quadro vazio. Você precisa esperar o trem chegar (synchronize), ignorar as execuções de aquecimento (warmup), e olhar também para os trens lentos (percentis), não só para a média.
- torch.cuda.synchronize()
- Espera todo o trabalho da GPU terminar. Obrigatório antes e depois de medir o tempo, porque as chamadas CUDA são assíncronas.
- Warmup
- Rodar algumas iterações antes de medir para passar pelos custos únicos (alocações, autotuning, caching).
- Percentis (p50/p99)
- p99 é o tempo que 99% das requisições respeitam. Ele revela a cauda lenta que uma média esconde.