Un pointeur, deux côtés
Découvrez comment fonctionne cudaMallocManaged.
Un pointeur, deux côtés est une leçon CUDA Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CUDA Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CUDA Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
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! 🎉
Questions Fréquemment Posées
La leçon « Un pointeur, deux côtés » est-elle gratuite ?
Oui — le texte complet de « Un pointeur, deux côtés » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CUDA Academy, passe à CoddyKit PRO. Le cours CUDA Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Un pointeur, deux côtés » ?
Découvrez comment fonctionne cudaMallocManaged. Tu pratiques CUDA Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer CUDA Academy ?
Aucune expérience préalable n'est requise. CUDA Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Un pointeur, deux côtés » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon CUDA Academy ?
Oui. Chaque leçon CUDA Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Un pointeur, deux côtés
- Migration des pages à la demande
- Prélecture avec cudaMemPrefetchAsync
- Indications via cudaMemAdvise