CUDA Academy · 课时

复制方向枚举

掌握 cudaMemcpyKind 并正确使用它

第 3 / 4 课13 个步骤

复制方向枚举 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 主机到设备的数据传输
  2. 设备到主机的数据传输
  3. 复制方向枚举
  4. PCIe 传输瓶颈
← 返回 CUDA Academy