O ciclo de vida de um programa CUDA
Reserve, copie, execute, copie de volta e libere.
O ciclo de vida de um programa CUDA é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CUDA Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CUDA Academy inclui 4 aulas no total.
Um Ritmo Repetitivo
Quase todo programa CUDA segue a mesma sequência de cinco etapas. Aprenda o ritmo uma vez e você poderá ler qualquer código de GPU. 🕺
Etapa 1: Alocar
Primeiro, reserve memória do dispositivo para suas entradas e saídas com cudaMalloc, pois a GPU não pode usar diretamente os buffers do hospedeiro.
cudaMalloc(&d_a, bytes);
cudaMalloc(&d_b, bytes);Etapa 2: Copiar para o Dispositivo
Em seguida, envie seus dados de entrada do hospedeiro para o dispositivo com cudaMemcpy. Agora a GPU tem sua própria cópia para processar.
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);Etapa 3: Lançar
Agora lance seu kernel em muitas threads. É aqui que o trabalho paralelo realmente acontece no dispositivo. 🚀
myKernel<<<blocks, threads>>>(d_a, d_b, n);Etapa 4: Copiar de Volta
Quando o processamento terminar, baixe os resultados do dispositivo para o hospedeiro, para que a CPU possa lê-los e usá-los.
cudaMemcpy(h_b, d_b, bytes, cudaMemcpyDeviceToHost);Etapa 5: Liberar
Por fim, libere todos os buffers do dispositivo com cudaFree. Ignorar essa etapa causa um vazamento de memória da GPU que poderia ser usada por outro trabalho.
cudaFree(d_a);
cudaFree(d_b);Não Se Esqueça de Sincronizar
Como os lançamentos são assíncronos, chame cudaDeviceSynchronize antes de ler os resultados, para garantir que a GPU realmente terminou.
cudaDeviceSynchronize();As Cópias Consomem Tempo
As etapas de cópia atravessam o barramento PCIe, que é lento, portanto a transferência de dados costuma ser o verdadeiro gargalo, não o kernel em si.
Reutilize os Buffers
Alocar uma vez e reutilizar os buffers em vários lançamentos é melhor do que alocar memória nova a cada iteração de um laço.
Simetria do Padrão
Observe a simetria: cada cudaMalloc corresponde a um cudaFree, e toda cópia para o dispositivo acaba correspondendo a uma cópia de volta.
O Ciclo de Vida em Uma Frase
Diga como um mantra: alocar, copiar, lançar, copiar de volta, liberar. Essa única linha é o esqueleto de quase todo programa com kernels.
Verificação Rápida
Vamos verificar o ciclo de vida padrão de um programa CUDA.
Recapitulação
Você aprendeu o ciclo de vida do CUDA em cinco etapas: alocar, copiar para o dispositivo, lançar, copiar de volta, liberar, além de sincronizar antes de ler os resultados. 🎉
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “O ciclo de vida de um programa CUDA” é grátis?
Sim — o texto completo de “O ciclo de vida de um programa CUDA” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CUDA Academy, atualize para CoddyKit PRO. O curso de CUDA Academy inclui 4 aulas no total.
O que vou aprender em “O ciclo de vida de um programa CUDA”?
Reserve, copie, execute, copie de volta e libere. Você pratica CUDA Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar CUDA Academy?
Nenhuma experiência prévia é necessária. CUDA Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “O ciclo de vida de um programa CUDA”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de CUDA Academy?
Sim. Cada aula de CUDA Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O qualificador de função __global__
- Funções __device__ e __host__
- Espaços de endereçamento separados
- O ciclo de vida de um programa CUDA