Lección 7: Memoria host/device: cudaMalloc, cudaMemcpy
La CPU (host) y la GPU (device) tienen memorias separadas. Un puntero de malloc vive en la memoria del host, y un puntero de cudaMalloc vive en la memoria del device — y no debes acceder a la memoria del device directamente desde código host. Por eso el flujo completo de un cálculo en la GPU es siem
El host y el device son como dos oficinas en ciudades distintas. No puedes leer un documento que está en la otra oficina a través de la ventana — tienes que enviarlo por correo (cudaMemcpy), dejar que trabajen en él, y que te envíen el resultado de vuelta por correo. cudaMalloc es alquilar un escritorio vacío en la otra oficina, y cudaFree es vaciarlo al final.
- cudaMalloc
- Reserva memoria en el device y devuelve un puntero de device. Como malloc, pero la memoria vive en la GPU.
- cudaMemcpy
- Copia bytes entre el host y el device. La dirección se define con cudaMemcpyHostToDevice o cudaMemcpyDeviceToHost.
- H2D y D2H
- Host-to-Device sube la entrada a la GPU; Device-to-Host trae los resultados de vuelta a la CPU. Dos direcciones opuestas.
- cudaFree
- Libera memoria del device reservada con cudaMalloc. Es el equivalente de free para la memoria host.