Espaços de endereçamento separados
Por que um ponteiro do hospedeiro é inválido no dispositivo.
Espaços de endereçamento separados é 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.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Two Separate Memories
The CPU and GPU each own their own RAM. They do not share one address space, and that single fact shapes all of CUDA. 🧠
What an Address Means
A pointer is just a number naming a slot in memory. That slot only makes sense in the address space where it was created.
Host Pointers Are Local
A pointer from malloc names host memory. The GPU has no such slot, so handing it to a kernel points nowhere valid.
int* h = (int*)malloc(n * sizeof(int));Device Pointers Are Local Too
A pointer from cudaMalloc names device memory. The CPU cannot read it directly; dereferencing it on the host crashes.
int* d;
cudaMalloc(&d, n * sizeof(int));The Classic Mistake
Passing a host pointer into a kernel compiles fine but fails at runtime. The number is valid; the memory it names is not on the GPU.
Why It Compiles Anyway
Both pointers look like the same type to C++, so the compiler stays silent. The mismatch only bites when the GPU touches the address.
Bridging with cudaMemcpy
To move data between spaces you must copy it explicitly with cudaMemcpy. There is no automatic sharing across the divide.
cudaMemcpy(d, h, bytes, cudaMemcpyHostToDevice);A Naming Convention Helps
Many programmers prefix host pointers with h_ and device pointers with d_. It is a habit that prevents painful mix-ups.
float *h_a, *d_a;Kernels See Device Space
Inside a kernel every pointer you dereference must live in device memory. That is the only space the GPU threads can reach.
Unified Memory Hint
Later you will meet unified memory, one pointer valid on both sides. For now, keep host and device pointers strictly apart.
The Mental Model
Picture two rooms with no shared shelves. To use data in the other room you must carry a copy over, never just point across.
Quick Check
Let us confirm you understand separate address spaces.
Recap
You learned host and device live in separate address spaces, pointers are not interchangeable, and cudaMemcpy is how data crosses the gap. ✅
Perguntas Frequentes
A aula “Espaços de endereçamento separados” é grátis?
Sim — o texto completo de “Espaços de endereçamento separados” é 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 “Espaços de endereçamento separados”?
Por que um ponteiro do hospedeiro é inválido no dispositivo. 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 “Espaços de endereçamento separados”?
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 qualificador de função __global__
- Funções __device__ e __host__
- Espaços de endereçamento separados
- O ciclo de vida de um programa CUDA