Leçon 7 : Mémoire host/device : cudaMalloc, cudaMemcpy
Le CPU (host) et le GPU (device) ont des mémoires séparées. Un pointeur de malloc vit dans la mémoire du host, et un pointeur de cudaMalloc vit dans la mémoire du device — et tu ne dois pas accéder à la mémoire du device directement depuis du code host. C'est pourquoi le flux complet d'un calcul sur
Le host et le device sont comme deux bureaux dans des villes différentes. Tu ne peux pas lire un document qui est dans l'autre bureau à travers la fenêtre — tu dois l'envoyer par courrier (cudaMemcpy), les laisser travailler dessus, et qu'ils t'envoient le résultat de retour par courrier. cudaMalloc, c'est louer un bureau vide dans l'autre bureau, et cudaFree, c'est le vider à la fin.
- cudaMalloc
- Réserve de la mémoire sur le device et renvoie un pointeur de device. Comme malloc, mais la mémoire vit sur le GPU.
- cudaMemcpy
- Copie des octets entre le host et le device. La direction se définit avec cudaMemcpyHostToDevice ou cudaMemcpyDeviceToHost.
- H2D et D2H
- Host-to-Device envoie l'entrée vers le GPU ; Device-to-Host ramène les résultats vers le CPU. Deux directions opposées.
- cudaFree
- Libère la mémoire du device réservée avec cudaMalloc. C'est l'équivalent de free pour la mémoire host.