Lección 6: Dos memorias separadas — host, device y cudaMalloc
Hasta ahora escribiste un kernel, dimensionaste un grid, y le diste a cada hilo su índice. Pero hay un detalle que todavía no tocamos: ¿dónde viven realmente los datos? La CPU (el host) y la GPU (el device) tienen dos memorias físicas completamente separadas. Un puntero de malloc vive en la memoria
El host y el device son como dos oficinas en ciudades distintas. Cada oficina tiene sus propios archivadores, y no puedes meter la mano en el archivador de la otra oficina desde lejos, a través de la ventana. cudaMalloc es alquilar un archivador vacío en la otra oficina (la GPU), y cudaFree es vaciarlo al final. En la próxima lección aprenderemos a enviar documentos por correo entre las dos oficinas.
- memoria host
- La memoria de la CPU. Un puntero de malloc vive aquí, y el código host puede acceder a él directamente.
- puntero de device
- Un puntero que devuelve cudaMalloc y que apunta a la memoria de la GPU. No debe leerse directamente en código host.
- cudaMalloc
- Reserva memoria en el device y devuelve un puntero de device a través de su argumento. Como malloc, pero la memoria vive en la GPU.
- cudaFree
- Libera memoria del device reservada con cudaMalloc. Es el equivalente de free para la memoria host.