【问题标题】:Can GPU communicate with Southbridge independently?GPU可以独立与南桥通信吗?
【发布时间】:2014-01-08 19:42:58
【问题描述】:

在 CUDA 代码中,您可以通过零复制访问主机端内存。根据维基百科的下图,访问请求通过北桥并在不中断 CPU 的情况下完成。

  1. GPU(至少在理论上)是否可以独立于 CPU 访问 I/O 等南桥组件?据我在实践中所知,在 CUDA 编码期间(目前)是不可能的。
  2. 基于this Wikipedia 链接,2014 代名为 Maxwell 的 CUDA 设备内部将配备 ARM CPU。如果上述问题的答案是肯定的,那么这个 ARM CPU 可以控制或通信 I/O 多少?

【问题讨论】:

  • 我想这在很大程度上取决于 I/O 端口和/或 MMIO 范围是否可以完全独立于 CPU。如果可以,并且 CUDA 不限制您可以访问的地址,那么您可能会有机会。 (不过,我不了解 CUDA,所以这一切都只是在吐槽。)
  • 第一个问题的简短回答是否定的。对于第二个问题,NVIDIA 尚未公开宣布 Maxwell 架构的详细信息,因此如果您要求提供非公开信息,那么这不是一个合适的 SO 问题。此外,由于第一个问题的答案是否定的(请参阅我对罗杰答案的评论),并且您将第二个问题的前提是“如果上述问题的答案是肯定的......”,那么您的第二个问题似乎没有实际意义。
  • Nvidia 尚未包含此功能(到目前为止)的答案很明确。我的问题是即使在理论上也不可能?与南桥的所有通信都必须仅由 CPU 发起吗?此外,当 GPU 可以直接访问主机 RAM 而不中断 CPU 时,为什么我们不能通过内存映射 IO 使 GPU 与 IO(例如鼠标)通信? (对不起,我的问题可能很幼稚。)

标签: cuda hardware gpu gpgpu nvidia


【解决方案1】:

检查GPUDirectTechnical.

用于 GPUDirect 的 RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项功能,它为 GPU 和使用 PCI Express 标准功能的对等设备之间的通信提供直接路径。这些设备必须共享相同的上游根联合体。必须对设备驱动程序进行一些简单的更改,才能在各种硬件设备上启用此功能。本文档介绍了该技术并描述了启用 RDMA for GPUDirect 连接到 Linux 上的 NVIDIA GPU 所需的步骤。

【讨论】:

  • GPUDirect RDMA 传输完全由主机代码触发,而不是设备代码。 CUDA 设备没有直接的方法来触发到另一个设备的传输。 Peer-to-Peer 是个例外,它只能在 2 个 GPU 之间工作(在同一个根复合体上)。在当前的 CUDA 架构中,如果它不是另一个 CUDA GPU,则无法从 CUDA 代码访问另一个设备。
  • 我没有将问题解释为要求从设备代码触发传输。也许这就是 OP 所追求的,但从内核触发 RDMA 传输到非 GPU 设备似乎没有意义。
  • OP 说“独立于 CPU”。由于需要 CPU 来触发传输,因此我不认为这可以被视为“独立于 CPU”。这就是我发表评论的原因。问题中引用的零拷贝(和点对点)符合“独立”或“不中断 CPU”的描述,因为它们不需要触发来启动传输。
  • 谢谢罗杰。但你的回答并没有回答我的问题。
  • @RobertCrovella,你会添加一个答案吗?那我就删掉这个吧。
猜你喜欢
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多