O enumerador da direção de cópia
cudaMemcpyKind e como usá-lo corretamente.
O enumerador da direção de cópia é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 3 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.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
The Fourth Argument
Every cudaMemcpy ends with a direction flag of type cudaMemcpyKind. It tells the runtime which way the bytes travel. 🧭
cudaMemcpy(dst, src, bytes, kind);Host to Device
Use cudaMemcpyHostToDevice to upload inputs from CPU RAM into GPU memory before a kernel runs.
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);Device to Host
Use cudaMemcpyDeviceToHost to download results from GPU memory back into CPU RAM after computing.
cudaMemcpy(h_c, d_c, bytes, cudaMemcpyDeviceToHost);Device to Device
To copy between two GPU buffers without touching the CPU, reach for cudaMemcpyDeviceToDevice.
cudaMemcpy(d_b, d_a, bytes, cudaMemcpyDeviceToDevice);Host to Host
There is even cudaMemcpyHostToHost, a plain CPU copy. You rarely need it since standard memcpy already does the job.
Let the Driver Decide
With cudaMemcpyDefault, the runtime infers direction from the pointers. It needs unified addressing to work safely.
cudaMemcpy(dst, src, bytes, cudaMemcpyDefault);The Direction Must Match
The flag must agree with your real pointers. A device pointer with a HostToHost kind triggers an error or a crash.
A Common Mix-Up
Swapping HostToDevice and DeviceToHost is a frequent bug. The compiler stays silent, so read each call carefully. 🐛
Read It Like a Sentence
The enum name spells the data flow: HostToDevice means from host to device. Match it to your source and destination.
Pair It With the Pointers
Look at which buffer is the source and which is the destination, then pick the kind that names that exact path.
When in Doubt, Be Explicit
Prefer the named direction over cudaMemcpyDefault. Being explicit makes your intent obvious and catches mistakes sooner.
Quick Check
You are copying one device buffer into another device buffer, never touching the CPU. Which kind fits?
Recap
You met every cudaMemcpyKind: HostToDevice, DeviceToHost, DeviceToDevice, HostToHost, and Default. Match the flag to your pointers every time. 🎉
Perguntas Frequentes
A aula “O enumerador da direção de cópia” é grátis?
Sim — o texto completo de “O enumerador da direção de cópia” é 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 enumerador da direção de cópia”?
cudaMemcpyKind e como usá-lo corretamente. 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 3 de 4.
Quanto tempo leva a aula “O enumerador da direção de cópia”?
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
- Transferências do hospedeiro para o dispositivo
- Transferências do dispositivo para o hospedeiro
- O enumerador da direção de cópia
- O gargalo de transferência do PCIe