cudaDeviceSynchronize explicado
Por que a CPU precisa esperar pela GPU.
cudaDeviceSynchronize explicado é 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.
A CPU não espera
Depois de um lançamento, a CPU continua avançando enquanto a GPU ainda trabalha. Para pausar e esperar, chame cudaDeviceSynchronize. ⏳
myKernel<<<g, b>>>(p);
cudaDeviceSynchronize();O que sincronizar significa
cudaDeviceSynchronize bloqueia o hospedeiro até que toda tarefa da GPU na fila termine. Só então a próxima linha da CPU é executada.
Por que você precisa disso
Sem uma sincronização, você pode ler resultados que a GPU ainda não escreveu. A sincronização garante que o kernel realmente esteja concluído.
Esvaziando a saída de printf
Ela também esvazia o printf do dispositivo. Se o kernel imprime, mas nada aparece, geralmente a causa é a falta de sincronização.
hi<<<1, 4>>>();
cudaDeviceSynchronize(); // now you see itEle retorna um código de erro
A chamada retorna um cudaError_t. Uma falha nesse ponto geralmente revela um erro ocorrido dentro do kernel.
cudaError_t e = cudaDeviceSynchronize();Detecte falhas ocultas do kernel
Os kernels falham silenciosamente, portanto verificar o código de erro da sincronização é como descobrir um acesso fora dos limites ou um lançamento inválido.
if (e != cudaSuccess) printf("kernel failed\n");cudaMemcpy também sincroniza
Um cudaMemcpy simples de volta para o hospedeiro também espera pela GPU. Nesse caso comum, talvez não seja necessária uma sincronização separada.
cudaMemcpy(host, dev, n, cudaMemcpyDeviceToHost);Não sincronize em excesso
Chamar a sincronização depois de cada etapa elimina a sobreposição e deixa a execução mais lenta. Sincronize apenas quando realmente precisar ler resultados ou medir o tempo.
Sincronizando para medir o tempo
Para medir um kernel de forma correta, sincronize antes e depois. Caso contrário, o cronômetro medirá apenas a rapidez com que a CPU colocou o trabalho na fila.
cudaDeviceSynchronize();
// start timer ... kernel ... sync ... stopA sincronização de um fluxo é mais restrita
Para ter um controle mais preciso, cudaStreamSynchronize espera por um único fluxo em vez de esperar pelo dispositivo inteiro. É ótimo quando há sobreposição de trabalho.
cudaStreamSynchronize(stream);Um hábito inicial seguro
Enquanto estiver aprendendo, sincronize depois de cada lançamento e verifique o resultado. Quando o código estiver sólido, remova as sincronizações extras para ganhar velocidade.
Verificação rápida
Verifique seu entendimento sobre sincronização.
Recapitulação: sincronização
cudaDeviceSynchronize faz a CPU esperar pela GPU, esvazia o printf e revela falhas ocultas. Use-o com critério, não em todos os lugares. 🎉
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 “cudaDeviceSynchronize explicado” é grátis?
Sim — o texto completo de “cudaDeviceSynchronize explicado” é 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 “cudaDeviceSynchronize explicado”?
Por que a CPU precisa esperar pela GPU. 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 “cudaDeviceSynchronize explicado”?
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
- Anatomia de um núcleo
- A execução com colchetes triplos
- printf dentro de um núcleo
- cudaDeviceSynchronize explicado