Ocupación
Leerlo en el Capítulo 4 · checkpoint +50 XP →
Warps residentes por SM como fracción del máximo: el repertorio del planificador para ocultar latencia.
Cada SM puede alojar un número limitado de warps (64 en la H100). La ocupación es cuántos están realmente residentes, limitada por el uso de cada bloque de:
- Registros por hilo (el banco de registros lo comparten todos los warps residentes),
- Memoria compartida por bloque,
- Hilos por bloque y bloques por SM.
Mayor ocupación le da al planificador de warps más candidatos a los que cambiar mientras otros esperan a la memoria. Pero es un medio, no un fin. Muchos kernels rápidos (GEMM grandes, FlashAttention) corren con ocupación baja y usan registros y memoria compartida para reutilizar datos.
Enfoque práctico (según las buenas prácticas de CUDA y PRACE): usa la calculadora de ocupación o Nsight Compute para ver el recurso limitante, prueba algunos tamaños de bloque (múltiplos de 32) y mide. No supongas.
Relacionado
Fuentes y lecturas adicionales
- CUDA C++ Best Practices Guide
- PRACE Best Practice Guide – GPGPU — GPU programming and tuning practice for HPC
- Modal GPU Glossary — hardware and software vocabulary
Escrito para LazyLab con nuestras propias palabras; las fuentes se citan para profundizar y verificar.