Un puntero para ambos lados
Descubra cómo funciona cudaMallocManaged.
Un puntero para ambos lados es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CUDA Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CUDA Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
The Two-Pointer Headache
So far you juggled two pointers: one for the host, one for the device. Unified Memory replaces that pain with a single pointer both sides can use. 🙂
Meet cudaMallocManaged
You allocate managed memory with cudaMallocManaged. It hands back one address that works in your CPU code and inside your kernels alike.
float *data;
cudaMallocManaged(&data, n * sizeof(float));No More cudaMemcpy
The big win: you usually skip the manual copies. With managed memory the runtime moves data for you, so cudaMemcpy often disappears from your code.
Write on the Host
You can fill the buffer with ordinary CPU code right after allocating. The same pointer you got is a normal address your loops can touch.
for (int i = 0; i < n; i++)
data[i] = i;Read on the Device
Pass that exact pointer to your kernel and the GPU threads dereference it directly. One address serves both worlds with no translation step.
kernel<<<blocks, threads>>>(data, n);Sync Before You Read Back
After a kernel writes managed data, call cudaDeviceSynchronize before the CPU reads it. That guarantees the GPU finished and results are visible.
kernel<<<b, t>>>(data, n);
cudaDeviceSynchronize();Free It Like Any Buffer
Managed memory is still device memory, so you release it with cudaFree. There is no special managed-free call to remember.
cudaFree(data);Less Boilerplate, Fewer Bugs
Because you delete the alloc-copy-launch-copy-free dance, your programs shrink. Fewer copies means fewer chances to mix up directions or sizes.
Great for Prototyping
Unified Memory is perfect when you want a kernel running fast. You prototype quickly, then optimize transfers later only where they actually matter.
It Is Not Free Magic
The data still has to travel across PCIe under the hood. Convenience is real, but performance can lag hand-tuned copies until you add hints later.
When to Reach for It
Choose managed memory for simpler code, deep pointer structures, or oversubscribing GPU memory. It shines when clarity matters more than raw peak speed.
Quick Check
Let us confirm how managed allocation differs from the classic flow.
Recap: One Pointer, Both Sides
You learned that cudaMallocManaged hands you one pointer for host and device, dropping most copies. Sync before reading, free with cudaFree. Nice work! 🎉
Preguntas frecuentes
¿La lección «Un puntero para ambos lados» es gratis?
Sí — el texto completo de «Un puntero para ambos lados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CUDA Academy, actualiza a CoddyKit PRO. El curso de CUDA Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Un puntero para ambos lados»?
Descubra cómo funciona cudaMallocManaged. Practicas CUDA Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CUDA Academy?
No se requiere experiencia previa. CUDA Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Un puntero para ambos lados»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CUDA Academy?
Sí. Cada lección de CUDA Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Un puntero para ambos lados
- Migración de páginas bajo demanda
- Prefetching con cudaMemPrefetchAsync
- Sugerencias mediante cudaMemAdvise