O problema da reutilização de dados
Por que núcleos ingênuos relêem a memória global.
O problema da reutilização de dados é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 1 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.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
The Hidden Cost
A kernel can be correct yet slow because it keeps fetching the same data from slow global memory over and over. 🐢
Memory Is the Bottleneck
On the GPU, arithmetic is cheap but reaching global memory is expensive. Many kernels wait on memory far more than they compute.
Data Reuse Defined
Data reuse means one value loaded from global memory is used by many computations instead of being read again each time.
A Naive Stencil
Picture blurring an image. Each output pixel averages its neighbors, so every input pixel gets read by several different threads.
out[i] = (in[i-1] + in[i] + in[i+1]) / 3.0f;Counting the Reads
In that blur, the value in[i] is read by threads i-1, i, and i+1. The same byte travels across the slow PCIe-fed bus three times.
Redundancy Adds Up
With a wider window or a 2D grid, each element may be re-read dozens of times. This redundant traffic dominates the runtime.
Bandwidth Is Finite
Global memory has a fixed peak bandwidth. Reading the same data repeatedly wastes that budget on bytes you already had.
Compute Sits Idle
While warps stall waiting on repeated global loads, the math units sit idle. You paid for cores you are barely using. 😴
Arithmetic Intensity
Arithmetic intensity is the ratio of math operations to bytes moved. Low intensity means memory, not compute, limits you.
The Goal: Read Once
The fix is to load each needed value once into fast on-chip storage, then let many threads reuse it from there.
Enter Shared Memory
That fast on-chip storage is shared memory. Staging data there is the foundation of every tiling optimization ahead.
Quick Check
Why is a naive stencil kernel often slow?
Recap
Naive kernels re-read shared data from global memory, wasting bandwidth and stalling compute. Tiling exists to load once and reuse. ✅
Perguntas Frequentes
A aula “O problema da reutilização de dados” é grátis?
Sim — o texto completo de “O problema da reutilização de dados” é 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 “O problema da reutilização de dados”?
Por que núcleos ingênuos relêem a memória global. 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 1 de 4.
Quanto tempo leva a aula “O problema da reutilização de dados”?
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