CUDA Academy · 课时

PCIe 传输瓶颈

了解复制操作为何常常是最慢的部分

第 4 / 4 课13 个步骤

PCIe 传输瓶颈 是 CoddyKit 上的免费 CUDA Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CUDA Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CUDA Academy 课程共包含 4 节课。

连接两个世界的桥梁

CPU 和 GPU 位于通过 PCIe 总线连接的不同电路板上。每次 cudaMemcpy 都必须挤过这座狭窄的桥梁。🌉

速度不匹配

GPU 内存带宽可以达到每秒数 TB,但 PCIe 每秒只能传输数十 GB。总线才是速度较慢的环节。

复制可能成为主要耗时

对于执行很快的内核,传输时间可能远超计算时间。您的 GPU 会因等待数据到达而处于空闲状态。

少复制,多计算

第一个解决办法很简单:只移动所需的数据,并在数据位于 GPU 上后,让每个字节完成更多工作。

让数据驻留

避免来回传输数组。让数组在设备上连续供多个内核使用,而不是每次都重新上传。

批量处理小规模复制

许多次微小传输都要分别承担固定开销。将它们批量处理为一次大型复制会高效得多。📦

使用流进行重叠

您可以使用流让复制与计算重叠,从而隐藏传输成本,让 GPU 在数据传输的同时继续工作。

固定内存有帮助

固定的主机内存可以实现更快的 DMA 和异步复制,这是让传输真正与内核重叠的关键。

测量,不要猜测

请分别测量复制和内核的耗时。像 Nsight 这样的性能分析器可以准确显示总线在哪些地方拖慢了程序。

屋顶线思维

如果程序受传输限制,更快的内核也不会有所帮助。请先减少数据移动,再优化计算。

值得这趟传输吗?

对于很小的问题,复制成本可能超过加速带来的收益。只有当计算时间明显超过传输时间时,使用 GPU 才能获得收益。

快速检查

性能分析显示,您的程序大部分时间都花在通过 PCIe 移动数据上。什么办法最有帮助?

回顾

您了解了 PCIe 为什么是速度较慢的环节:减少复制、让数据驻留、批量传输、使用流进行重叠,并始终进行测量。🎉

免费开始

用 AI 导师学习 C++ — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「PCIe 传输瓶颈」课时是免费的吗?

是的 — 「PCIe 传输瓶颈」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CUDA Academy 课程的其余内容,请升级到 CoddyKit PRO。 CUDA Academy 课程共包含 4 节课。

「PCIe 传输瓶颈」这节课中我会学到什么?

了解复制操作为何常常是最慢的部分 你通过在浏览器中直接运行的动手代码来练习 CUDA Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 CUDA Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 CUDA Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「PCIe 传输瓶颈」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 CUDA Academy 课中编写并运行代码吗?

能。每节 CUDA Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

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