Lección 33: Transferencias asíncronas y memoria pinned
Para que una copia se superponga con el cómputo, no basta con usar cudaMemcpyAsync y varios streams — la memoria del lado host también debe ser pinned. La memoria normal asignada con malloc es pageable: el sistema operativo puede moverla en la memoria física, así que la GPU no puede copiar directame
La memoria pageable es un libro de biblioteca que puede moverse de estante en estante en cualquier momento — un mensajero no puede tomarlo directamente. La memoria pinned es un libro colocado en un atril fijo junto a la puerta, y el mensajero lo agarra sin esperar.
- memoria pinned (page-locked)
- Memoria host fijada en su lugar físico. El DMA la lee directamente, por lo que habilita una transferencia verdaderamente asíncrona.
- memoria pageable
- Memoria host normal (malloc) que el sistema operativo puede mover. Una copia desde ella pasa por una región pinned temporal y bloquea.
- cudaMallocHost
- Asigna memoria host de tipo pinned. Se libera con cudaFreeHost. Una alternativa es cudaHostAlloc.
- DMA
- Un motor de copia dedicado que mueve datos entre host y device sin ocupar los SMs. Necesita una dirección host estable (pinned).