Limites de registradores e memória compartilhada
Veja como os recursos limitam os blocos residentes.
Limites de registradores e memória compartilhada é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CUDA Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CUDA Academy inclui 4 aulas no total.
O orçamento de recursos
Cada SM possui uma quantidade fixa de registradores e memória compartilhada. Cada bloco residente precisa retirar sua parcela desses recursos.
Registradores por thread
Seu kernel usa uma certa quantidade de registradores por thread. Multiplique esse valor pelo número de threads por bloco para obter o custo de registradores de um bloco.
Registradores limitam blocos
Se cada thread precisar de muitos registradores, caberão menos threads e, portanto, menos blocos permanecerão residentes. Kernels que usam muitos registradores perdem ocupação.
Visualizando o uso de registradores
Compile com esta opção e o nvcc exibirá os registradores por thread, permitindo identificar quando um kernel está exigindo registradores demais.
nvcc -Xptxas -v vecadd.cuLimitando registradores
Você pode impor um limite superior com um limite de lançamento, fazendo o compilador usar menos registradores e permitindo que mais warps permaneçam residentes.
__launch_bounds__(256, 4) __global__ void k() {}Memória compartilhada por bloco
Cada bloco pode solicitar memória compartilhada. O SM comporta apenas a quantidade de blocos permitida pelo seu conjunto de memória compartilhada, geralmente de 48 a 100 KB.
Memória compartilhada limita blocos
Solicite um bloco de dados __shared__ grande e apenas um ou dois blocos caberão por SM. Blocos grandes trocam ocupação por reutilização de dados.
O limite mais restritivo prevalece
O SM calcula a quantidade de blocos permitida pelos registradores, pela memória compartilhada e pelo limite de warps. O menor desses valores determina a ocupação.
Derramamento de registradores
Quando uma thread precisa de mais registradores do que o permitido, os registradores adicionais são derramados na memória local lenta. Os derramamentos podem prejudicar mais do que uma ocupação baixa.
Ajustando o equilíbrio
Reduzir os registradores ou a memória compartilhada aumenta a ocupação, mas uma redução excessiva causa derramamentos. O ponto ideal é um equilíbrio.
Meça, não suponha
Sempre leia do compilador o uso real de registradores e memória compartilhada antes de ajustar o código. Fazer suposições geralmente leva à escolha do parâmetro errado.
Verificação rápida
Lembre-se de como o SM decide quantos blocos podem permanecer residentes.
Recapitulação
Você viu que registradores e memória compartilhada são orçamentos fixos do SM, e que o limite mais restritivo limita a ocupação. Fique atento aos derramamentos. 🧮
Perguntas Frequentes
A aula “Limites de registradores e memória compartilhada” é grátis?
Sim — o texto completo de “Limites de registradores e memória compartilhada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CUDA Academy, atualize para CoddyKit PRO. O curso de CUDA Academy inclui 4 aulas no total.
O que vou aprender em “Limites de registradores e memória compartilhada”?
Veja como os recursos limitam os blocos residentes. Você pratica CUDA Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar CUDA Academy?
Nenhuma experiência prévia é necessária. CUDA Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Limites de registradores e memória compartilhada”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de CUDA Academy?
Sim. Cada aula de CUDA Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que a ocupação realmente significa
- Limites de registradores e memória compartilhada
- A API do calculador de ocupação
- A ocupação não é tudo