复制方向枚举
掌握 cudaMemcpyKind 并正确使用它
复制方向枚举 是 CoddyKit 上的免费 CUDA Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CUDA Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CUDA Academy 课程共包含 4 节课。
第四个参数
每个 cudaMemcpy 都以一个 cudaMemcpyKind 类型的方向标志结束。它会告诉运行时字节应向哪个方向传输。🧭
cudaMemcpy(dst, src, bytes, kind);主机到设备
请使用 cudaMemcpyHostToDevice,在内核运行前将输入数据从 CPU RAM 上传到 GPU 内存。
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);设备到主机
请使用 cudaMemcpyDeviceToHost,在计算完成后将结果从 GPU 内存下载回 CPU RAM。
cudaMemcpy(h_c, d_c, bytes, cudaMemcpyDeviceToHost);设备到设备
如果要在两个 GPU 缓冲区之间复制而不接触 CPU,请使用 cudaMemcpyDeviceToDevice。
cudaMemcpy(d_b, d_a, bytes, cudaMemcpyDeviceToDevice);主机到主机
甚至还有 cudaMemcpyHostToHost,用于普通的 CPU 复制。由于标准 memcpy 已经可以完成这项工作,您很少需要它。
让驱动程序决定
使用 cudaMemcpyDefault 时,运行时会根据指针推断方向。要安全地工作,它需要统一寻址。
cudaMemcpy(dst, src, bytes, cudaMemcpyDefault);方向必须匹配
标志必须与实际指针相符。将设备指针与 HostToHost 类型一起使用会触发错误或导致崩溃。
常见的混淆
交换 HostToDevice 和 DeviceToHost 是常见的错误。编译器不会发出提示,因此请仔细阅读每个调用。🐛
像读句子一样理解
枚举名称说明了数据流:HostToDevice 表示从主机到设备。请确保它与源和目标相匹配。
与指针配对
先确认哪个缓冲区是源、哪个是目标,然后选择准确描述该路径的类型。
不确定时,明确指定
优先使用命名的方向,而不是 cudaMemcpyDefault。明确指定可以让意图一目了然,并更早发现错误。
快速检查
您要将一个设备缓冲区复制到另一个设备缓冲区,整个过程完全不接触 CPU。应使用哪种类型?
回顾
您了解了所有 cudaMemcpyKind:HostToDevice、DeviceToHost、DeviceToDevice、HostToHost 和 Default。每次都要让标志与指针相匹配。🎉
用 AI 导师学习 C++ — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「复制方向枚举」课时是免费的吗?
是的 — 「复制方向枚举」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CUDA Academy 课程的其余内容,请升级到 CoddyKit PRO。 CUDA Academy 课程共包含 4 节课。
「复制方向枚举」这节课中我会学到什么?
掌握 cudaMemcpyKind 并正确使用它 你通过在浏览器中直接运行的动手代码来练习 CUDA Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CUDA Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CUDA Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「复制方向枚举」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CUDA Academy 课中编写并运行代码吗?
能。每节 CUDA Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。