Aula 33: Transferências Assíncronas e Pinned Memory
Para que uma cópia se sobreponha à computação, não basta usar cudaMemcpyAsync e vários streams — a memória do lado do host também precisa ser pinned. A memória comum alocada com malloc é pageable: o sistema operativo pode movê-la na memória física, então a GPU não consegue copiar diretamente dela vi
Memória pageable é um livro de biblioteca que pode ser movido de prateleira em prateleira a qualquer momento — um entregador não consegue pegá-lo diretamente. Memória pinned é um livro colocado num suporte fixo perto da porta, e o entregador o pega sem esperar.
- pinned memory (page-locked)
- Memória do host travada em seu lugar físico. O DMA lê diretamente dela, o que permite uma transferência verdadeiramente assíncrona.
- pageable memory
- Memória comum do host (malloc) que o sistema operativo pode mover. Uma cópia a partir dela passa por uma região pinned temporária e bloqueia.
- cudaMallocHost
- Aloca memória pinned no host. Libere-a com cudaFreeHost. Uma alternativa é cudaHostAlloc.
- DMA
- Um mecanismo de cópia dedicado que move dados entre host/device sem ocupar os SMs. Ele precisa de um endereço de host estável (pinned).