Estêncil e janelas deslizantes
Divida as vizinhanças em blocos com células de halo.
Estêncil e janelas deslizantes é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 3 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 que é um estêncil
Um estêncil calcula cada saída a partir de uma vizinhança fixa de entradas, como calcular a média de um pixel com as células ao redor.
A janela deslizante
À medida que você percorre o vetor, a janela de entrada desliza uma posição. As saídas consecutivas compartilham a maior parte das entradas, portanto a reutilização é enorme.
Perfeito para blocos
Como os vizinhos se sobrepõem, um bloco carregado uma vez alimenta muitas saídas. Estênceis são um exemplo clássico em que o processamento por blocos se destaca.
Conheça a borda adicional
Para calcular as extremidades de um bloco, você também precisa de alguns elementos logo fora dele. Essas células extras das bordas são chamadas de borda adicional.
Por que existe a borda adicional
A primeira thread de um bloco precisa do vizinho à esquerda, que pertence ao bloco anterior. Sem as células da borda adicional, essa leitura dará errado.
Dimensionando a borda adicional
Para um estêncil de raio r, carregue r células extras de cada lado. Um desfoque de 3 pontos tem raio 1, portanto uma célula de borda adicional por lado é suficiente.
Um bloco preenchido
Declare a memória compartilhada como blockDim mais 2 * radius, para que ela contenha a parte interna e as duas bordas adicionais em um único buffer organizado.
__shared__ float tile[BLOCK + 2 * RADIUS];Carregando a parte interna
Cada thread primeiro carrega seu próprio elemento no bloco, com um deslocamento de radius, deixando espaço para a borda adicional esquerda à frente.
tile[threadIdx.x + RADIUS] = in[gid];Carregando as bordas adicionais
As primeiras threads realizam uma tarefa dupla, buscando também as células das bordas adicionais esquerda e direita antes que o bloco seja sincronizado.
Depois, sincronizar e aplicar o estêncil
Depois de __syncthreads, cada thread lê seus vizinhos inteiramente do bloco, sem tocar novamente na memória global durante essa etapa.
Multiplicador de reutilização
Agora, cada valor interno atende a 2r + 1 saídas a partir de um único carregamento da memória compartilhada. Esse é exatamente o tráfego redundante que o processamento por blocos elimina.
Verificação rápida
Por que um estêncil processado em blocos precisa de células de borda adicional?
Recapitulação
Estênceis percorrem janelas sobrepostas, portanto uma borda adicional de r células extras por lado permite que um bloco atenda a cada saída com um único carregamento. ✅
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Estêncil e janelas deslizantes” é grátis?
Sim — o texto completo de “Estêncil e janelas deslizantes” é 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 “Estêncil e janelas deslizantes”?
Divida as vizinhanças em blocos com células de halo. 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 3 de 4.
Quanto tempo leva a aula “Estêncil e janelas deslizantes”?
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 problema da reutilização de dados
- O padrão carregar-sincronizar-calcular
- Estêncil e janelas deslizantes
- Trate blocos das bordas