Aula 7: Memória Host/Device: cudaMalloc, cudaMemcpy
A CPU (host) e a GPU (device) têm memórias separadas. Um ponteiro de malloc mora na memória host, e um ponteiro de cudaMalloc mora na memória device — e você não deve aceder a memória device diretamente pelo código host. Por isso o fluxo completo de um cálculo na GPU é sempre a mesma sequência de ci
O host e o device são como dois escritórios em cidades diferentes. Você não pode ler um documento que está no outro escritório pela janela — é preciso enviá-lo pelo correio (cudaMemcpy) para lá, deixá-los trabalhar nele, e mandar o resultado de volta pelo correio. cudaMalloc é alugar uma mesa vazia no outro escritório, e cudaFree é esvaziá-la no final.
- cudaMalloc
- Aloca memória no device e retorna um ponteiro device. Como malloc, mas a memória mora na GPU.
- cudaMemcpy
- Copia bytes entre host e device. A direção é definida por cudaMemcpyHostToDevice ou cudaMemcpyDeviceToHost.
- H2D e D2H
- Host-to-Device envia o input para a GPU; Device-to-Host traz os resultados de volta para a CPU. Duas direções opostas.
- cudaFree
- Libera memória device alocada por cudaMalloc. É o equivalente de free para memória host.