Leçon 6 : Deux mémoires séparées — host, device et cudaMalloc
Jusqu'ici, tu as écrit un kernel, dimensionné une grid, et donné à chaque thread son indice. Mais il y a un détail qu'on n'a pas encore abordé : où vivent réellement les données ? Le CPU (le host) et le GPU (le device) ont deux mémoires physiques totalement séparées. Un pointeur de malloc vit dans l
Le host et le device sont comme deux bureaux dans des villes différentes. Chaque bureau a ses propres classeurs, et tu ne peux pas fouiller dans le classeur de l'autre bureau à distance, à travers la fenêtre. cudaMalloc, c'est louer un classeur vide dans l'autre bureau (le GPU), et cudaFree, c'est le vider à la fin. Dans la prochaine leçon, on apprendra à envoyer des documents par courrier entre les deux bureaux.
- mémoire host
- La mémoire du CPU. Un pointeur de malloc vit ici, et le code host peut y accéder directement.
- pointeur de device
- Un pointeur renvoyé par cudaMalloc qui pointe vers la mémoire du GPU. Il ne doit pas être lu directement en code host.
- cudaMalloc
- Réserve de la mémoire sur le device et renvoie un pointeur de device via son argument. Comme malloc, mais la mémoire vit sur le GPU.
- cudaFree
- Libère la mémoire du device réservée avec cudaMalloc. C'est l'équivalent de free pour la mémoire host.