0Pricing
CUDA Academy · Leçon

Espaces d’adresses séparés

Pourquoi un pointeur hôte est invalide sur l’appareil.

Espaces d’adresses séparés est une leçon CUDA Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

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. ✅

Questions Fréquemment Posées

La leçon « Espaces d’adresses séparés » est-elle gratuite ?

Oui — le texte complet de « Espaces d’adresses séparé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 « Espaces d’adresses séparés » ?

Pourquoi un pointeur hôte est invalide sur l’appareil. 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 3 sur 4.

Combien de temps prend la leçon « Espaces d’adresses séparé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

  1. Le qualificatif de fonction __global__
  2. Fonctions __device__ et __host__
  3. Espaces d’adresses séparés
  4. La vie d’un programme CUDA
← Retour à CUDA Academy